完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
从上位机发送多于两个字节,为什么返回上位机时只能接收一个?实在找不到错误点了,求解决,谢谢! #include unsigned char flag,a,i; unsigned char code table[]="I have "; void init() { TMOD=0X20; TH1=0XF3; TL1=0XF3; SCON=0X50; ES=1; EA=1; TR1=1; } void main() { init(); while(1) { if(flag==1) { ES=0; for(i=0;i<7;i++) { SBUF=table; while(!ti); TI=0; } SBUF=a; while(!TI); TI=0; ES=1; flag=0; } } } void sar() interrupt 4 { RI=0; a=SBUF; flag=1; } |
|
相关推荐
10个回答
|
|
啊,我程序写的是SBUF=table,这上面复制错了。 我flag是在发送完之后才置1的也不可以么?那如果想要实现不限制字符的接收,需要怎样修改啊?我才学习,不太会,谢谢啊 |
|
|
|
非常感谢,但是flag置1是在数据都发送完之后,按理说数据不都应该存在SBUF中了么?如果想要修改,应该怎么做啊?
|
|
|
|
非常感谢,但是flag置1是在数据都发送完之后,按理说数据不都应该存在SBUF中了么?如果想要修改,应该怎么做啊? |
|
|
|
SBUF=table;这是把首地址赋值给***uf,应该是SBUF=table{i}
|
|
|
|
1.SBUF=table;这个语句应该改为SBUF=table[i]; 这不是重点。
2.SBUF寄存器只有一个字节的储存空间 。这就是为什么你要把I have分7次送入SBUF。否则的话,你为什么不直接写SBUF=I have? |
|
|
|
是啊,我知道了,谢谢啊 |
|
|
|
嗯,我原程序是这样的,复制的时候不小心给复制错了 |
|
|
|
应该就是table[i]的问题,你是看郭天祥的吧,其他的都没错。因为如果单片机不能发送第一个字符,那么TI就不能被置1,那么程序就停在while(!TI)了,当然就不能执行后面的程序了。
|
|
|
|
是的,我已经知道原因了,谢谢啊 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
43 浏览 0 评论
1995 浏览 0 评论
【每周推荐】采用11代Intel CPU,基于youyeetoo X1开发板搭建少儿AI智能STEAM积木平台
1000 浏览 0 评论
3216 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
2858 浏览 5 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
6719 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-5-15 14:32 , Processed in 0.829508 second(s), Total 100, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号