单片机红外编码
时间:10-02
整理:3721RD
点击:
k0 BIT P1.0 ; 各位老师大家好,这个是98C51的红外线发射有几个句子我不明白,请你们解释一下。
k1 BIT P1.1
k2 BIT P1.2
k3 BIT P1.3
k4 BIT P1.4
k5 BIT P1.5
k6 BIT P1.6
k7 BIT P1.7
bz bit 00h ;不明白
k0h equ #0f1h
k0l equ #0c8h ;k0键输出频率300Hz833
k1h equ #0f8h
k1l equ #0ech ;k1键输出频率600Hz417
k2h equ #0feh
k2l equ #0eah ;k2键输出频率900Hz278
k3h equ #0ffh
k3l equ #030h ;k3键输出频率1200Hz208
k4h equ #0ffh
k4l equ #059h ;k4键输出频率1500Hz167
k5h equ #0ffh
k5l equ #075h ;k5键输出频率1800Hz139
k6h equ #0ffh
k6l equ #089h ;k6键输出频率2100Hz119
k7h equ #0ffh
k7l equ #098h ;k7键输出频率2400Hz104
ORG 0000H
aJMP START
ORG 000BH ;定时器T0入口
aJMP intt0
ORG 001bH ;定时器T1入口
aJMP intt1
org 0030h
intt0: cpl p3.4
mov a,r1
mov th0,a
mov a,r2
mov tl0,r2
reti
intt1: clr tr0
clr et0
clr tr1
clr et1
setb bz ;不明白
setb p3.4
reti
start: MOV P1,#0FFH
mov p3,#0ffh
MOV TMOD,#11H ;计数器T0、T1工作在方式1
setb ea ;开所有中断
xh: jb k0,d01
acall ys
Jb k0,d01 ;k0
jnb k0,$ ;不明白
acall sett1
mov r1,k0h
mov r2,k0l
acall sett0
jnb bz,$ ;不明白
d01: jb k0,d02
acall ys
Jb k0,d02 ;k1
jnb k0,$
acall sett1
mov r1,k1h
mov r2,k1l
acall sett0
jnb bz,$
D02: jb k0,d03
acall ys
Jb k0,d03 ;k2
jnb k0,$
acall sett1
mov r1,k2h
mov r2,k2l
acall sett0
jnb bz,$
D03: jb k0,d04
acall ys
Jb k0,d04 ;k3
jnb k0,$
acall sett1
mov r1,k3h
mov r2,k3l
acall sett0
jnb bz,$
D04: jb k0,d05
acall ys
Jb k0,d05 ;k4
jnb k0,$
acall sett1
mov r1,k4h
mov r2,k4l
acall sett0
jnb bz,$
D05: jb k0,d06
acall ys
Jb k0,d06 ;k5
jnb k0,$
acall sett1
mov r1,k5h
mov r2,k5l
acall sett0
jnb bz,$
D06: jb k0,d07
acall ys
Jb k0,d07 ;k6
jnb k0,$
acall sett1
mov r1,k6h
mov r2,k6l
acall sett0
jnb bz,$
D07: jb k0,d08
acall ys
Jb k0,d08 ;k7
jnb k0,$
acall sett1
mov r1,k7h
mov r2,k7l
acall sett0
jnb bz,$
d08: ajmp xh
ys: mov r5,#80h
ys1: djnz r5,ys1
ret
sett1: MOV TH1,#3ch ;定时时间约为100ms
MOV TL1,#0b0h
setb tr1 ;启动T1计时
setb et1 ;允许T1中断
clr bz
ret
sett0: MOV TH0,r1
MOV TL0,r2
setb tr0
setb et0
ret
end
k1 BIT P1.1
k2 BIT P1.2
k3 BIT P1.3
k4 BIT P1.4
k5 BIT P1.5
k6 BIT P1.6
k7 BIT P1.7
bz bit 00h ;不明白
k0h equ #0f1h
k0l equ #0c8h ;k0键输出频率300Hz833
k1h equ #0f8h
k1l equ #0ech ;k1键输出频率600Hz417
k2h equ #0feh
k2l equ #0eah ;k2键输出频率900Hz278
k3h equ #0ffh
k3l equ #030h ;k3键输出频率1200Hz208
k4h equ #0ffh
k4l equ #059h ;k4键输出频率1500Hz167
k5h equ #0ffh
k5l equ #075h ;k5键输出频率1800Hz139
k6h equ #0ffh
k6l equ #089h ;k6键输出频率2100Hz119
k7h equ #0ffh
k7l equ #098h ;k7键输出频率2400Hz104
ORG 0000H
aJMP START
ORG 000BH ;定时器T0入口
aJMP intt0
ORG 001bH ;定时器T1入口
aJMP intt1
org 0030h
intt0: cpl p3.4
mov a,r1
mov th0,a
mov a,r2
mov tl0,r2
reti
intt1: clr tr0
clr et0
clr tr1
clr et1
setb bz ;不明白
setb p3.4
reti
start: MOV P1,#0FFH
mov p3,#0ffh
MOV TMOD,#11H ;计数器T0、T1工作在方式1
setb ea ;开所有中断
xh: jb k0,d01
acall ys
Jb k0,d01 ;k0
jnb k0,$ ;不明白
acall sett1
mov r1,k0h
mov r2,k0l
acall sett0
jnb bz,$ ;不明白
d01: jb k0,d02
acall ys
Jb k0,d02 ;k1
jnb k0,$
acall sett1
mov r1,k1h
mov r2,k1l
acall sett0
jnb bz,$
D02: jb k0,d03
acall ys
Jb k0,d03 ;k2
jnb k0,$
acall sett1
mov r1,k2h
mov r2,k2l
acall sett0
jnb bz,$
D03: jb k0,d04
acall ys
Jb k0,d04 ;k3
jnb k0,$
acall sett1
mov r1,k3h
mov r2,k3l
acall sett0
jnb bz,$
D04: jb k0,d05
acall ys
Jb k0,d05 ;k4
jnb k0,$
acall sett1
mov r1,k4h
mov r2,k4l
acall sett0
jnb bz,$
D05: jb k0,d06
acall ys
Jb k0,d06 ;k5
jnb k0,$
acall sett1
mov r1,k5h
mov r2,k5l
acall sett0
jnb bz,$
D06: jb k0,d07
acall ys
Jb k0,d07 ;k6
jnb k0,$
acall sett1
mov r1,k6h
mov r2,k6l
acall sett0
jnb bz,$
D07: jb k0,d08
acall ys
Jb k0,d08 ;k7
jnb k0,$
acall sett1
mov r1,k7h
mov r2,k7l
acall sett0
jnb bz,$
d08: ajmp xh
ys: mov r5,#80h
ys1: djnz r5,ys1
ret
sett1: MOV TH1,#3ch ;定时时间约为100ms
MOV TL1,#0b0h
setb tr1 ;启动T1计时
setb et1 ;允许T1中断
clr bz
ret
sett0: MOV TH0,r1
MOV TL0,r2
setb tr0
setb et0
ret
end
谢谢有好东西大家一起分享!