有哪位大侠单片机好的啊。帮我注释下语句吧。多给分的啊

来源:百度知道 编辑:UC知道 时间:2024/06/13 20:09:06
单片机从PC机接收一个字节的数据

RELEP EQU 50H
CBFRTP EQU 30H
ORG 0000H
AJMP START
ORG 0023H
LJMP SISO
START: MOV SP,#2FH
MOV TMOD,#20H
MOV TH1,#0FDH
MOV TL1,#0FDH
ORL PCON,#00H
SETB TR1
SETB EA
SETB ES
MOV SCON,#50H

MOV R0,#CBFRTP+5
CLR RELEP
MAIN: JNB RELEP,$
CLR RELEP
SJMP $

SISO: CLR EA
PUSH PSW
PUSH ACC
CLR TI
JNB RI,SISO1
CLR RI
MOV A,SBUF
MOV @R0,A
SETB RELEP

SISO1: POP PSW
POP ACC
SETB EA
RETI
END

从单片机发送一个数据到PC机上
ORG 0000H
LJMP MAIN
ORG 1000H<

RELEP EQU 50H ;把50H命名为RELEP
CBFRTP EQU 30H ;把30H命名为CBFRTP
ORG 0000H
AJMP START ;短转移到START运行
ORG 0023H ;串口中断入口
LJMP SISO ;长转移运行中断子程序
START: MOV SP,#2FH ;给推栈指针赋值2FH
MOV TMOD,#20H ;定时器T1工作模式2
MOV TH1,#0FDH ;定时初值 OFDH
MOV TL1,#0FDH
ORL PCON,#00H ;波特率不加倍
SETB TR1 ;启动定时器1
SETB EA ;中断总允许
SETB ES ;串口中断允许
MOV SCON,#50H ;串口中断方式一

MOV R0,#CBFRTP+5 ;立即数数35H给寄存器R0
CLR RELEP ;将RELEP清零
MAIN: JNB RELEP,$ ; 若RELEP=1,顺序执行, RELEP=0,执行本语句
CLR RELEP ; 将RELEP清零
SJMP $ ;等待中断
;串口中断子程序
SISO: CLR EA ;中断允许位置零
PUSH PSW ;状态寄存器内容推栈
PUSH ACC ;A内容推栈
CLR TI ;清发送位
JNB RI,SISO1 ;如果RI位为0,转移到SISO1运行
CLR RI ;清接收标示
MOV A,SBUF ;将接收到的数据给累加器A
MOV @R0,A ;接收的数据送往35H单元
SETB RELEP ;RELEP置一

SISO1: POP PSW ;PSW出栈
POP ACC ;A出栈
SETB EA ;中断总允许
RETI ;中断返回
END

从单片机发送一个数据到PC机上
ORG 0000H
LJMP MAIN