电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

ATmega16单片机实现串口收发数据

ATmega16单片机实现串口收发数据_第1页
1/2
ATmega16单片机实现串口收发数据_第2页
2/2
1、编译环境:CodeVisionAVR 2、功能:实现以 5AH 开头的 6 个字节数据帧的接收及发送 3、接收及发送方式:中断接收,查询发送 4、校验方式:所有字节相加模除 256 等于 0 则接收正确,否则不予接收 程序如下所示: #include ”mega16。h" #define uchar unsigned char #define uint unsigned int #define BAUD 9600 #define F_CLK 4000000 #define MATCH_OK 1; #define MATCH_ERROR 0; #define UDRE 5 volatile uchar i=0; volatile uchar recc_flag=0; //命令字节接收标志(recieve command 简写成 recc) volatile uchar comm_flag=0; //命令帧接收完毕标志(command 简写成 comm) volatile uchar comm; //定义变量,用于传递 UDR0 中接收到的命令字 volatile uchar command[6]={0x00,0x00,0x00,0x00,0x00,0x00}; //定义长度为 6 的数组用于接收长度为 6 字节的命令帧,并将所有元素初始化为 0x00 /*延时*/ void delay(uint t) { while(t——); } /*****/ /*******帧头校验******/ uchar check_comm(void) { uchar i; uint result=0; for(i=0;i〈6;i++) { result+=command[i]; } if((result%256)==0) { return MATCH_OK; } else { return MATCH_ERROR; } } /*********************/ void uart_init(void) { UCSRA=0x00; UCSRB=0x98; //接收结束中断使能;数据接收使能;数据发送使能 UCSRC=0x06; //工作在异步模式;无校验;1 位停止位;字符长度为 8 位 UBRRH=(F_CLK/BAUD/16—1)/256; UBRRL=(F_CLK/BAUD/16-1)%256; //系统时钟为 4MHz,波特率为 9600bps } void init_device(void) { #asm(”cli") //关中断 PORTA=0x04; DDRA=0x04; PORTB=0xFE; DDRB=0xFF; PORTD=0xFF; DDRD=0x02; MCUCR=0x00; TIMSK=0x00; uart_init(); //串口初始化 #asm("sei”) //重开中断 }interrupt[USART_RXC] void usart_rec(void) { comm=UDR; recc_flag=1; } /*****USART0 口发送命令字节程序*****/ void usart0_transcomm(uchar x) { while(!(UCSRA&(1〈

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

ATmega16单片机实现串口收发数据

确认删除?
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群