我做了一個VB與單片機(jī)通訊的程序,主機(jī)是微機(jī),從機(jī)單片機(jī)使用AT89C52,從機(jī)ID號=01h或者02h時通訊正常,主機(jī)叫號時單片機(jī)向微機(jī)發(fā)送從機(jī)ID號。當(dāng)從機(jī)ID號=31h時,主機(jī)叫號時單片機(jī)不發(fā)送從機(jī)ID號。調(diào)試程序使用串口精靈,軟仿真沒有發(fā)現(xiàn)問題,缺少仿真器不能進(jìn)行仿真不知道問題在那里。因為本人是一個養(yǎng)牛農(nóng)民,水平太低,向各位老師請教!程序如下:主意紅色部分。本人郵箱:lyz8421@163.com
jh EQU 01h ;從機(jī)ID號=01H,通訊正常收到從機(jī)號
jh EQU 31h ;從機(jī)ID號=31H,接收不到從機(jī)號
org 0000h
sjmp main ;轉(zhuǎn)主程序
org 0023h ;中斷入口地址
ljmp sm ; 轉(zhuǎn)收碼程序
org 0030h ;
main:
setb p1.0 ;準(zhǔn)備接收數(shù)據(jù)
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 ;關(guān)串口中斷
clr ri
mov a, sbuf ;接收第一個數(shù)據(jù)(叫號)
xrl a, #jh ;異或,和本機(jī)號比較*
jnz return ;不是本機(jī)號,則退出
clr p1.0 ;485工作時p1.0為1發(fā)送,為0接收
mov a,#jh ;發(fā)送本機(jī)編號
mov sbuf, a
.
.
.
return: ;結(jié)束中斷
end
|