完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
谁能给我个能用的串口通信程序给我啊 顺便帮看一下我这个能用不 我是想返回一个八位的数据 但不管我发啥他都全部返回了
#include #include #define uchar unsigned char #define uint unsigned int #define mclk 8000000 #pragma interrupt_handler uart_rx:12 int a=1; uchar rdata,flag=0; void delay(uint ms) { uint i,j; for(i=0;i { for(j=0;j<1141;j++); } } void uart_init(uint baud) { UCSRB=0x00; UCSRA=0x00; //控制寄存器清零 UCSRC=(1< //选择UCSRC,异步模式,禁止 // 校验,1位停止位,8位数据位 baud=mclk/16/baud-1 ; //波特率最大为65K UBRRL=baud; UBRRH=baud>>8; //设置波特率 UCSRB=(1< //接收、发送使能,接收中断使能 SREG=BIT(7); //全局中断开放 DDRD|=0X02; //配置TX为输出(很重要) } void uart_sendB(uchar data) { while(!(UCSRA&(BIT(UDRE)))) ; UDR=data; while(!(UCSRA&(BIT(TXC)))); UCSRA|=BIT(TXC); } void uart_rx() { flag=1; UCSRB&=~BIT(RXCIE); rdata=UDR; UCSRB|=BIT(RXCIE); //a=0; } void main() { uart_init(19200); while(1) { { if(flag) { // uart_sendB(0x55); uart_sendB(rdata); while(1); flag=0; } } } } |
|
相关推荐
1 个讨论
|
|
还有 我怎么编一个中断处理程序 将接受到的 一组数据 放到一个数组里 然后校验数据是否符合 要是符合就赋给相应的 变量 这样对么
void uart_rx() { short leng; uint i,sum=0; UCSRB&=~BIT(RXCIE); temp[count++]=UDR; leng=temp[3]; if((temp[1]==0xff)&&(temp[2]==0xff)) { for(i=0;i sum=temp[i+3]+sum; } if(temp[leng]==~(sum%256)) { switch(temp[4]) { case 1: Red=temp[5]; Green=temp[6]; Blue=temp[7]; Brightnessnew=temp[8]; scene=COLOR; break; case 2 : Brightnessnew=temp[5]; scene=BRIGHTNESS; break; case 3 : MENU=temp[5]; if(MENU==0x01) scene=HAPPY; if(MENU==0x02) scene=EXCITE; if(MENU==0x03) scene=UPSET; break; case 4 : MENU=temp[5]; if(MENU==0x01) scene=READ; if(MENU==0x02) scene=SLEEP; if(MENU==0x03) scene=PARTY; if(MENU==0X04) scene=RAMANTIC; break; case 5 : Red=temp[5]; Green=temp[6]; Blue=temp[7]; TIME=temp[8]; scene=CLOCK; break; } temp[leng]=0; } temp[1]=0; temp[2]=0; flag=1; } else { flag=0; count=0; UCSRB|=BIT(RXCIE); } } |
|
|
|
|
|
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-10 19:23 , Processed in 0.575030 second(s), Total 60, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号