欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 關于51單片機串口中斷的問題 RI TI寄存器設置 [打印本頁]

作者: liaohuguang    時間: 2020-7-7 09:19
標題: 關于51單片機串口中斷的問題 RI TI寄存器設置
各位大佬好,我是新人
最近學51單片機有一個問題一直困惑著我,就是關于串口中斷函數何時進入的問題,如下面代碼
  1. void Usart() interrupt 4
  2. {
  3.         u8 receiveData;

  4.         receiveData=SBUF;
  5.         RI = 0;
  6.         SBUF=receiveData;
  7.         while(!TI);
  8.         TI=0;
  9. }
復制代碼
上面的串口中斷函數應該是在RI或TI置一的時候進入,上面的中斷函數初次進入是RI=1,但是運行到SBUF=receiveData的時候,此時TI應該置0,等待TI置1,那假如在這個程序中,TI在中斷程序中變成1,那中斷程序是直接運行到末尾還是重新從頭運行,畢竟TI=1觸發了中斷,應該重頭再次運行。



作者: lovezjf234    時間: 2020-7-7 16:03
當TI=0的時候一直在while(!Ti中循環),當TI接受結束或者置1的時候,直接向下運行,把TI重新復位TI=1,在中斷中運行的時候不會二次觸發中斷,除非有其他優先級更高的中斷進行觸發。
作者: wulin    時間: 2020-7-7 19:28
//收到上位機一個字節,MCU硬件自動置RI=1,產生中斷請求。
void Usart() interrupt 4 //CPU響應中斷請求進入中斷
{
        u8 receiveData;       
        receiveData=SBUF;//讀取SBUF寄存器收到的數據
        RI = 0;                     //軟件清RI=0
        SBUF=receiveData;//向上位機發送收到的數據
        while(!TI);      //等待發送完成        硬件置TI=1
        TI=0;                          //軟件清TI=0
}//收、發SBUF寄存器是相同地址的兩個物理寄存器

作者: 每天寫bug    時間: 2020-7-7 21:58
void Usart() interrupt 4
{
        u8 receiveData;

        receiveData=SBUF;
        RI = 0;
        SBUF=receiveData;
        while(!TI);
        TI=0;
}

哥,你是電子194還是電子192的,大佬!期末指導指導小弟!哥!!!
作者: 林李    時間: 2020-7-8 11:45
這個肯定從進入中斷開始程序執行,這個是接受到數據之后再發送接收到的數據程序




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1