单片机,双机通信程序 注释。

来源:百度知道 编辑:UC知道 时间:2024/06/21 09:05:50
在程序后面写上中文注释。(本人现在没有积分,等积分一满立刻送上,真诚的麻烦各位。
ORG 0000H
LJMP TXDA
ORG 50H

TXDA:MOV TMOD,#20H
MOV TH1,#0FAH
MOV TL1,#0FAH
CLR ET1
SETB TR1
MOV SCON,#40H
MOV PCON,#00H
CLR ES

LOOP:JNB P1.0,A0
JNB P1.1,A1
JNB P1.2,A2
JNB P1.3,A3
JNB P1.4,A4
JNB P1.5,A5
JNB P1.6,A6
JNB P1.7,A7
SJMP LOOP
A0:
MOV A,#11111110B
MOV SBUF,A
LP0: JNB TI,LP0
CLR TI
RET

A1:
MOV A,#11111101B
MOV SBUF,A
LP1:JNB TI,LP1
CLR TI
RET
A2:
MOV A,#11111011B
MOV SBUF,A
LP2: JNB TI,LP2
CLR TI
RET
A3:
MOV A,#11110111B
MOV SBUF,A
LP3:JNB TI,LP3
CLR TI
RET
A4:
MOV A,#11101111B
MOV SBUF,A
LP4:JNB TI,LP4
CLR TI
RET

ORG 0000H
LJMP TXDA ;长跳转至TXDA
ORG 50H ;程序从0050H单元开始写入

TXDA:MOV TMOD,#20H ;TXDA子程序,定时器T1工作方式2,8位自动重装
MOV TH1,#0FAH ;装定时器初值,设定波特率
MOV TL1,#0FAH
CLR ET1 ;关定时器T1中断使能
SETB TR1 ;T1启动
MOV SCON,#40H ;串口工作方式1.禁止接收
MOV PCON,#00H ;波特率不加倍
CLR ES ;运行串口中断

LOOP:JNB P1.0,A0 ;判断P1.0是否为0,是则跳A0,否则继续
JNB P1.1,A1 ;判断P1.1是否为0,是则跳A1,否则继续
JNB P1.2,A2 ;
JNB P1.3,A3 ;
JNB P1.4,A4
JNB P1.5,A5
JNB P1.6,A6
JNB P1.7,A7 ;同上
SJMP LOOP ;若没有相应的建按下,则跳LOOP继续扫描等待
A0:
MOV A,#11111110B ;A送立即数11111110B
MOV SBUF,A ;发送A中数据
LP0: JNB TI,LP0 ;等待发送完成
CLR TI ;清楚发送中断标志
RET ;子程序返回

A1: ;A1-A7同上,只是发生的数