看板 ASM 關於我們 聯絡資訊
請教版上前輩~我在使用PIC18F2321時,用USART傳輸,傳三個BYTE(0x41,0x42,0x44) 但使用終端機看,只收到2BYTE資料(0x42,0x44),第一BYTE都會不見。(0x41) 不知道是否程式設定上有問題?? 還請版上前輩給予指導,謝謝大家 使用Crystal:4MHZ,鮑率;19200。 (電腦終端機使用COM1,鮑率用19200) 程式如下; ---------------------------- #include <p18f2321.h> #include <delays.h> #include <usart.h> #pragma config OSC=HS, BOR=OFF, BORV=2, PWRT=ON, WDT=OFF, LVP=OFF void main() { OpenUSART( USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 12 ); WriteUSART(0x41); while(BusyUSART()); WriteUSART(0x42); while(BusyUSART()); WriteUSART(0x44); while(BusyUSART()); while(1) { } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.80.6
ruemann:有示波器可以看波型嗎? 10/10 10:27
ruemann:我的想法是傳第一byte時,IO的狀態是low,所以傳不到PC上 10/10 10:28
fmdjyl:沒傳資料時,腳位為HI.(不管傳幾byte,都只有第一byte沒有) 10/10 11:40
fmdjyl:如果單傳一個BYTE,示波器抓到為-->hi-->一個low-->變為hi 10/10 11:41
ruemann:有示波器啊……那把傳三個byte的波形po上來吧 10/10 12:22
fmdjyl:http://fmd.myweb.hinet.net/PRINT_01.BMP 波型圖 10/10 23:01
fmdjyl:今天又繼續試了一下,還是無解。第一個byte終端機抓不到~ 10/10 23:03
fmdjyl:終端機只顯示B和D ~(也就是0x42及0x44) 10/10 23:04
ruemann:在執行WriteUSART(0x41)之前會有波形嗎? 10/11 04:20
ruemann:後兩個波形是正確的,第一個波形時間太久,值是0x00 10/11 04:23
sunneo:OpenUSART的第一個參數確定是用&嗎? 10/11 09:52
sunneo:這種多個設定的大多是用bitwise or吧 10/11 09:52
fmdjyl:riteUSART(0x41)之前~我不確定有沒有波型~~ 10/11 10:58
fmdjyl:但單傳riteUSART(0x41)之前~~ 會有一個hi-->low一下-->hi 10/11 10:58
fmdjyl:第一個參數是否用 &..我再去試試看~~ 10/11 12:14
fmdjyl:最後解決方法~程式一開始先丟一個0x00;之後丟都正常=.=. 10/14 23:48