初學者使用PIC18F452的USART功能問題 請大家幫忙
|
||||
---|---|---|---|---|
新會員
|
希望MCU能透過USART功能接收,從電腦傳出一次8個16進位值
如(0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88)然後顯示 在LED 當程式執行到第2個值顯示在LED後 其餘3~8個值就無法顯示在LED 是因為USART無法一次接收8個16進位值嗎? 還是程式有問題? 請大家幫忙 謝謝!! 程式如下..... //主程序 void main() { RCSTAbits.SPEN = 1; //啟動串列傳輸埠腳位傳輸功能 TRISCbits.TRISC6 = 0; //將RC6設定為輸出 TRISCbits.TRISC7 = 1; //將RC7設定為輸入 TXSTAbits.SYNC = 0; //非同步傳輸模式 TXSTAbits.BRGH = 1; //選擇高速波特率 SPBRG = 0x19; //設置波特率為9600BPS RCSTAbits.RX9 = 0; //選擇8位元接收 RCSTAbits.CREN = 1; //啟動資料接收模組 PIE1bits.RCIE = 0; //使能接收中斷 INTCONbits.GIE = 1; //開放全局中斷 INTCONbits.PEIE = 1; //使能外部中斷 char RX_Byte0,RX_Byte1,RX_Byte2,RX_Byte3,RX_Byte4,RX_Byte5,RX_Byte6,RX_Byte7; //設定變數 TRISD = 0; //將PORTD設定為輸出 while (DataRdyUSART()) //接收暫存器填滿數據 { RX_Byte0 = getcUSART(); //把數據接收回變數 RX_Byte1 = getcUSART(); //把數據接收回變數 RX_Byte2 = getcUSART(); //把數據接收回變數 RX_Byte3 = getcUSART(); //把數據接收回變數 RX_Byte4 = getcUSART(); //把數據接收回變數 RX_Byte5 = getcUSART(); //把數據接收回變數 RX_Byte6 = getcUSART(); //把數據接收回變數 RX_Byte7 = getcUSART(); //把數據接收回變數 PORTD = RX_Byte0; //顯示變數內容 delay_ms(200); //延遲200ms PORTD = RX_Byte1; //顯示變數內容 delay_ms(200); //延遲200ms PORTD = RX_Byte2; //顯示變數內容 delay_ms(200); //延遲200ms PORTD = RX_Byte3; //顯示變數內容 delay_ms(200); //延遲200ms PORTD = RX_Byte4; //顯示變數內容 delay_ms(200); //延遲200ms PORTD = RX_Byte5; //顯示變數內容 delay_ms(200); //延遲200ms PORTD = RX_Byte6; //顯示變數內容 delay_ms(200); //延遲200ms PORTD = RX_Byte7; //顯示變數內容 delay_ms(200); //延遲200ms } PORTD = 0x00; //把數據清除 }
發表於: 2010/2/6 0:49
|
|||
|