51单片机在什么情况下会产生串口中断

子函数:void serial() interrupt 4
{ P1=SBUF;
RI=0;
}
别的中断都是在某个I/O口为低电平时产生中断,串口中断是在什么情况下产生呢?

所说的串口中断“其他中断是在I/O口低的时候产生的”是指外部中断,它是在单片机的外部I/O口电平改变的时候产生的。

而串口中断是一种内部中断,所谓内部中断,是单片机执行内部程序,由内部定时器或其他中断源触发的,通常要生成串行中断或其他中断,首先必须有中断和总中断。

例如:串行中断EA=1;//ES总中断量=1;//串行中断},那么只有在中断源事件发生时,你指的是串行中断,是当串口发送或接收完成TI和RI中断造成的定位,从微观的角度来看,它引发了内部的逻辑电路的逻辑功能。

扩展资料:

单片机定时器的工作原理及使用方法:

TMOD:控制定时器的工作方式。8位,高4位控制T1,低4位控制T0。因为计时器有四种工作方式;TMOD=0x00(工作模式0),TMOD=0x01(工作模式0),TMOD=0x02(工作模式2),TMOD=0x03(工作模式3)。

作用:

例如:在工业控制、汽车工业等领域,单片机的应用已经非常广泛,如智能仪表、实时工业控制、通信设备、导航系统、家用电器等。

通信方面,51单片机在GPS、红外、射频等方面有着非常广泛的应用。导航航空,虽然ARM已经逐渐占据主导地位,但是各个模块底层的51单片机仍在使用。

在工业控制领域,许多设备的底层控制是通过51单片机来实现的。51单片机由于仪器成本低,所以在行业中很受欢迎。汽车工业中,一辆汽车控制单片机众多,51单片机也占有一席之地

其他方面,其实作为最早的大量单片机之一,51单片机在各行各业并没有退出历史舞台,仍在发挥着作用。

51单片机只有一个累加器ACC,很多过程都需要通过ACC来完成,所以需要寄存器来保存中间结果。只能间接访问外部数据存储。

使用@dptr访问所有64k(包括您的扩展打印机、监视器、键盘等),或者使用P2和R0或R1访问某个区域。如果使用了中断,并且在中断中使用了更多的寄存器,可以交换整个寄存器组,引导隐式为0组,可以改为1、2、3组。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-23
首先,你要用软件允许中断,即
C语言中
EA = 1; //允许总中断
ES = 1; //允许串口中断
汇编中可用
SETB EA ;允许总中断
SETB ES ;允许串口中断

当单片机接收到一帧数据后,RI会置1,向CPU申请中断,若之前有中断允许,则产生了中断,进入中断服务程序。当然,单片机发送完一帧数据,TI也会置1,同样会产生中断!

一般我们在发送数据时要关中断,因为一般你不用在发送时不用处理数据;接收数据时要开中断,以便你在中断服务程序中将接收到的数据进行存储并处理。

补充:其实,不管你有没有允许中断,上位机(此时即给单片机发送信息的机器)只要给单片机发送数据,单片机就会自动接收数据,并把它放在数据缓冲器SBUF中,如果你之前有允许串行口中断,RI就会置1,向单片机CPU申请中断,并进入中断服务程序,即你问题中的serial()函数,做完这个函数后就会自动返回断点。如果你没有允许中断,便不会产生串行中断。

其实,你的问题有个错误:别的中断都是某个I/O口电平变化产生。这只是外部中断产生条件,不过,你之前也需要用软件允许外部中断。另外,常见的51系列单片机有5个中断源三种中断5:1、外部中断0和1;2、定时器/计数器溢出中断0和1;3、串行口中断。另外,STC51系列还有定时器/计数器T2中断,A/D转换中断,PWM中断,串行中断2等等。你还有什么不懂的可以自己多翻一翻书,学到后面去了你就明白了。

你的问题中那个serial()函数中 P1=SBUF; 是把接收的数据送到并行P1口,然后那条 RI=0;是不可少的,这是用软件清零RI,准备再次接受一帧数据产生中断,如果你没有这条语句,就会进入死循环,出不来了。

有什么问题还可以Q我(1445090023),希望能给我评个最佳答案。本回答被提问者采纳
第2个回答  2010-04-12
长话短说,废话少说
我简明扼要地跟你说:
你说指的“别的中断都是在某个I/O口为低电平时产生中断”是外部中断,那些是单片机外部I/O口发生电平变化的时候产生的中断;
而串口中断是属于内部中断,所谓的内部中断,就是单片机执行内部程序过程中,被内部的定时器或其他中断源触发引起的。理解否?
总的来说,要产生串口中断或其他中断也好,首先你必须开中断以及总中断
{比如你所指的串口中断EA = 1; //开总中断ES = 1; //开串口中断},其次只有在中断源事件发生之后才会产生中断,你所指的串口中断,就是当串口发送完毕或者接受完毕的时候置位了中断标志TI和RI所引起的,微观角度来说,它触发了内部逻辑电路的逻辑功能
第3个回答  2010-04-11
串口中断是在串口中断寄存器RI为1的时候发生中断,也就是接受完串口的数据的时候!
第4个回答  2010-04-11
当你的外设给单片机发送一个字节的数据后,单片机就知道产生中断,并运行中断程序。
相似回答