完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
void timer1intrrupt() interrupt 1
{ TR0=0; baozhanqi(); TH0 = 0xA9; TL0 = 0x9A; } void senddata(uchar dat) // send a data { ES = 0; SBUF = dat; while(!TI); TI = 0; ES =1; } /* serial interrupt */ void serial() interrupt 4 // serial interrupt { RI = 0; ES=0; TR1 = 0; TH1 = 0xD8; TL1 = 0xF0; serialdata[z] = SBUF; // Get z = z+1; ES=1; TR1 = 1; } /* Timer1 interrupt */ void timer1() interrupt 3 // timer1 interrupt { int i,n,s; bit flag; TR1 = 0; for(s=0;s if(serialdata { if(serialdata[s+1]==0x17) break; } } if(s+2 s=s+2; for(n=s;n tab1=serialdata[n]; senddata(tab1); } TR0=1; } } void baozhanqi() { uchar q,temp=3,temp1=200; baozhanqi_display(); q=num5+num6*2+24; while(1) { if(num7<13) { if(num7%2!=0) { while(temp1--) show_chinese(BZQ+(384-(11-num7)*8)); temp1=200; move_left_scan(BZQ, q); while(temp1--) show_chinese(BZQ+(384-(11-num7)*8)); } else { while(temp1--) show_chinese(BZQ+(384-(12-num7)*8)); temp1=200; move_left_scan(BZQ, q); while(temp1--) show_chinese(BZQ+(384-(12-num7)*8)); } } else { while(temp--) move_left_scan(BZQ, q); } IAP_CONTR=0x20; } } 就是串口发送数据后,用单片机外部RAM存储起来,同时设置一个标志位,同时置TR0=1,进入定时器0中断后就立即置TR0=0,接着就调用显示函数,这样是没问题,问题是我通过上位机再次发送数据时,不能立即显示,必须要等到上次发送的内容显示完后才有效,这是什么原因啊? 麻烦各位帮忙看一下,帮忙解决一下!谢谢!QQ:978520695 |
|
相关推荐
4个回答
|
|
|
|
|
|
|
|
|
我就是想串口接收到数据后,就立即显示接收到的数据,我的程序串口中断设置的是最高优先级,但根本就不起作用啊,请问一下还有别的方法能实现吗?
|
|
|
|
|
|
|
|
|
|
|
|
我是先把一次接收到的所有数据用一个数组存起来(每次接收的数据长度是不定的),(只是数组定义uchar xdata BZQ[800];)然后再去调用显示,显示完后有一条系统软件复位语句 IAP_CONTR=0x20;
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1986 浏览 0 评论
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
4787 浏览 0 评论
4266 浏览 9 评论
3855 浏览 16 评论
4429 浏览 1 评论
4255浏览 3评论
2413浏览 0评论
3431浏览 0评论
1194浏览 0评论
2883浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-12 05:19 , Processed in 1.343203 second(s), Total 50, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
6152