我做了一个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
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |