基于ATmega16单片机的USART串口通信测试程序.doc_第1页
基于ATmega16单片机的USART串口通信测试程序.doc_第2页
基于ATmega16单片机的USART串口通信测试程序.doc_第3页
基于ATmega16单片机的USART串口通信测试程序.doc_第4页
基于ATmega16单片机的USART串口通信测试程序.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/* 编译环境: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_SETTING8)#define BAUD_L (uchar)(BAUD_SETTING)/USART控制和状态寄存器的标志位定义#define FRAMING_ERROR (1FE)#define PARITY_ERROR (1PE)#define DATA_OVERRUN (1DOR)#define DATA_REGISTER_EMPTY (1UDRE)#pragma interrupt_handler USART_Rx_Isr:12/USART接收中断服务#pragma data:dataflash Duan_table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/ 显示段码值0F /* 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=(1RXCIE)|(1RXEN)|(1TXEN);/使能RXC中断,接收允许,发送允许 /UCSRB=0X98; UCSRC=(1URSEL)|(1UCSZ1)|(1UCSZ0);/8位数据位,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_tabledata; /* USART发送数据函数 */ /* 函数名:USART_Transmit()功 能:将要发送的数据送到USART缓冲区UDR中参 数:uchar data返回值:无 /*/void USART_Transmit(uchar data) while(!(UCSRA&DATA_REGISTER_EMPTY); UDR=data; /* 延时函数 */ /* 函数名:Delay_Us()、Delay_Ms() 功 能:微秒级、毫秒级延时 参 数:Us - 欲延时的us数 Ms - 欲延时的ms数 返回值:无 /*/ void Delay_Us(uint Us) uint i; Us=Us*5/4; /5/4是在8MHz晶振下,通过软件仿真反复实验得到的数值 for( i=0;iUs;i+); void Delay_Ms(uint Ms) uint i,j; for( i=0;iMs;i+) for(j=0;j1141;j+);/1141是在8MHz晶振下,通过软件仿真反复实验得到的数值 /* 主函数 */ /* 函数名:main()功 能:参 数:无返回值:无 /*/void main() uchar i=0;/定义

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论