久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2757|回復: 7
收起左側

關于51單片機串口中斷,為什么中斷函數中還要判斷RI==1

[復制鏈接]
ID:1004408 發表于 2022-2-9 21:16 | 顯示全部樓層 |閱讀模式
初學51,學到串口通信,了解了串口中斷進入中斷程序是接收到數據RI置1,但是既然只有RI置1才能進入中斷,為什么中斷函數中還要判斷RI==1
既然存在,必有其合理之處,煩請各位大佬解釋一下啊!謝謝!

單片機源程序如下:
#include <REGX52.H>
#include <intrins.h>

void UART_Init()
{
        SCON=0x50;//8位
        PCON &= 0x7F;//
        TMOD &= 0x0F;//高四位清零
        TMOD |= 0x20;//高四位賦值
        TH1=0xFD;
        TL1=0xFD;
        ET1=0;//禁止定時器1中斷
        TR1=1;//開啟計時
        
        EA=1;
        ES=1;//串口中斷允許
        /*因為不知道什么時候會收到信息,但也不能一直等待
        所以就用了串口中斷!
        */
}

void main()
{
        UART_Init();
        while(1)
        {
               
        }
}
void js() interrupt 4//串口中斷---進入中斷的條件就是TI/RI置1(串口發送或接收完成TI和RI中斷),并且需要軟件置零
{
//        P2=0x00;       //此時不管你發送什么,他都會亮,因為只要接收到信號,他就會進入中斷
        if(RI==1)       //RI---receive就是收到數據
                {              
                P2=~SBUF;
                RI=0;//軟件置零
        }
}
回復

使用道具 舉報

ID:624769 發表于 2022-2-9 22:33 | 顯示全部樓層
除了 RI==1  ,
TI == 1  也能進入中斷,所以,不僅僅要判斷RI,還要判斷TI。
當然,你也可以認為 RI == 0 的時候,是因為TI ==1 進入的中斷。
回復

使用道具 舉報

ID:878061 發表于 2022-2-9 23:23 | 顯示全部樓層
是的,在你這個程序里面也許可以省略,但是串口中斷可以是接收中斷也可以是發送中斷,所以要進行判斷
回復

使用道具 舉報

ID:514254 發表于 2022-2-10 00:20 | 顯示全部樓層
interrupt 4是串行的中斷號,但是包含了發送TI和接收RI串行中斷,因此進入到中斷里面不一定是由接收RI引起的,因此需要判斷下,不過一般發送用子程序,是主動過程,接收進中斷,但是需要簡單判斷下。
回復

使用道具 舉報

ID:161164 發表于 2022-2-10 00:43 | 顯示全部樓層
//串口中斷---進入中斷的條件就是TI/RI置1(串口發送或接收完成TI和RI中斷),并且需要軟件置零
/*----------------------------
STC-ISP 范例
----------------------------*/
void Uart_Isr() interrupt 4
{
    if (RI)
    {
        RI = 0;             //Clear receive interrupt flag
        P0 = SBUF;          //P0 show UART data
    }
    if (TI)
    {
        TI = 0;             //Clear transmit interrupt flag
        busy = 0;           //Clear transmit busy flag
    }
}
回復

使用道具 舉報

ID:1004408 發表于 2022-2-10 17:07 | 顯示全部樓層
lkc8210 發表于 2022-2-10 00:43
//串口中斷---進入中斷的條件就是TI/RI置1(串口發送或接收完成TI和RI中斷),并且需要軟件置零
/*------- ...

懂了,謝謝大佬
回復

使用道具 舉報

ID:1004408 發表于 2022-2-10 17:08 | 顯示全部樓層
188610329 發表于 2022-2-9 22:33
除了 RI==1  ,
TI == 1  也能進入中斷,所以,不僅僅要判斷RI,還要判斷TI。
當然,你也可以認為 RI ==  ...

好滴,謝謝大佬
回復

使用道具 舉報

ID:1004408 發表于 2022-2-10 17:08 | 顯示全部樓層
huashanhui20 發表于 2022-2-9 23:23
是的,在你這個程序里面也許可以省略,但是串口中斷可以是接收中斷也可以是發送中斷,所以要進行判斷

謝謝大佬
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品一区二区三区四区五区 | 欧美 日韩 国产 一区 | 国外成人在线视频网站 | 视频一区在线观看 | 色888www视频在线观看 | 国产精品久久777777 | 草草影院ccyy | 99久久免费精品 | 断背山在线观看 | 91日韩在线 | 天天操天天怕 | 黄色片在线免费看 | 在线播放一区二区三区 | 欧美xxxx日本 | 欧美一区二区三区一在线观看 | 国产精品中文在线 | 国产性网 | 亚欧洲精品在线视频免费观看 | 蜜臀网 | 精品一二 | 超碰操| 国产午夜影院 | 国产免费一区 | 成人在线视频免费观看 | 亚洲va欧美va天堂v国产综合 | 综合久久99 | 久久国产一区 | 亚洲性网 | 日韩在线免费视频 | 逼逼视频| 国产欧美一区二区三区在线看蜜臀 | 成人欧美一区二区三区色青冈 | 日韩精品视频在线 | 国产精品视频久久 | 国产成人在线视频 | 一级欧美 | 怡红院怡春院一级毛片 | 日韩精品一区二区三区中文在线 | 国产精品亚洲第一区在线暖暖韩国 | 国产色在线 | 午夜免费观看体验区 |