完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
第一个发送指令的程序如下:
#include void main() { unsigned char i; unsigned char send[]={9,3,5,4,6,7}; TMOD=0X20; TL1=0XF4; TH1=0XF4; TR1=1; SCON=0X40; for(i=0;i<6;i++) { SBUF=send[i]; while(ti==0); TI=0; } while(1); } 第二接收指令如下: #include code unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char buffer[]={0x00,0x00,0x00,0x00,0x00,0x00}; void disp(); void main() { unsigned char i; TMOD=0x20; TL1=0XF4; TH1=0XF4; TR1=1; SCON=0X40; for(i=0;i<6;i++) { REN=1; while(RI==0); buffer[i]=SBUF; RI=0; } for(;;) disp(); } void disp() { unsigned char w,i,j; w=0x01; for(i=0;i<6;i++) { P0=tab[buffer[i]]; P2=~w; for(j=0;j<100;j++); //P2=0Xff; /*proteus中的BUG,每显示一次就需要关闭数码一次(消除上次显示的干扰),否则会出现数码管显示不全的问题*/ w<<=1; } } 有时候数码管可以显示,有时候不能。 是不是因为没有查询另一台单片机是否工作? 比如发送的单片机,一启动,for循环的发送就开始了,而此时如果另一台单片机还没启动,是不是就接受不到? 如果发送的还没启动,接受的单片机启动了,是不是接受就完成了? 怎么让他们同步?比如说一台发送指令的单片机先启动,怎么知道另一台单片机是否已经准备好接受,如果没有准备好就等待启动,接受的先启动也这样?求教,谢谢。 |
|
相关推荐
2个回答
|
|
楼主分析应该是这样的,接收方可以使用串行中断来实现即可
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
686 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-通用文件I/O模型之close
745 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第十五章 按键中断实验
702 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第十一章 FPIOA管理器实验
949 浏览 0 评论
786 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11462 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-14 19:54 , Processed in 0.618678 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号