完善资料让更多小伙伴认识你,还能领取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字节还是可以完整的发出去,但是后面的自己就发布出去了。 所以,串口上不会有乱码,但是会出现本来一个数据帧,会被分成了几个数据帧的情况。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
377 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
536 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
540 浏览 0 评论
950 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1403 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11760 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 08:27 , Processed in 0.598551 second(s), Total 70, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号