📄
字号:
红外线接收程序如何写? [stong] [50次] 2001-3-5 17:45:29
要在8052上写NEC格式的红外线接收程序,在识别引导码时,9ms+4.5ms的时间我用延时子
程序来完成,不过我觉得用计数器中断应该更好吧,但是不会写,请高手指点一二!
方法很多 [秋雨] [49次] 2001-3-5 19:58:53
1:用门控法,设定一个计数器,用外部遥控电平控制开关
2:采样法,如每2ms采样一次,小于3次为4.5ms,大于3次为9ms
3:中断法,遥控信号在翻一次相,元信号和反相后的信号分别接到两个中断上
让一个计数器计时
等等
stong: 您可看我所提供的程式! [tienan] [54次] 2001-3-6 13:42:42
;*************************************************************************
*
; 文 件 名 : REMOTE.A51 *
; 芯片型号 : AT89C2051 MCU @6Mhz *
; 发射芯片 : PT2222 OR PT2213 *
; 功 能 : 遥控器键码接收解码程式 *
; 版 本 号 : VER. 2.00 *
; 编程日期 : 00-10-17 16:57 *
; 最后修改日期 : 00-10-17 16:57 *
; 联系电话 :0755-3236107 *
;**************************************************************************
ir_rec_ok bit 00h
ir_first bit 01h
stack equ 50h
custom_code equ 21h
key_code equ 23h
custom_id data 0eh
leader_code data 11h ; 引导码
end_code data 5ch ; 尾码
code_0 data 02h ; "0" 码
code_1 data 04h ; "1" 码
;*************************************************************************
org 0000h
jmp initial
org 0003h
jmp ir_recever
;*************************************************************************
org 0030h
initial: mov r0,#02h
mov r1,#7fh
clr_reg: mov @r0,#00h
inc r0
djnz r1,clr_reg
mov sp,#stack
mov tmod,#00000001b
mov ip,#00000001b
mov tcon,#00000001b
clr et0
mov ie,#10000001b
main_pro: nop
jb ir_rec_ok,key_pro
nop
jmp main_pro
;*************************************************************************
key_pro: nop
nop
nop
nop
clr ir_rec_ok
jmp main_pro
;************** 红外接收解码程式入口 *************************************
ir_recever: push acc
push psw
setb rs0
clr rs1
mov a,th0
mov r2,a
mov tl0,#00h
mov th0,#00h
setb tr0
cjne a,#leader_code,chk_end1
mov r0,#20h
setb ir_first
int_return: clr ie0
pop psw
pop acc
reti
chk_end1: jnb ir_first,int_return
cjne a,#end_code,read_code
jmp int_return
read_code: mov a,r2
cjne a,#code_0,receive_1
jmp receive_0
receive_1: cjne a,#code_1,int_return
setb c
jmp encode
receive_0: clr c
encode: mov a,key_code+1
rrc a
mov key_code+1,a
mov a,key_code
rrc a
mov key_code,a
mov a,custom_code+1
rrc a
mov custom_code+1,a
mov a,custom_code
rrc a
mov custom_code,a
djnz r0,int_return
mov a,custom_code
cjne a,#custom_id,ir_exit_int
mov a,key_code
cpl a
xrl a,key_code+1
jnz ir_exit_int
setb ir_rec_ok
jmp ir_ok_exit
ir_exit_int: clr ir_rec_ok
ir_ok_exit: clr tr0
mov tl0,#00h
mov th0,#00h
clr ir_first
pop psw
pop acc
reti
;**************************************************************************
db " ver. 2.00 zhou 00-10-17 16:57 "
end
点击这里回复这篇贴子>>
_____________________________________________________________________________
Copyright?,C51BBS论坛 2000-2001
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -