📄 txd8951.asm
字号:
ORG 00H
START:
MOV SCON,#50H ;设置串口工作在模式1下,接收使能
MOV TMOD,#20H ;使用Timer1工作在模式2下
MOV TH1,#0F3H ;波特率2400
MOV TL1,#0F3H
SETB TR1 ;启动Timer1
MOV 30H,#00H
;**********判断是否建立通信**********
DIAL:
MOV SBUF,#99H ;发送呼叫号99H
CHECK_99:
JBC TI,WAIT_RESPONSE ;判断是否发送完毕,完毕(TI=1)跳到接收应答
JMP CHECK_99
WAIT_RESPONSE:
JBC RI,CHECK_01 ;串口接收到数据(RI=1)则跳到判断应答号
JMP WAIT_RESPONSE
CHECK_01:
MOV A,SBUF ;将接收到的数据从SBUF载入ACC
CJNE A,#01H,DIAL;判断接收到的数据是否为应答号01H。如果不是正确的应答号,就跳到DIAL重呼
;**************取按键值******************
LOOP:
MOV P2,#00H
MOV A,P2
CJNE A,#00H,SENDKEY
JMP LOOP
SENDKEY:
;************将P2口的按键值转换为1~8的数据**********
judge1: CJNE A,#01H,judge2 ;判断A是否为01H,不是则跳到judge2,判断A是否为02H
SEND_1:
JMP SEND_NUM ;A为01H,则跳到SEND_NUM
judge2: CJNE A,#02H,judge3
SEND_2:
JMP SEND_NUM
judge3: CJNE A,#04H,judge4 ;判断A是否为04H,不是则跳到judge4,判断A是否为08H
SEND_3: MOV A,#03H ;以上情况成立,则是第三个按键按下
JMP SEND_NUM
judge4: CJNE A,#08H,judge5
SEND_4: MOV A,#04H
JMP SEND_NUM
judge5: CJNE A,#10H,judge6
SEND_5: MOV A,#05H
JMP SEND_NUM
judge6: CJNE A,#20H,judge7
SEND_6: MOV A,#06H
JMP SEND_NUM
judge7: CJNE A,#40H,SEND_8
SEND_7: MOV A,#07H
JMP SEND_NUM
SEND_8: MOV A,#08H ;以上情况都不是,则是第八个按键按下
JMP SEND_NUM
;************将数据放入SBUF**********
SEND_NUM:
MOV 30H,A
MOV A,30H ;将30H中的键盘按键值载入ACC
MOV SBUF,A ;发送键盘按键值
;**************发送数据******************
CHECK_SEND:
JBC TI,LOOP ;判断是否发送完毕(TI=0?)
JMP CHECK_SEND
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -