📄 remote_key.asm
字号:
s_in equ p3.3
key_num equ 40h
key_dat equ 41h
key_en bit 00h
org 0000h
ajmp main
org 0013h
ajmp key_scan
org 0030h
main:mov sp,#53h
setb ex1
setb it1
clr ie1
setb ea
dd:;jb key_en,next
jmp dd
next:mov p2,key_dat
jmp dd
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;程序名称:电视遥控器软解码程序 ;;
;;占用资源:A,R1,C ;;
;;硬件接口:int0 or int1 (s_in) ;;
;;软件接口:key_num-数据缓存、key_dat-返回键值 ;;
;; key_en-键有效标志,1有效 ;;
;;注 意:程序在执行时不能被中断,否则会出错!;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
key_scan:push a
mov a,r1
push a
mov dptr,#0000h
asd:inc dptr ;low level
mov a,dph
clr c
subb a,#2
jnc out
jnb s_in,asd
mov a,dph
jz out
mov dptr,#0000h
asf:inc dptr ;high level
mov a,dph
clr c
subb a,#2
jnc out
jb s_in,asf
mov a,dph
jz out
mov r1,#10h
asg:jnb s_in,$
jb s_in,$
djnz r1,asg
mov r1,#09h
kkkk:jnb s_in,$
mov dptr,#0000h
ass:inc dptr ;low level
jb s_in,ass
mov a,dph
jz ask
setb c ;1
mov a,key_num
rrc a
mov key_num,a
jmp ook
ask:clr c ;0
mov a,key_num
rrc a
mov key_num,a
ook:djnz r1,kkkk
mov dptr,#key_tab
mov r1,#00h
mov a,#00h
nextt:mov a,r1
movc a,@a+dptr
inc r1
cjne a,#0aah,ash
jmp out
ash:cjne a,key_num,nextt
dec r1
mov key_dat,r1
setb key_en
mov a,key_dat
cpl a
mov p2,a
out:pop a
mov r1,a
pop a
clr ie1
reti
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
key_tab:db 04h,80h,00h,81h,01h,82h,02h,83h,03h,84h,
db 85h,05h,86h,06h,8eh,0eh,89h,09h,88h,08h,
db 8ah,8bh,07h,0bh,0ah,8dh,8ch,0ch,0aah,0aah
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -