作者fmdjyl (小D(滴))
看板ASM
標題[問題] PIC18F2321(C18)_使用USART問題請教
時間Fri Oct 10 09:13:06 2008
請教版上前輩~我在使用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
1F:推 ruemann:有示波器可以看波型嗎? 10/10 10:27
2F:→ ruemann:我的想法是傳第一byte時,IO的狀態是low,所以傳不到PC上 10/10 10:28
3F:→ fmdjyl:沒傳資料時,腳位為HI.(不管傳幾byte,都只有第一byte沒有) 10/10 11:40
4F:→ fmdjyl:如果單傳一個BYTE,示波器抓到為-->hi-->一個low-->變為hi 10/10 11:41
5F:推 ruemann:有示波器啊……那把傳三個byte的波形po上來吧 10/10 12:22
7F:→ fmdjyl:今天又繼續試了一下,還是無解。第一個byte終端機抓不到~ 10/10 23:03
8F:→ fmdjyl:終端機只顯示B和D ~(也就是0x42及0x44) 10/10 23:04
9F:推 ruemann:在執行WriteUSART(0x41)之前會有波形嗎? 10/11 04:20
10F:推 ruemann:後兩個波形是正確的,第一個波形時間太久,值是0x00 10/11 04:23
11F:推 sunneo:OpenUSART的第一個參數確定是用&嗎? 10/11 09:52
12F:→ sunneo:這種多個設定的大多是用bitwise or吧 10/11 09:52
13F:→ fmdjyl:riteUSART(0x41)之前~我不確定有沒有波型~~ 10/11 10:58
14F:→ fmdjyl:但單傳riteUSART(0x41)之前~~ 會有一個hi-->low一下-->hi 10/11 10:58
15F:→ fmdjyl:第一個參數是否用 &..我再去試試看~~ 10/11 12:14
16F:→ fmdjyl:最後解決方法~程式一開始先丟一個0x00;之後丟都正常=.=. 10/14 23:48