在PIC16F中(ex PIC16F723),要用UART的功能時,Tx & RC將同時開啟,並無法單獨的使用,如果在程式中去直接修改RC的TRIS or DATA 將是無用的,除非將UART關掉先(SPEN=0).

ps:想用TX來做debug,RC當GPIO的........不行喔


====================================================================================================

[PIC18]
一般用來檢查TXREG是否已送完可以檢查 TXIF 或 TRMT,通常會檢查TXIF,這樣可以讓資料無間隔的被送出去,不過卻有一種情況不能檢查TXIF,而要用TRMT
那就是當為9bit 模式時,因為若僅檢查TXIF,則TX9D可能還沒被送出,就又被下一筆資料的TX9D給覆蓋掉,造成資料錯誤,還有並不是所有的comport軟體都能正確使用9bit的傳輸
超級終端機ok,串口調試助手 若parity錯誤會當機,AccessPort無法使用.
下面範例是ODD & EVEN時TX9D的算法:

ODD:
data.Val='a';
TXSTAbits.TX9D=1^data.bits.b7^data.bits.b6^data.bits.b5^data.bits.b4^data.bits.b3\
         ^data.bits.b2^data.bits.b1^data.bits.b0;
ConsolePut(data.Val);

EVEN:
data.Val='a';
TXSTAbits.TX9D=data.bits.b7^data.bits.b6^data.bits.b5^data.bits.b4^data.bits.b3\
        ^data.bits.b2^data.bits.b1^data.bits.b0;
ConsolePut(data.Val);


void ConsolePut(BYTE c)
{
    while( !TXSTAbits.TRMT);  //ok
    //while( !PIR1bits.TXIF);  //不能用在9bit mode下
        TXREG = c;
}

ps:不要忘記TX9需設為"1"

文章標籤
全站熱搜
創作者介紹
創作者 iamqq 的頭像
iamqq

iAmqq

iamqq 發表在 痞客邦 留言(0) 人氣(182)