[問題] PIC18F2321(C18)_使用USART問題請教

看板ASM作者 (小D(滴))時間15年前 (2008/10/10 09:13), 編輯推噓5(5011)
留言16則, 3人參與, 最新討論串1/1
請教版上前輩~我在使用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

10/10 10:27, , 1F
有示波器可以看波型嗎?
10/10 10:27, 1F

10/10 10:28, , 2F
我的想法是傳第一byte時,IO的狀態是low,所以傳不到PC上
10/10 10:28, 2F

10/10 11:40, , 3F
沒傳資料時,腳位為HI.(不管傳幾byte,都只有第一byte沒有)
10/10 11:40, 3F

10/10 11:41, , 4F
如果單傳一個BYTE,示波器抓到為-->hi-->一個low-->變為hi
10/10 11:41, 4F

10/10 12:22, , 5F
有示波器啊……那把傳三個byte的波形po上來吧
10/10 12:22, 5F

10/10 23:01, , 6F

10/10 23:03, , 7F
今天又繼續試了一下,還是無解。第一個byte終端機抓不到~
10/10 23:03, 7F

10/10 23:04, , 8F
終端機只顯示B和D ~(也就是0x42及0x44)
10/10 23:04, 8F

10/11 04:20, , 9F
在執行WriteUSART(0x41)之前會有波形嗎?
10/11 04:20, 9F

10/11 04:23, , 10F
後兩個波形是正確的,第一個波形時間太久,值是0x00
10/11 04:23, 10F

10/11 09:52, , 11F
OpenUSART的第一個參數確定是用&嗎?
10/11 09:52, 11F

10/11 09:52, , 12F
這種多個設定的大多是用bitwise or吧
10/11 09:52, 12F

10/11 10:58, , 13F
riteUSART(0x41)之前~我不確定有沒有波型~~
10/11 10:58, 13F

10/11 10:58, , 14F
但單傳riteUSART(0x41)之前~~ 會有一個hi-->low一下-->hi
10/11 10:58, 14F

10/11 12:14, , 15F
第一個參數是否用 &..我再去試試看~~
10/11 12:14, 15F

10/14 23:48, , 16F
最後解決方法~程式一開始先丟一個0x00;之後丟都正常=.=.
10/14 23:48, 16F
文章代碼(AID): #18xgmZc3 (ASM)