完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
通过串口调试助手向单片机发送11字节数据,帧头为16进制 05,00,00,
我的程序收不到数据是什么情况??求帮助 void Com_Service(void) interrupt 4 { uchar j; RI=0; rcv_dat[j]=SBUF; if(j==0&&rcv_dat[j]==0x05) {j=1;} else if(j==1&&rcv_dat[j]==0x00) {j=2;} else if(j==2&&rcv_dat[j]==0x00) {j=3; for(j=3;j<11;j++) {rcv_dat[j]=SBUF;} Receive_Bflag = 1; } else { j=0; } ES=0;//关中断,数据发送完成以后再开中断 } 本帖被以下淘专辑推荐:
|
|
相关推荐
14个回答
|
|
谢谢分享
|
|
|
|
中断程序里面把中断关了,在哪里开中断。
还有,单片机的中断是每接收到一个字节就会产生一次中断。你的程序本身很有问题。 这种程序网上应该有很多,看一看别人的中断服务程序怎么写的。 |
|
|
|
数据处理完以后 把中断打开的。 void Com_Service(void) interrupt 4 { if (RI) { rcv_dat[j]=SBUF; RI=0; j++; } Receive_Bflag = 1; }我用这种方式就可以收到11字节数据,但上边的方法就不行 |
|
|
|
是你中断服务程序中判断条件的问题
|
|
|
|
{:soso_e113:}
|
|
|
|
你看一下两段程序关于RI使用的区别就知道了。每接收一个字节都要把RI清零并等待RI置一后接受下个字节。你前面的程序直接就连续接受后面字节了。
|
|
|
|
|
|
|
|
{:10:}{:10:}{:10:}
|
|
|
|
表示不解,学习中!
|
|
|
|
if(j==0&&rcv_dat[j]==0x05)
{j=1;} else if(j==1&&rcv_dat[j]==0x00) {j=2;} else if(j==2&&rcv_dat[j]==0x00) 这几个判断条件是干嘛用的。 |
|
|
|
for循环那里传送多位数据好像有点问题
|
|
|
|
可以用C自带的标准函数库:stdio.h中 printf()函数;
|
|
|
|
中断程序中,十个字节数据收完后,标志位置1
|
|
|
|
现在我也遇到这样的一个问题,实在是没有什么方案可以完成这样的接收工作.查资料中.
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十五章 摄像头实验
787 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
755 浏览 0 评论
850 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
1534 浏览 0 评论
1239 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12063 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 19:46 , Processed in 0.851204 second(s), Total 100, Slave 84 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号