rf.asm.bak
来自「一个简单单片机教程」· BAK 代码 · 共 173 行
BAK
173 行
EN EQU P1.7
DOUT EQU P1.6
CLK EQU P1.3
DOT EQU 30H
D_1 EQU 31H
D_2 EQU 32H
D_3 EQU 33H
D_4 EQU 34H
D_5 EQU 35H
D_6 EQU 36H
ID EQU 37H
BZ EQU 38H
ORG 0000H
AJMP START
ORG 000BH
AJMP MAIN_PRO_0
START:
MOV ID,#01H
MOV BZ,#00H
MOV DOT,#00H
MOV D_1,#00H
MOV D_2,#00H
MOV D_3,#00H
MOV D_4,#00H
MOV D_5,#00H
MOV D_6,#00H
ACALL TS_LED
MOV 5CH,#00H
MOV 5DH,#00H
MOV 62H,#00H
MOV 63H,#00H ;数据5CH,5DH,62H,63H区清零
MOV TMOD,#06H ;T0工作于计数模式;方式2:自动装载;1 TO 0
MOV TH0,#0FFH
MOV TL0,#0FFH
SETB EA
SETB ET0 ;允许T0中断
SETB TR0 ;T0运行
MAIN: JBC TF0,MAIN_PRO_0 ;检测T0是否溢出
SJMP MAIN
; SJMP MAIN
MAIN_PRO_0: MOV R6,#08H
PROCESS_0: ACALL DL0MS
JB P3.4,PRO_END ;P3.4=1跳出
DJNZ R6,PROCESS_0 ;P3.4=0的时间是否=0.887*8
JNB P3.4,$ ;时间满足后,当P3.4=0,等待
ACALL DL5MS
MOV R1,#5CH
MOV R2,#02H
MAIN_PRO_1: MOV R3,#08H
PROCESS_1: JNB P3.4,$ ;当P3.4=0,等待
LCALL DL0MS
MOV C,P3.4
JNC PROCESS_2 ;P3.4=0(即C=0),去处理
LCALL DL1MS ;P3.4=1(即C=1),延时1.005MS
PROCESS_2: MOV A,@R1 ;处理程序
RRC A
MOV @R1,A
DJNZ R3,PROCESS_1
INC R1
LCALL DL5MS
DJNZ R2,MAIN_PRO_1
MOV 63H,5DH ;
MOV 62H,5CH
MOV R0,#62H
MOV A,@R0
CJNE A,#0C4H,PRO_END ;判断是否是键盘按下
;CLR EA ;是,就发送串口
MOV R0,#63H
MOV A,@R0
CJNE A,#20H,LOOP1
AJMP MAIN
LOOP1:
JC LOOP2
AJMP MAIN
LOOP2:
ANL A,#0FH
MOV D_1,A
MOV A,@R0
SWAP A
ANL A,#0FH
MOV D_2,A
MOV D_3,#04H
MOV D_4,#0CH
ACALL TS_LED
;MOV SBUF,A
;JNB TI,$
;ACALL DL
PRO_END: ;SETB EA
LJMP MAIN
;==========================================================================
DL0MS: MOV R4,#13H ;延时0.887MS
DL0LP: MOV R5,#14H
DJNZ R5,$
DJNZ R4,DL0LP
RET
;==========================================================================
DL5MS: MOV R4,#0AH ;延时4.743MS
DL5LP: MOV R5,#0D9H
DJNZ R5,$
DJNZ R4,DL5LP
RET
;==========================================================================
DL1MS: MOV R4,#02H ;延时1.005MS
DL1LP: MOV R5,#0E6H
DJNZ R5,$
DJNZ R4,DL1LP
RET
;==========================================================================
DL:
MOV R7,#03H ;延时425.843MS
DL0:
MOV R6,#0FFH
DL1:
MOV R5,#0FFH
DJNZ R5,$
DJNZ R6,DL1
DJNZ R7,DL0
RET
TS_LED:
MOV R1,#30H
MOV R2,#09H
CLR CLK
CLR EN
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
TS_LOOP1:
MOV A,@R1
SWAP A
MOV R3,#04H
TS_LOOP2:
SETB CLK
RLC A
MOV DOUT,C
CLR C
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR CLK
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R3,TS_LOOP2
INC R1
DJNZ R2,TS_LOOP1
SETB EN
RET
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?