完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
程序如下
#include char a; void main() { EA=1; TMOD=0x20; TH1=0xfd; TL1=0xfd; ET1=0; TR1=1; ES=0;//stop the serial interrupt REN=1; SM0=0; SM1=1; while(1) { if(RI==1) { RI=0; a=SBUF; P1=a; SBUF=a; } else if(ti==1) TI=0; } } 我把串口中断ES=0了,中断都被关闭了。我还是可以发送和接收数据。所以我认为,ES只是作用于“中断服务程序,也就是 void Serial_interrupt_function() interrupt 4 ”只有在void Serial_interrupt_function() interrupt 4,ES才有绝对控制权。 中断的目的是获得CPU的响应。既然我们可以不用中断就可以获得CPU的响应,那用中断的意义就没了,就像上面的程序一样,while(1)可以一直占用CPU,CPU就可以直接处理While(1)中的代码指令。CPU直接响应发送和接收数据了。 串行通信有TXD和RXD,这两根线是物理连接P3.0和P3.1口的。所以物理上是通路。只要REN=1,就允许接收和发送。 ES是用于获得CPU响应的,串行通信的硬件电路和ES应该没关系? |
|
相关推荐
8个回答
|
|
利用定时器1的中断,也可以发送接收数据,程序可运行。
#include #define uint unsigned int #define uchar unsigned char void delay(int z); char a,flag; void main() { EA=1; TMOD=0x20; TH1=0xfd; TL1=0xfd; ET1=1; TR1=1; ES=0; REN=1; SM0=0; SM1=1; while(1); } void Time1_interrupt()interrupt 3 { if(RI) { RI=0; P1=SBUF; a=SBUF; SBUF=a; } if(TI) { TI = 0; } } |
|
|
|
串口中断和“串口的物理电路”并没有绝对的联系。当利用串口发送和接收数据的时候,RI=1或者TI=1都会触发串口中断。即使在ES=0的情况下,也可以发送和接收数据。
使用其余的中断或者轮询方式都可以发送接收数据,但是"串口中断服务程序”效率最高,占用CPU时间最少。 |
|
|
|
不论是什么在IE寄存器里的中断,及时不置为EA=1;XX=1但是只要在程序中使用了就可以进行相应的程序处理,实际上这并不是说不需要写IE0=1;IT0=1;才可以进行中端。IE寄存器实际上是一个存储中断响应位的寄存器(个人理解)。也就是说里面的五位寄存器的目的是当中断条件达到后给予计算器CPU一个抢夺资源的新号而已。没有IE里的寄存器,各个管脚的附属功能还在只不过就是无法使用中断函数罢了
|
|
1 条评论
|
|
我发现ES=0了,但是中断里的赋值还能继续进行
|
|
|
|
楼主要搞清楚一个概念,就是 定时器 串口 之类具有中断功能的单片机资源,其本身的工作和中断没有任何关系。如,有没有设置中断,定时器都可以计数,计数值到了,申请中断。至于有没有开中断,或是写没有中断函数,定时器不会管的。
|
|
|
|
你这就叫“死盯战术”,你的while(1)循环体里面就一直在死盯着那个RI,TI的标志,CPU别干别的了。就干这个事情了。而开了中断呢?CPU就解放了,一旦有TI,RI的来了,马上通知CPU,去执行中断服务程序即可。平时,完全没有必要去理睬那个RI,TI的了。明白?这是为了实现CPU高效运行采取的机制。你不用?
|
|
|
|
qingtianjushi 发表于 2014-3-8 15:55 说的挺好的,赞学习了 |
|
|
|
无线你试过就知道了
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
277 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
368 浏览 0 评论
766 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
592 浏览 0 评论
879 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12037 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 04:25 , Processed in 0.566025 second(s), Total 59, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号