在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"
