📄 11.asm
字号:
LCALL WRTS
MOV SHUJU,#"C"
LCALL WRTS
MOV SHUJU,#"D"
LCALL WRTS
MOV SHUJU,#00100000B
LCALL WRTS
MOV SHUJU,#00100000B
LCALL WRTS
RET
;--------------------------------
IN_DIS3: MOV ZLING,#087H
LCALL WRTC
MOV SHUJU,#00100000B
LCALL WRTS
MOV SHUJU,#"V"
LCALL WRTS
MOV SHUJU,#"C"
LCALL WRTS
MOV SHUJU,#"D"
LCALL WRTS
MOV SHUJU,#00100000B
LCALL WRTS
MOV SHUJU,#00100000B
LCALL WRTS
RET
;---------------------------
IN_DIS4: MOV ZLING,#087H
LCALL WRTC
MOV SHUJU,#00100000B
LCALL WRTS
MOV SHUJU,#"D"
LCALL WRTS
MOV SHUJU,#"V"
LCALL WRTS
MOV SHUJU,#"D"
LCALL WRTS
MOV SHUJU,#00100000B
LCALL WRTS
MOV SHUJU,#00100000B
LCALL WRTS
RET
;----------------------
LOUD_DIS: MOV ZLING,#08DH
LCALL WRTC
MOV SHUJU,#"3"
LCALL WRTS
MOV SHUJU,#"D"
LCALL WRTS
MOV SHUJU,#00100000B
LCALL WRTS
RET
LOUD_OF: MOV ZLING,#08DH
LCALL WRTC
MOV SHUJU,#00100000B
LCALL WRTS
MOV SHUJU,#00100000B
LCALL WRTS
MOV SHUJU,#00100000B
LCALL WRTS
RET
BMQ:
PUSH ACC
PUSH PSW
MOV PSW,#08H
MOV TH0,#0dcH
MOV TL0,#00H
MOV A,TM1
JZ TM1_0
DEC TM1
JMP TM1_2
TM1_0:
MOV A,#100
MOV TM1,A
TM1_1:
MOV A,TM2
JZ TM2_1
DEC TM2
JMP TM1_2
TM2_1:
MOV FUNINT,#0
TM1_2:
TIMER0:
INC SEC100
MOV A,SEC100
CJNE A,#100,TIMER0_E
MOV SEC100,#0
; LCALL TIME_PRO
MOV A,SEC ;"51C51 显示 1 秒钟,消失一秒种,形成闪动
ANL A,#01
JZ TIMER0_1
MOV DIS_S0,#20H ;" "
MOV DIS_S1,#20H ;" "
MOV DIS_S2,#20H ;" "
MOV DIS_S3,#20H ;" "
MOV DIS_S4,#20H ;" "
MOV DIS_S5,#20H ;" "
SJMP TIMER0_2
TIMER0_1: MOV DIS_S0,#35H ;"5"
MOV DIS_S1,#31H ;"1"
MOV DIS_S2,#43H ;"C"
MOV DIS_S3,#35H ;"5"
MOV DIS_S4,#31H ;"1"
MOV DIS_S5,#20H ;" "
TIMER0_2:
MOV R1,#00H
MOV DIS_H,HOUR
MOV DIS_M,MIN
MOV DIS_S,SEC
; LCALL UPDATE_BUF
; LCALL DISPLAY_PRO
TIMER0_E:
MOV A,P0
anl A,#0C0H
MOV R7,A
jb acc.6,BMQ1
XRL A,LASTBMQ
ANL A,#40h
JZ BMQ1
MOV A,R7
JB ACC.7,BMUPKEY
MOV TAB_KEY,#17
JMP BMQ1
BMUPKEY:
MOV TAB_KEY,#18
BMQ1:
MOV A,LASTBMQ
ANL A,#3FH
ORL A,R7
MOV LASTBMQ,A
MOV A,P2
RRC A
MOV DP2,A
MOV A,DP2
anl A,#03H
MOV R7,A
jb acc.0,BMQ2
XRL A,LASTBMQ
ANL A,#01h
JZ BMQ2
MOV A,R7
JB ACC.1,BMUPKEY1
MOV TAB_KEY,#13;ok
JMP BMQ2
BMUPKEY1:
MOV TAB_KEY,#14;ok
BMQ2:
MOV A,LASTBMQ
ANL A,#0FCH
ORL A,R7
MOV LASTBMQ,A
MOV A,DP2
anl A,#0CH
MOV R7,A
jb acc.2,BMQ3
XRL A,LASTBMQ
ANL A,#04h
JZ BMQ3
MOV A,R7
JB ACC.3,BMUPKEY2
MOV TAB_KEY,#11;ok
JMP BMQ3
BMUPKEY2:
MOV TAB_KEY,#12;ok
BMQ3:
MOV A,LASTBMQ
ANL A,#0F3H
ORL A,R7
MOV LASTBMQ,A
;//////////////////////
MOV A,DP2
anl A,#30H
MOV R7,A
jb acc.4,BMQ4
XRL A,LASTBMQ
ANL A,#10h
JZ BMQ4
MOV A,R7
JB ACC.5,BMUPKEY3
MOV TAB_KEY,#16
JMP BMQ4
BMUPKEY3:
MOV TAB_KEY,#15
BMQ4:
MOV A,LASTBMQ
ANL A,#0CFH
ORL A,R7
MOV LASTBMQ,A
KEYEXT:
POP psw
POP acc
RETI
;--------------------------------------------------------------------------------------------------------
REMTOE: CLR EX0
PUSH ACC
PUSH PSW
mov psw,#10
MOV C,P3.2
NOP
NOP
JNC CONREM
JNC CONREM
NOP
NOP
BUFF: JMP EXT_1
;-----------------------------------------------------------------------------------------------
;对遥控信号的9000微秒的初始低电平信号的识别。
CONREM: MOV R4,#10
SB: NOP
NOP
CALL D882 ;定时882微秒,即数65536-64654=882
REM2: MOV C,P3.2
NOP
NOP
JC BUFF ;延时882微秒后判断P3.2脚是否出现高电平如果有就退出解码程序
NOP
NOP
DJNZ R4,SB ;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序
;-----------------------------------------------------------------------------------------------
;对遥控信号的4500微秒的高电平信号的识别
NOP
NOP
MOV R4,#20
JNB P3.2,$ ;等待4.5毫秒高电平引导脉冲
RT6: MOV R7,#100 ;延时201微秒
DJNZ R7,$
NOP
NOP
REM3: MOV C,P3.2
JNC EXT_1
DJNZ R4,RT6
NOP
NOP
JB P3.2,$
NOP
NOP
;-----------------------------------------------------------------------------------------------
REM4: MOV R0,#1AH ;设定1AH为起始RAM区
MOV R4,#4
PP: MOV R7,#8
JJJJ: JNB P3.2,$ ;等待地址码第一位的高电平信号
NOP
NOP
CALL D882 ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
REM6: MOV C,P3.2 ;将P3.2引脚此时的电平状态0或1存入C中
NOP
NOP
JNC UUU ;如果为0就跳转到UUU
NOP
NOP
JB P3.2,$ ;如果为1就等待高电平信号结束
UUU: NOP
NOP
MOV A,@R0 ;将R0中地址的给A
RRC A ;将C中的值0或1移入A中的最低位
NOP
NOP
MOV @R0,A ;将A中的数暂时存放在R0中
NOP
NOP
DJNZ R7,JJJJ ;接收地址码的高8位
INC R0 ;对R0中的值加1,换成下一个RAM
NOP
NOP
DJNZ R4,PP ;接收完16位地址码和8位数据码和8位数据反码,存放在1AH/1BH/1CH/1DH的RAM中
MOV A,1AH
XRL A,#00H
NOP
NOP
JNZ EXT_1
MOV A,1BH
XRL A,#0FFH
NOP
NOP
JNZ EXT_1
MOV A,1CH
CPL A
XRL A,1DH
NOP
NOP
JNZ EXT_1
MOV R4,#30
MOV DPTR,#REM_TAB
LOOKUP_1: MOV A,R4
NOP
NOP
MOVC A,@A+DPTR
NOP
NOP
XRL A,1CH
NOP
NOP
JZ REM_BAK0
DJNZ R4,LOOKUP_1
MOV TAB_KEY,#0FFH
SJMP EXT_1
REM_BAK0: DEC R4
MOV TAB_KEY,R4 ;R4中的值即为标准的键值
EXT_1: SETB P3.2
SETB EX0
POP PSW
POP ACC
RETI
REM_TAB:
DB 00h
DB 04H ;1
;================
DB 0DH ;2
;================
DB 4BH ;3
;================
DB 1Bh ;4
;===============
DB 5EH ;5
;================
DB 08H ;6
;====================================================================================
DB 42H ;7
;====================================================================================
DB 43H ;8
////////////////////////////////////////////////////////////////
DB 0FH ;9
/////////////////////////////////////////
DB 1EH ;10
/////////////////////////////////////////
DB 1DH ;11
////////////////////////////////////////
DB 1CH ;12
;////////////////////////
DB 18H ;13
;//////////////////////////////
DB 15H ;14
;///////////////////////////////
DB 0EFH; ;15
;////////////////
DB 0FFH ;16
;//////////////////////
DB 16H ;17
;/////////////////////////////////
DB 48H ;18
;///////////////////////////////////
DB 17H ;19
;////////////////////////////////////////
DB 0AH ;20
;////////////////////////////////////
DB 12H ;21
;////////////////////////////////
DB 11H ;22
;/////////////////////////////////
DB 4AH ;23
;////////////////////////////////////
DB 5DH ;24 ;2
;////////////////////////////////////
DB 02H ;25
;///////////////////////////////////
DB 01H ;26
;////////////////////////////////
DB 0CH ;27
;///////////////////////////////
DB 05H ;28
;//////////////////////////////
DB 45H ;29
;///////////////////////////
DB 55H
;///////////////////////////////
DB 4CH
;====================================================================================
D4740: MOV R6,#10
DD2: MOV R5,#235
DJNZ R5,$
DJNZ R6,DD2
RET
;-----------------------------------------------------------------------------------------------
SANKEY: NOP
NOP
MOV A,P1
orl a,#0f0h
NOP
NOP
NOP
CJNE A,#0FFH,KEY_NEXIT
KEY_EXIT: NOP
NOP
RET
;-----------------------------------------------------------------------------------------------
KEY_NEXIT:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
MOV A,P1
orl a,#0f0h
NOP
NOP
NOP
CJNE A,#0FFH,KEY_0
SJMP KEY_EXIT
;-----------------------------------------------------------------------------------------------
KEY_0: JB MUTE_KEY,OUT_KEY
JB ACC.0,KEY_1
nop
nop
nop
MOV TAB_KEY,#7; ok
OUT_KEY:
SJMP KEY_EXIT
KEY_1: JB MUTE_KEY,OUT_KEY
JB ACC.1,KEY_2
nop
nop
nop
MOV TAB_KEY,#5 ;ok
SJMP KEY_EXIT
KEY_2: JB MUTE_KEY,OUT_KEY
JB ACC.2,KEY_3
nop
nop
MOV TAB_KEY,#6 ;ok
SJMP KEY_EXIT
KEY_3: JB MUTE_KEY,OUT_KEY
JB ACC.3,KEY_EXIT
nop
nop
MOV TAB_KEY,#4 ;ok
SJMP KEY_EXIT
/*
KEY_4: JB MUTE_KEY,OUT_KEY
JB ACC.4,KEY_5
nop
nop
MOV TAB_KEY,#3
SJMP KEY_EXIT
KEY_5: JB MUTE_KEY,OUT_KEY
JB ACC.5,KEY_EXIT
nop
nop
MOV TAB_KEY,#8
*/
SJMP KEY_EXIT
;-----------------------------------------------------------------------------------------------
TAB_VOL: DB 3FH,3EH,3DH,3CH,3BH,3AH,39H,38H
DB 37H,36H,35H,34H,33H,32H,31H,30H
DB 2FH,2EH,2DH,2CH,2BH,2AH,29H,28H
DB 27H,26H,25H,24H,23H,22H,21H,20H
DB 1FH,1EH,1DH,1CH,1BH,1AH,19H,18H
DB 17H,16H,15H,14H,13H,12H,11H,10H
DB 0FH,0EH,0DH,0CH,0BH,0AH,09H,08H
DB 07H,06H,05H,04H,03H,02H,01H,00H
TAB_TREB: DB 70H,71H,72H,73H,74H,75H,76H,77H,7EH,7DH,7CH,7BH,7AH,79H,78H
TAB_BASS: DB 60H,61H,62H,63H,64H,65H,66H,67H,6EH,6DH,6CH,6BH,6AH,69H,68H
END
;====================================================================================
;====================================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -