完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
如题,理论上T1作为波特率发生器的定时器不需要中断服务函数。 但是如果加了允许进入中断(ET1=1;),又写了中断服务函数内容的话,会造成串口发送乱码吗?
或者允许了中断,但是不写中断服务函数,会造成51单片机跑飞程序吗? void SendByte(unsigned char c) { SBUF = c; while(ti==0); TI = 0; } void main(void) { TMOD = 0x21; // 波特率2400 SCON = 0x50; TH1 = 0xF3; TL1 = TH1; TR1 = 1; EA = 1; ET1 = 1; //就是加了这句!!!!允许T1中断 while(1) { SendByte('A'); } } void Timer1Isr(void) interrupt 3 //T1的中断服务函数,随便瞎写的内容,只是表示一下。 { unsigned char i = 0; i++; } 其实也就是 定时器T1的中断服务函数会不会影响串口产生的波特率或者SBUF的发送??? |
|
相关推荐
1个回答
|
|
先给你一个概念,任何中断函数,都要求快进快出。执行时间尽可能少,比较费时的计算,就拿到主函数里面。
再来回答你的问题. 允许定时器中断,但是不写定时器中断服务函数,不对导致单片机程序跑飞程序吗? 我们极端假设下,当程序已经执行完成SBUF = c;语句后,程序立即跳转到定时器中断,假设定时器中断执行非常长, 那么串口上,这个C字节还是可以完整的发出去,但是后面的自己就发布出去了。 所以,串口上不会有乱码,但是会出现本来一个数据帧,会被分成了几个数据帧的情况。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-TF卡烧录流程之烧写过程
1282 浏览 0 评论
2508 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程之烧写原理
1741 浏览 0 评论
请问SPH0641LU4H这款麦克风如何在不使用I2S的情况下,单纯通过GPIO来进行驱动且正常读取数据呢
1301 浏览 1 评论
791 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12118 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-6 18:59 , Processed in 0.599270 second(s), Total 69, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号