希望高手帮我看看红外发送的程序

[复制链接]
3373|11
 楼主| areshan 发表于 2009-5-6 20:43 | 显示全部楼层 |阅读模式
#include<reg52.h>
sbit data=P3^6;//发射端口
unsigned int delay;
send0()//发送0程序
{data=0;
delay=282;
while(--delay);//0.565ms的低电平
data=1;
delay=280;
while(--delay);//0.56ms的高电平
}//0是由0.56ms的低电平和0.56ms的高电平组成
send1()
{data=0;
delay=282;
while(--delay);//0.565ms的低电平
data=1;
delay=842;
while(--delay);//1.685ms
}//1是由0.565的低电平和1.685的高电平组成
sendbyte(num)//发送一个字节
{unsigned char k;
for(k=0;k<8;k++)
{if(num&0x01) send1();//取出该字节的末位,如果是1则发送1
 else send0();
 num>>=1;//循环该字节
}
}
T0chu()//T0的初始化
{GATE=0x02;//T0工作在方式2
 EA=1;
 ET0=1;
 TL0=0xf3;//每13US产生中断
 TR0=1;
}
duanT0()interrupt 1
{data=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();//把发射端拉低,并持续13US
}
void main()
{
T0chu();
sendbyte(0);//开始
sendbyte(num);
sendbyte(~num);
sendbyte(0xff);//结束
}
//可能格式不对,开始和结束用一个字节0和FF好像没有什么用....
 谢谢大家能给点意见,我没有仿真工具,麻烦大家了......




杜专 发表于 2009-5-6 20:51 | 显示全部楼层

协议是人定的,也可以自己改啊,定义自己的协议程序跟好

不信你试试~!
zjh006 发表于 2009-5-7 08:26 | 显示全部楼层

载波有问题

这样应该可以
duanT0()interrupt 1
{
    data=~data;
}
 楼主| areshan 发表于 2009-5-7 10:40 | 显示全部楼层

不能直接把data取反

如果把data直接取反,那么在data为低电平时就会把电平拉高了。我想了想,这样每各13us产生中断,中断也该持续是13us,这样才能产生38k的频率,但发送1或0的周期给放大的2倍。。。。希望高手给点指点!!!
谢谢了。。。
zjh006 发表于 2009-5-7 11:34 | 显示全部楼层

你的思路有问题

只有在发送载波的时候才需要打开13us中断,中断程序里取反就可以,不发送载波的时候只需要将data=0或1(0,1由你外部的三极管决定)。
 楼主| areshan 发表于 2009-5-7 12:06 | 显示全部楼层

关于中断

我想如果每13us中断,取反data是1us,这样就不是38k的方波了,我的想法是用P3.6发射信号,再用中断来拉低电平,当发射的是高电平时,隔13us拉低,持续13us,中断返回后,又回到高电平。如果是低电平,每隔13us拉低,就没有用,还是低电平。。。。。就在发射信号上产生了38k的载波。。。。。
不知道这样的想法能不能实现....谢谢大家指导!!!
 楼主| areshan 发表于 2009-5-8 10:18 | 显示全部楼层

怎么没有人回复呢?

xinjie1023 发表于 2010-5-19 21:55 | 显示全部楼层
看看程序。
Jarrywd 发表于 2010-6-16 13:23 | 显示全部楼层
看上去红外发送比较简单,但现在才初学,还是很多问题!专程来看兄台的程序的!
skyfull045 发表于 2010-6-17 10:14 | 显示全部楼层
我做超声波,貌似很像啊
xw802 发表于 2010-8-20 16:41 | 显示全部楼层
GATE=0x02;//T0工作在方式2?????
貌似应该是TMOD=0x02吧!
zhoukok 发表于 2010-8-20 18:11 | 显示全部楼层
载波好像有问题啊,在发射数据时,你要不就确定高电平载波,要不就低电平载波
假如高电平载波,则在高电平的时候允许载波的发射,低电平则关闭载波,直接给数据端低电平
而你的载波可以用定时器做,产生38KHZ方波,此时注意占空比的调节,占空比不同,你定时器所需要的定时有出入了,总之,以最小单元为基本定时时间。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

127

主题

728

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部