作者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