完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
省略。。。。
cmdIndex=SBUF; if(cmdIndex==0x31) { ST=1; start1=0x00; 如何让此时SBUF清零,或者在我上位机不送数据时候,***uf直接等于0x00 while(1&ST) { start1=SBUF; if(start1!=0x00) { ST=0; } } } else if(cmdIndex==0x32) { ST=1; while(1&ST) { 595_w(start1); 595_w(start1); 595_w(start1); 595_r(); ST=0; } vs界面按下按键1时给595送数据,按下按键2时,595会控制led亮。因为需要的功能很多,所以用很多按键来实现这些功能。每按一个按键实现一个小功能。在界面textBox 输入的十六进制直接送到595里面,按键1按下时***uf==0x31.但是我的程序每次595的数据start1都跟按键按下时送的数据一样,请问有没有什么办法把SBUF清零呢。或者可以互不影响呢。 |
|
相关推荐
6个回答
|
|
|
|
|
|
|
|
SBUF,你这是51吧。用中断接收数据啊,又数据才进入,没有新数据不会进入
|
|
|
|
void UsartConfiguration()
{ SCON=0X50; //设置为工作方式1 TMOD|=0X20; //设置计数器工作方式2 PCON=0X80; //波特率加倍 TH1=0Xfd; //计数器初始值设置,注意波特率是19200的 TL1=0Xfd; ES=1; //打开接收中断 EA=1; //打开总中断 TR1=1; //打开计数器 } void Usart() interrupt 4 { if (RI) //接收到字节 { cmdIndex = SBUF; RI = 0; //清零接收中断标志位 SBUF = cmdIndex;//将接收到的数据放入到发送寄存器 cmdArrived = 1; } if (TI) //字节发送完 { TI = 0; //清零发送中断标志位 } } 我加了中断。我的意思是我第一次发送数据0x01的时候,程序进入while循环,这时候我重新给***uf输入数据,在while里面可以接收到吗? |
|
|
|
完美解决 ,十分感谢
|
|
|
|
数据发送和接收是分开的的,你发的数据你自己根本接收不到,SBUF里面是别人发给你的数据,你不能把她清零,你要的功能可以通过程序实现
|
|
|
|
只有小组成员才能发言,加入小组>>
3319 浏览 9 评论
2997 浏览 16 评论
3495 浏览 1 评论
9065 浏览 16 评论
4088 浏览 18 评论
1185浏览 3评论
611浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
601浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2337浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1898浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 21:02 , Processed in 1.678620 second(s), Total 59, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号