📄 danjianxuexi.txt
字号:
;*************************
; 单键学习型遥控器
;*************************
;
SPBASE EQU 70H
LEVAL EQU 00H
MEMBASE EQU 08H
MEMS EQU 67H
BITNMB EQU 08H
KEYFUNFLAG EQU 80H
KEYFUNNMB EQU 81H
KEYFUNRW EQU 82H
READFLAG EQU 88H
WITERFLAG EQU 99H
TMPHADDR EQU 08H
TMPLADDR EQU 90H
READTIME EQU 00H
LOWH EQU R4
LOWL EQU R5
STUDYLAMP EQU P1.6
LAMP EQU P1.7
STUDYKEY EQU P3.2
REMOTEIN EQU P3.4
REMOTEOUT EQU P3.5
DELAYCONUT EQU 30H
DELAYCONUT0 EQU 0FFH
T1COUNT EQU 0F3H
TMODVAL EQU 22H
TCONVAL EQU 41H
PCONVAL EQU 00H
T2CONVAL EQU 00H
SCONVAL EQU 0F8H
IPVAL EQU 01H
;*********************
; 主程序和中断程序入口
;*********************
;
ORG 0000H
AJMP START
ORG 0003H
AJMP INTEX0
ORG 000BH
RETI
ORG 0013H
RETI
ORG 001BH
AJMP INTT1
ORG 0023H
RETI
ORG 002BH
RETI
;***************************
; 初始化程序中的各变量
;***************************
;
CLEARMEMIO: CLR A
DEC A
MOV P0,A
MOV P3,A
MOV P1,A
CLR A
MOV P2,A
CLR STUDYLAMP
CLR LAMP
CLR REMOTEOUT
SETB REMOTEIN
MOV R0,#MEMBASE
MOV R1,#MEMS
CLEARMEN: MOV @R0,A
INC R0
DJNZ R1,CLEARMEN
MOV R0,#KEYFUNRW
MOV @R0,#READFLAG
MOV SP,#SPBASE
MOV IE,#IEVAL
MOV IP,#IPVAL
MOV TMOD,#TMODVAL
MOV PCON,#PCONVAL
MOV SCON,#SCONVAL
MOV TH1,#T1COUNT
MOV TL1,#T1COUNT
SETB EX0
SETB EA
RET
;**********************
; 主程序
;**********************
;
START: LCALL CLEARMEMIO
MAIN: LCALL KEYWORK
LJMP MAIN
NOP
NOP
NOP
LJMP START
;******************
; T1中断服务程序
;******************
;
INTT1: CPL REMOTEOUT
RETI
;*********************
; 载波合成
;*********************
;
REMOTETX: MOV R0,#TMPHADDR
MOV R1,#TMPLADDR
SETB LAMP
MOV A,R4
MOV R3,A
ZJ LOWBACK
CLR A
DEC A
LOWBACKTMP: MOV R2,A
LOWBACKTMP0: SETB TR1
SETB ET1
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,LOWBACKTMP0
DJNZ R3,LOWBACKTMP
LOWBACK: MOV A,R5
MOV R2,A
LOWBACKTMP1: SETB TR1
SETB ET1
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,LOWBACKTMP1
TMP0: MOV A,@R0
MOV R2,A
TMP1: CLR TR1
CLR ET1
CLR REMOTEOUT
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,TMP1
INC R0
TMPP: MOV A,@R1
MOV R2,A
TMP2: SETB TR1
SETB ET1
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,TMP2
INC R1
MOV A,@R1
JZ OUT
AJMP TMP0
OUT: CLR TR1
CLR ET1
CLR LAMP
CLR REMOTEOUT
RET
;******************************
;遥控数据读取INT0中断程序
;高电平存TMPHADDR为首址RAM
;低电平存TMPLADDR为首址RAM
;******************************
;
INTEX0: CLR ET1
CLR TR1
CLR EX0
CLR EA
SETB STUDYLAMP
CLR LAMP
MOV R0,#TMPHADDR
MOV R1,#TMPLADDR
CLR A
MOV DPH,A
MOV DPL,A
READHEAD: JNB REMOTEIN,READDATA
INC DPTR
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
AJMP READHEAD
READDATA: CJNE A,DPH,READDATA00
MOV DPH,A
MOV DPL,A
AJMP READHEAD
READDATA00: CLR A
MOV DPH,A
MOV DPL,A
READLOOP01: JB REMOTEIN,READDATA02
INC DPTR
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
AJMP READLOOP01
READDATA02: CLR LAMP
MOV R4,DPH
MOV R5,DPL
MOV DPH,#00H
MOV DPL,#READTIME
AJMP READLOOP1
READDATA1: SETB LAMP
MOV @R0,DPL
INC R0
MOV DPL,#READTIME
MOV DPH,#00H
READLOOP0: JB REMOTEIN,READDATA2
INC DPTR
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
AJMP READLOOP0
READDATA2: CLR LAMP
MOV @R1,DPL
INC R1
MOV DPL,#READTIME
MOV DOH,#00H
READLOOP1: JNB REMOTEIN,READDATA3
INC DPTR
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
AJMP READLOOP1
READDATA3: CLR A
CJNE A,DPH,READDATA4
AJMP READDATA1
READDATA4: MOV @R0,A
MOV @R1,A
SETB LAMP
CLR STUDYLAMP
SETB REMOTEIN
READEND: JNB STUDYKEY,READEND
SETB EX0
SETB EA
RETI
;***********************
; 键工作子程序
;***********************
;
KEYWORK: SETB P1.0
JNB P1.0,KEY0
KEYOUT: RET
KEY0: LCALL DL10MS
JB P1.0,KEYOUT
LJMP REMOTETX
;***********************
; 延时程序
;***********************
;
DELAY: MOV R0,#DELAYCONUT0
DELAY1: DJNZ R0,DELAY1
RET
DL10MS: MOV R1,#DELAYCONUT
DL10MS1: LCALL DELAY
DJNZ R1,DL10MS1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -