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

標題: 請教各位一個單片機串口TI置位問題,還望各位能給解惑 [打印本頁]

作者: zcwjzwd    時間: 2020-8-10 23:20
標題: 請教各位一個單片機串口TI置位問題,還望各位能給解惑
/*************** 裝載串口發送緩沖 *******************************/

void TX1_write2buff(u8 dat)
{

        TX1_Buffer[COM1.TX_write] = dat;        
        if(++COM1.TX_write >= COM_TX1_Lenth)        COM1.TX_write = 0;

        if(COM1.B_TX_busy == 0)                //空閑
        {  
                COM1.B_TX_busy = 1;                //標志忙
                TI = 1;                                        //觸發發送中斷
        }
這是STC串口庫函數的裝載串口發送緩沖 ,這里為什么要用軟件把TI置位,TI不是硬件置位嗎?如果再把緩存里的數據給SBUF,數據發送完后硬件是不是又一次把TI置位呢?



作者: csmyldl    時間: 2020-8-11 10:36
沒有哪一個資料說明了TI是硬件置位,只有TF0 TF1 IE0 IE1可以硬件置位
作者: 1692483014    時間: 2020-8-11 12:08
TI = 1;
這里用法錯誤,這個是發送完成中斷狀態位,只能由硬件置位,軟件復位,你這里進行軟件置位,是錯誤的操作。
作者: sdxrly    時間: 2020-8-11 13:28
這是串口在中斷里發送數據,TI=1起動串口中斷,配合串口中斷代碼看
作者: zcwjzwd    時間: 2020-8-11 22:45
csmyldl 發表于 2020-8-11 10:36
沒有哪一個資料說明了TI是硬件置位,只有TF0 TF1 IE0 IE1可以硬件置位

stc官方資料上有說明,停止位開始發送時由內部硬件置位即TI=1,響應中斷后必須由軟件清零。
TI是不是硬件和軟件都可以置位?
作者: zcwjzwd    時間: 2020-8-11 22:47
1692483014 發表于 2020-8-11 12:08
TI = 1;
這里用法錯誤,這個是發送完成中斷狀態位,只能由硬件置位,軟件復位,你這里進行軟件置位,是錯 ...

這是STC官方庫函數的資料,看了之后也有疑惑。
作者: zcwjzwd    時間: 2020-8-11 22:51
sdxrly 發表于 2020-8-11 13:28
這是串口在中斷里發送數據,TI=1起動串口中斷,配合串口中斷代碼看

if(TI)
        {
                TI = 0;
                if(COM1.TX_read != COM1.TX_write)
                {
                         SBUF = TX1_Buffer[COM1.TX_read];
                        if(++COM1.TX_read >= COM_TX1_Lenth)                COM1.TX_read = 0;
                }
                else        COM1.B_TX_busy = 0;
        }
中斷函數里面沒有這個函數,TI可以用軟件置位嗎?
作者: wulin    時間: 2020-8-12 06:26
TI既可以由硬件置位也可以由軟件置位,但只能由軟件復位。軟件置位的目的只是為了發生一次串口中斷,其作用要看串口中斷代碼。不可妄議,誤人誤己。
作者: sdxrly    時間: 2020-8-12 07:50
zcwjzwd 發表于 2020-8-11 22:51
if(TI)
        {
                TI = 0;

TI可以用軟件置位




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