本帖最后由 laoliang3064 于 2009-11-13 17:17 编辑
我写的串口通信程序有问题,但是可以通信,上电后用串口调试软件发第一组数,没反应;发第二组数,返回的只有6位(我发的是7位);发第三组数就OK了,往后就没问题了,各位大侠看看。程序如下:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:;CLR P0.7;接收使能
MOV
SP,#60H;设置堆栈
MOV
SCON,#50H ;设置串口方式1
MOV
TMOD,#25H;T1方式2定时,T0方式1计数
MOV
PCON,#80H;波特率加倍
MOV
TH1,#0F4H;244-4800bit/S
MOV
R0,#20H;数据存放起始地址
MOV
R1,#07H
SETB TR1;开T1
SETB EA;开CPU中断
SETB ES;开串口中断
SETB PS;设置串口中断高优先级
CLR TR0;关计数器T0
CLR TI;初始化发送中断
CLR RI;初始化接收中断
SETB P2.6
SETB P0.1
SETB P2.7
SETB P0.0
START:CLR P0.7
MOV
R0,#20H;数据存放起始地址
MOV
R1,#07H
CLR 20H
CLR 21H
CLR 22H
CLR 23H
CLR 24H
CLR 25H
CLR 26H
CLR 27H
CLR 50H
CLR 51H
WAIT:SETB ES
JNB RI,WAIT;等待接收数据
CLR RI
RECE:CLR
ES
MOV
A,SBUF;接收数据
MOV @R0,A
INC R0
SETB ES;开串口中断
DJNZ R1,WAIT
LJMP HAHA
HAHA:MOV R0,#20H
MOV R1,#07H
SETB P0.7
SEND:MOV
A,@R0;发送数
MOV
SBUF,A
JNB
TI,$
CLR
TI
INC
R0
DJNZ R1,SEND
LJMP AAAA
P0.7接max485芯片使能端。以上仅为串口通信部分。 |