我做了一个VB与单片机通讯的程序,主机是微机,从机单片机使用AT89C52,从机ID号=01h或者02h时通讯正常,主机叫号时单片机向微机发送从机ID号。当从机ID号=31h时,主机叫号时单片机不发送从机ID号。调试程序使用串口精灵,软仿真没有发现问题,缺少仿真器不能进行仿真不知道问题在那里。因为本人是一个养牛农民,水平太低,向各位老师请教!程序如下:主意红色部分。本人邮箱:lyz8421@163.com
jh EQU 01h ;从机ID号=01H,通讯正常收到从机号
jh EQU 31h ;从机ID号=31H,接收不到从机号
org 0000h
sjmp main ;转主程序
org 0023h ;中断入口地址
ljmp sm ; 转收码程序
org 0030h ;
main:
setb p1.0 ;准备接收数据
mov th1,#0fdh
mov tl1,#0fdh ;9.6k po
mov scon,#0f0h ;方式1=50h,方式3=f0h
mov pcon, #00h
mov ie,#82h
setb tr1
setb ea
wait: sjmp wait
;中断通讯程序子程序
sm: push psw
push acc
clr es ;关串口中断
clr ri
mov a, sbuf ;接收第一个数据(叫号)
xrl a, #jh ;异或,和本机号比较*
jnz return ;不是本机号,则退出
clr p1.0 ;485工作时p1.0为1发送,为0接收
mov a,#jh ;发送本机编号
mov sbuf, a
.
.
.
return: ;结束中断
end
|