|
初學(xué)51,學(xué)到串口通信,了解了串口中斷進(jìn)入中斷程序是接收到數(shù)據(jù)RI置1,但是既然只有RI置1才能進(jìn)入中斷,為什么中斷函數(shù)中還要判斷RI==1
既然存在,必有其合理之處,煩請(qǐng)各位大佬解釋一下!謝謝!
單片機(jī)源程序如下:
#include <REGX52.H>
#include <intrins.h>
void UART_Init()
{
SCON=0x50;//8位
PCON &= 0x7F;//
TMOD &= 0x0F;//高四位清零
TMOD |= 0x20;//高四位賦值
TH1=0xFD;
TL1=0xFD;
ET1=0;//禁止定時(shí)器1中斷
TR1=1;//開啟計(jì)時(shí)
EA=1;
ES=1;//串口中斷允許
/*因?yàn)椴恢朗裁磿r(shí)候會(huì)收到信息,但也不能一直等待
所以就用了串口中斷!
*/
}
void main()
{
UART_Init();
while(1)
{
}
}
void js() interrupt 4//串口中斷---進(jìn)入中斷的條件就是TI/RI置1(串口發(fā)送或接收完成TI和RI中斷),并且需要軟件置零
{
// P2=0x00; //此時(shí)不管你發(fā)送什么,他都會(huì)亮,因?yàn)橹灰邮盏叫盘?hào),他就會(huì)進(jìn)入中斷
if(RI==1) //RI---receive就是收到數(shù)據(jù)
{
P2=~SBUF;
RI=0;//軟件置零
}
}
|
|