我做了一個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
|