打印

红外控制问题请教

[复制链接]
1833|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mcu520|  楼主 | 2007-6-2 12:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

接收部分的指示灯还没接收到信号时,自己会随机的闪烁,复位后还是如此。
发射部分按下开关后,发射指示灯一直亮着。
哪位好心人能帮忙看一下,自己的水平有限,有些东西卡住了,想了很久都调试不行


接收程序
;t0:红外线脉冲计数器
;t1:计数时间控制器
;sw为控制方式选择开关,闭合时:单片机输出为“互锁”控制方式,断开时:单片机输出控制为单路控制方式
x0 equ 30               ;计数次数设定
x1 equ 60
x2 equ 90
x3 equ 120
x4 equ 150
x5 equ 180
fz equ 10
sw bit p3.2               ;控制方式选择开关
bz bit 00h               ;bz为判定标志,是为0,非为1
ORG 0000H
aJMP START
ORG 0013H                  ;int1入口
LJMP intout1            
ORG 001bH              ;定时器T1入口
aJMP intt1
org 0030h
intout1: clr ex1       ;清外部中断1中断允许位
MOV TH1,#03ch          ;定时时间约为100ms
MOV TL1,#0b0h
setb tr1               ;启动T1计时
setb et1               ;允许T1中断
mov th0,#0
mov tl0,#0
setb tr0               ;启动T0计数
reti
intt1: clr tr0           ;清T0运行控制位,下次从新计数
mov a,tl0
mov b,x0               ;X0
acall jspd
jb bz,d01
cpl p0.0
jb sw, d01
mov a,p0
orl a,#0feH
mov p0,a
ajmp d06
d01: mov b,x1           ;X1
acall jspd
jb bz,d02
cpl p0.1
jb sw ,d02
mov a,p0
orl a,#0fdH
mov p0,a
ajmp d06
d02: mov b,x2           ;X2
acall jspd
jb bz,d03
cpl p0.2
jb sw ,d03
mov a,p0
orl a,#0fbH
mov p0,a
ajmp d06
d03: mov b,x3           ;X3
acall jspd
jb bz,d04
cpl p0.3
jb sw ,d04
mov a,p0
orl a,#07H
mov p0,a
ajmp d06
d04: mov b,x4           ;X4
acall jspd
jb bz,d05
cpl p0.4
jb sw ,d05
mov a,p0
orl a,#0efH
mov p0,a
ajmp d06
d05: mov b,x5           ;X5
acall jspd
jb bz,d06
cpl p0.5
jb sw ,d06
mov a,p0
orl a,#0dfH
mov p0,a
ajmp d06
d06: setb ex1
reti
jspd: push acc
clr bz
cjne a,b,jspd1
ajmp jspd5
jspd1: jc jspd2
subb a,b
ajmp jspd3
jspd2: mov r1,b
mov b,a
mov a,r1
clr c
subb a,b
jspd3: cjne a,fz,jspd4
ajmp jspd5
jspd4: jc jspd5
setb bz
pop acc
ret
jspd5: clr bz
pop acc
ret
start: MOV P0,#0FFH
mov p3,#0ffh
clr it1                  ;int1中断为电平触发 
SETB EX1                 ;允许int1中断 
MOV TMOD,#15H            ;设置T0为计数方式、T1为计时方式1
setb ea                  ;开所有中断
xh: nop
ajmp xh
end

发送程序
;k0-k5:为遥控按钮
;t1:红外线发射时间控制器
;t0:红外线发射频率控制器
$NOMOD51
#include<reg51.h>

k0 BIT P1.0                ;开关定义
k1 BIT P1.1
k2 BIT P1.2
k3 BIT P1.3
k4 BIT P1.4
k5 BIT P1.5
bz bit 00h
k0h equ 0f1h
k0l equ 0c8h            ;k0键输出频率300Hz833(3640)
k1h equ 0f8h
k1l equ 0ech            ;k1键输出频率600Hz417(1812)
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
ORG 0000H
aJMP START
ORG 000BH               ;定时器T0入口
aJMP intt0
ORG 001bH               ;定时器T1入口 
aJMP intt1 
org 0030h
intt0: cpl p3.4            ;T0中断
mov a,r1
mov th0,a
mov a,r2
mov tl0,a
reti
intt1: 
clr tr0            ;关闭定时器t0和t1的外部中断
CLR ET0
clr tr1
clr et1
setb bz
setb p3.4
reti
start: MOV P1,#0FFH        ;主程序开始
mov p3,#00h
MOV TMOD,#11H           ;计数器T0、T1工作在方式1

setb ea                 ;开所有中断
xh: jb k0,d01            ;K0
acall ys
Jb k0,d01 ;k0
jnb k0,$
acall sett1
mov r1,k0h 
mov r2,k0l
acall sett0
jnb bz,$
d01: jb k1,d02            ;K1
acall ys
Jb k1,d02 ;k1
jnb k1,$
acall sett1
mov r1,k1h 
mov r2,k1l
acall sett0
jnb bz,$
D02: jb k2,d03            ;K2
acall ys
Jb k2,d03 ;k2
jnb k2,$
acall sett1
mov r1,k2h 
mov r2,k2l
acall sett0
jnb bz,$
D03: jb k3,d04            ;K3
acall ys
Jb k3,d04 ;k3
jnb k3,$
acall sett1
mov r1,k3h 
mov r2,k3l
acall sett0
jnb bz,$
D04: jb k4,d05            ;K4
acall ys
Jb k4,d05 ;k4
jnb k4,$
acall sett1
mov r1,k4h 
mov r2,k4l
acall sett0
jnb bz,$
D05: jb k5,d06            ;K5
acall ys
Jb k5,d06 ;k5
jnb k5,$
acall sett1
mov r1,k5h 
mov r2,k5l
acall sett0
jnb bz,$
d06: ajmp xh
ys: mov r6,#128           
ys1: djnz r6,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

相关帖子

沙发
mcu520|  楼主 | 2007-6-2 12:09 | 只看该作者

回去自己再调了,希望有人能看下,帮忙找些错误

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

191

帖子

0

粉丝