完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在单片机串口采用中断方式发送数据时,发送完完数据之后ti才置1,而中断是TI置1之后才发生的,那为什么在中断函数中才有SBUF=a?不是数发送数据之后TI才置1吗?那为什么在中断函数中才发送数据呀?
下面附上源程序:(程序意思是:按下矩阵键盘,单片机发送一个对应数据(1-16)给上位机) #include #define uchar unsigned char uchar temp,num; void init(); void delay(uchar); void keyscanf(); void main() { init(); while(1) { keyscanf(); } } void init() { TMOD=0x20; TH1=0xf3; TL1=0xf3; TR1=1; SM0=0; SM1=1; REN=1; EA=1; ES=1; } void ser() interrupt 4 { SBUF=num; TI=0; ES=0; } void delay(uchar z) { uchar x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void keyscanf() { P1=0x7f; temp=P1; temp=temp&0x0f; if(temp!=0x0f) { delay(5); if(temp!=0x0f) { temp=P1; switch(temp) { case 0x77:num=0x01;ES=1;break; case 0x7b:num=0x02;ES=1;break; case 0x7d:num=0x03;ES=1;break; case 0x7e:num=0x04;ES=1;break; } while(temp!=0x0f) { temp=P1; temp=temp&0x0f; } } } P1=0xbf; temp=P1; temp=temp&0x0f; if(temp!=0x0f) { delay(5); if(temp!=0x0f) { temp=P1; switch(temp) { case 0xb7:num=0x05;ES=1;break; case 0xbb:num=0x06;ES=1;break; case 0xbd:num=0x07;ES=1;break; case 0xbe:num=0x08;ES=1;break; } while(temp!=0x0f) { temp=P1; temp=temp&0x0f; } } } P1=0xdf; temp=P1; temp=temp&0x0f; if(temp!=0x0f) { delay(5); if(temp!=0x0f) { temp=P1; switch(temp) { case 0xd7:num=0x09;ES=1;break; case 0xdb:num=0x10;ES=1;break; case 0xdd:num=0x11;ES=1;break; case 0xde:num=0x12;ES=1;break; } while(temp!=0x0f) { temp=P1; temp=temp&0x0f; } } } P1=0xef; temp=P1; temp=temp&0x0f; if(temp!=0x0f) { delay(5); if(temp!=0x0f) { temp=P1; switch(temp) { case 0xe7:num=0x13;ES=1;break; case 0xeb:num=0x14;ES=1;break; case 0xed:num=0x15;ES=1;break; case 0xee:num=0x16;ES=1;break; } while(temp!=0x0f) { temp=P1; temp=temp&0x0f; } } } } |
|
相关推荐
1个回答
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12011 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 23:29 , Processed in 0.489831 second(s), Total 73, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号