基于ATmega16单片机的USART串口通信测试程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/***************************************************************************** 编译环境:ICC AVR。
文件名:基于ATmega16单片机的USART串口通信测试程序
功能:利用ATmega16的USART,从TXD异步串出数据,将TXD与RXD短接,从RXD输入,通过PC口
送到一个LED数码管显示,实现了自发自收的过程?
作者:赵国朋
班级:鹏程001
时间:2013年04月5日
修改:无
备住:一.硬件接口电路描述
1.晶振:8MHz
2.MCU的PC口与共阴极数码管相接
3.TXD与RXD相接
TXD --- RXD
/*****************************************************************************/ #include
#include
#define uchar unsigned char //宏定义
#define uint unsigned int
#define ulong unsigned long
#define BAUD 9600 //波特率采用9600b/s
#define CRYSTAL 8000000 //系统时钟为8MHz
//计算和定义波特率设置参数
#define BAUD_SETTING (uint)((ulong)CRYSTAL/(16*(ulong)BAUD)-1)
#define BAUD_H (uchar)(BAUD_SETTING>>8)
#define BAUD_L (uchar)(BAUD_SETTING)
//USART控制和状态寄存器的标志位定义
#define FRAMING_ERROR (1< #define PARITY_ERROR (1< #define DATA_OVERRUN (1< #define DATA_REGISTER_EMPTY (1< #pragma interrupt_handler USART_Rx_Isr:12 //USART接收中断服务 #pragma data:data flash Duan_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};// 显示段码值0~F /************ MCU初始化函数**************/ /****************************************************************************** 函数名:MCU_Init() 功能:MCU初始化 参数:无 返回值:无 /****************************************************************************** / void MCU_Init() { PORTC=0X00; DDRC=0XFF; PORTD=0X03; DDRD=0X02; } /************ USART初始化函数**************/ /****************************************************************************** 函数名:USART_Init() 功能:USART初始化 参数:无 返回值:无 /****************************************************************************** / void USART_Init() { // DDRD=0X02; //PORTD=0X03; UCSRA=0X00; UCSRB=(1< //UCSRB=0X98; UCSRC=(1< //UCSRC=0X86 UBRRH=BAUD_H; UBRRL=BAUD_L; } /************ USART中断服务函数**************/ /****************************************************************************** 函数名:USART_Rx_Isr() 功能:USART中断服务,将欲显示的数码送到I/O寄存器 参数:无 返回值:无 /****************************************************************************** / void USART_Rx_Isr() { uchar status,data; //DDRC=0XFF; status=UCSRA; data=UDR; if((status&(FRAMING_ERROR|PARITY_ERROR|DATA_OVERRUN))==0) PORTC=Duan_table[data]; } /************ USART发送数据函数**************/ /****************************************************************************** 函数名:USART_Transmit() 功能:将要发送的数据送到USART缓冲区UDR中 参数:uchar data 返回值:无 /****************************************************************************** / void USART_Transmit(uchar data)