这个8251扩展串口的程序到底错在什么地方,请高手帮帮忙!
;现用8155做时钟发生器,8251扩展个串口!
;晶振用的是11.0592,现在电脑通过串口发送数据,出现的问题是用仿真器仿真时,
;接受到的第一个数有时对有时不对,但接受到的第二个数就不对,此时从状态寄存器
;中读出的数据是#a7,这应该是什么地方出问题了,请大家帮帮忙!我的邮箱
;liuheming@chinaelevator.cn qq:2080274
org 0000h
sjmp main
org 0003h
clr ea
ljmp int0
main:mov sp,#60h
lcall delay0
lcall delay0
lcall delay0
lcall delay0
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;8155初始化,pa输入口,pb输出口,计数器192分频
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
mov dptr,#0df04h
mov a,#0c0h
movx @dptr,a
inc dptr
mov a,#40h
movx @dptr,a
mov dptr,#0df00h;命令寄存器
mov a,#0c2h ;计数器开始记数
movx @dptr,a
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;8251(1)初始化,只许接受,波特率9600,8位,x1异步通讯
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
mov dptr,#0fd00h
mov a,#00h
movx @dptr,a
mov a,#40h
movx @dptr,a;8251回到方式模式
mov dptr,#0fd00h
mov a,#4dh ;
movx @dptr,a
mov a,#36h
movx @dptr,a
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
here:setb ea
setb ex0
setb it0
sjmp here
sjmp here
int0:
mov r0,#30h
mov r1,#02h
wait:
mov dptr,#0fd00h
movx a,@dptr
anl a,#02h;读状态寄存器,看是否有可用信息
jz wait
mov dptr,#0fc00h
movx a,@dptr
mov @r0,a
inc r0
djnz r1,wait;连续接受两个数据
reti
delay0:
mov r1,#0ffh
ww0:
mov r3,#0ffh
ww:djnz r3,ww
djnz r1,ww0
ret
end
发表时间:2004年5月26日22:21:34