完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
各位,最近在调试的时候发现个问题,希望大神能帮忙看下是什么原因。
只要程序中ES=1,定时器0工作,但是串口无反应,但是将ES=0注释掉之后,程序就正常了,这是为什么? #include #include #define uchar unsigned char #define uint unsigned int uchar t0; void init() { TMOD=0x21; TH0=(65536-5000)/256; TL0=(65536-5000)%256; TR0=1; ET0=1; TH1=0xfd; TL1=0xfd; TR1=1; //打开定时器1 REN=1; //允许串口接收数据 SM0=0; //10位异步传输 SM1=1; ES=1; //开串口中断 就是这里,将ES=1注释掉之后程序正常?不解 EA=1; //开总中断 } void main() { init(); while(1); } void timer0() interrupt 1 { TH0=(65536-5000)/256; TL0=(65536-5000)%256; t0++; if(t0==20) { SBUF=0xaa; } } |
|
相关推荐
9个回答
|
|
程序的主要用途时采集数据之后将数据通过232传输到电脑上,现在先调试每隔一段时间将固定数据输出到电脑上
|
|
|
|
没看见你的串口中断程序呀
|
|
|
|
|
|
|
|
是一定的啊,你开了串口中断后,又没有写中断程序!自然啊中断后RI=1;了,就无法跳出中断
|
|
|
|
去掉ES=1;就可以
|
|
|
|
在tmod前,将总中断关掉
|
|
|
|
开了串口中断,每发送或接收一字节数据都会进入串口中断,并且只有清除了串口中断标志位才会退出中断。没有对应的中断函数,那么程序就一直停留在串口中断入口,等待TI或RI清零
|
|
|
|
嗯,昨天晚上想了很久,也判断是这个问题,今天测试下看看 |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
798 浏览 0 评论
【每周推荐】采用11代Intel CPU,基于youyeetoo X1开发板搭建少儿AI智能STEAM积木平台
871 浏览 0 评论
2698 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
2316 浏览 5 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 移植zbar的方法
1717 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
5877 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-27 00:22 , Processed in 0.541589 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号