完善资料让更多小伙伴认识你,还能领取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)了,当然就不能执行后面的程序了。
|
|
|
|
|
|
是的,我已经知道原因了,谢谢啊 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【瑞萨RA6E2】瑞萨E2S软件安装过程,等待过程玩下97_e2 studio_ZGZZ
234 浏览 0 评论
514 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
826 浏览 0 评论
1366 浏览 2 评论
814 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16911 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 04:28 , Processed in 0.815411 second(s), Total 95, Slave 76 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2604