#include "myuart.h"
#include "avr/io.h"
#include
#define UDRE 5
#define RXEN 4
#define TXEN 3
#define UCSZ0 1
#define RXC 7
#define RXCIE 7
ISR(USART0_RX_vect)//接收中断
{
unsigned char dummy;
while ( UCSR0A & (1< {
dummy = UDR0;
}
USART_Transmit(dummy);
}
void USART_Transmit(unsigned char data)//发送字节
{
/* 等待发送缓冲器为空 */
while ( !( UCSR0A & (1< ;
/* 将数据放入缓冲器,发送数据 */
UDR0 = data;
}
void myuart_init(void)
{
//关总中断
cli();
//4MHZ晶振,设置波特率
UCSR0A &= 0x02; //不倍频
unsigned char baud;
baud = 25; //9600
UBRR0H = (unsigned char)(baud>>8);
UBRR0L = (unsigned char)baud;
// 接收器与发送器使能,接收中断允许
UCSR0B = (1< // 设置帧格式: 8 个数据位, 1个停止位
UCSR0C = (3< //关于中断
//开总中断
sei();
}
关键字:ATMEGA128 UART
引用地址:
ATMEGA128 UART的使用
推荐阅读最新更新时间:2024-03-16 15:46
UART、IrDA、SPI、I2C MSP430学习
SPI、IIC、UART区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Sla
[单片机]
STM8串口UART调试记录
本来UART的调试是非常简单的,但是在STM8上折腾了好几天,在此记录一下,希望遇到相同问题的朋友能够不折腾,工作顺利,生活开心! 问题描述: 使用STM8的UART1,波特率9600,发送中断关闭,接收中断打开。接收单字节,没有问题。接收多字节,接收数据不完整,而且每次丢失的字节个数固定,比如发送17个字节,每次都只能接收到到15个字节。 折腾过程: 1.按照网友说的如下,结果还是出现丢失数据。 if(UART1_GetITStatus(UART1_IT_RXNE) != RESET) { temp = UART1_ReceiveData8(); } 2.添加处理过载时发生中断的处理,任然
[单片机]
MAX3140集成通用异步接收发送器(UART)和失效保护的
MAX3140是一个完整的通用异步接收发送器( UART )和一个真正的 失效保护 的RS-485/RS-422收发器在一个28引脚QSOP封装为空间,成本和功率受限的应用软件包相结合。在MAX3140节省了额外的板空间,以及微控制器(μC)的I /特色的SPI™/ QSPI的™/ MICROWIRE™兼容的串行接口O引脚。这是引脚对所有的RS-485/RS-422网络的配置编程。 在MAX3140包括一个单一的RS-485/RS-422驱动器和接收具有真正的失效保护电路,保证逻辑高接收器输出时,接收器输入开路或短路。此功能提供免疫缺陷,而无需复杂的终止。该MAX3140提供软件可选的半双工或全双工操作,数据速率,压摆率,
[电源管理]
Wavecom推出超小GSM/GPRS四频通信模块,面向M2M应用
Wavecom公司日前推出据称市场上最小的GSM/GPRS四频通信模块WISMO Quik Q2686,支持GSM/GPRS 850/900/1800/1900 MHz,只要嵌入Q2686,产品即可通行全球(包括韩国,日本除外)。此外,Wavecom亦同步推出其模块操作系统OS 6.60新版本。新版操作系统可整合更多平台,协助研发设计人员能快速导入,开发更多应用。 Quik Q26系列是Wavecom新推出的无线通信模块产品线,专为机器对机器(machine-to-machine)应用所设计。Q26系列搭配新版操作系统OS6.60,为将来EDGE与3G开发铺路。Q2686为Q26系列的第一个成员,大小为40×32.2×4
[工业控制]
MSP432P401R学习:UART
单片机的通讯必然逃不过UART,串口通讯对于对于单片机的调试运行也有着非常重要的作用,通过UART可以实现多设备的通讯,实现更复杂功能的实现。UART的基本原理也不过多的赘述了,网上很多的文章描述的肯定也比我讲的清楚,本文只介绍一下功能的实现并且在板子上进行验证。例程也可以在Resource Explorer中找到。 这个例程实现的功能是MSP432通过UART与PC进行通讯。MSP432将通过的串口收到的字符发回给PC,并在串口调试工具中显示出来。UART帧格式被配置为一个起始位,一个停止位,无校验位。P1.2与P1.3分别为接收端口与发送端口。使用的波特率为9600.。 首先我们先要配置串口结构体,如下面代码所示。
[单片机]
STM32单片机实现DMA+ADC+UART功能
突然想测试一下STM32单片机ADC采样速率问题,按照常规方法,可以通过ADC采样,然后将采样值打印出来。但是这种方法在处理和打印数据的时候会占用很多时间,导致处理数据的时间超过了ADC的采样时间。于是想到了ADC采样的数据用DMA功能存储,并通过串口打印。但是串口打印依然要占用单片机时间,那能不能串口数据的输出也采用 DMA功能呢?这样ADC采样的数据通过DMA直接存储,然后串口通过DMA功能直接输出采样到的数据。这样速度程序执行速度不就极大的提升了吗?说干就干,使用STM32F103C8T6单片机,标准库函数,keil5软件,编写一个测试程序。 首先实现ADC采样并通过DMA存储 #ifndef __ADC_H #de
[单片机]
ATmega128(EEPROM)
//atmega128的读写EEPROM示例程序,记录CPU启动的次数到EEPROM中 //在LED数码管上显示读出的数据,可用复位键刷新显示 //编译环境 AVR Studio 4.17/AVR GCC //系统时钟7.3728MHZ,设置熔丝位为外部高频石英晶体振荡,启动时间4.1ms //*********************************************************************** // 包含文件 //*********************************************************************** #include strin
[单片机]
基于ATmega128单片机的红外控制电机系统源码
单片机源程序如下: #include Main.h SIGNAL(SIG_OVERFLOW0) //中断每1秒发一个数 { TCNT0 = 200; TIMSK &= ~_BV(TOIE0); //TIMSK中TOIE0置0 if(++g_bCount 1) { g_bCount = 0; TaskInTimer(); } /*if(++g_aCount 44) //3s定时 { g_aCount = 0; Table_Locked(); }*/ TIM
[单片机]