IR发射C语言驱动程序
时间:11-30 16:00 阅读:675次
*温馨提示:点击图片可以放大观看高清大图
简介:在这里给大家提供一个基于IR发射C语言的驱动程序。
#include <stdio.h>
#include <AT892051.H>
#include<INTRINS.H>
sbit LED=P1^7;
sbit Key=P1^0;
//帧数据放数组Data里
unsigned char counter=0;
unsigned char Data[5]={0x55,0xff,0x00,0xaa,0x0f};
void Transmit(int c1,int c2); //发射子程序
//
void delay()
{
int i;
for(i=75000;i>0;i--);
}
void scan_key()
{
while(1)
{
if(Key==0)
{
delay();
if(Key==0)
{
counter++;
if(counter>=4)
counter=0;
break;
}
else
LED=0; //没键按下,等待
}
}
}
void send_code()
{
unsigned char j;
Transmit(143,38); //发射引导码
//for(i=0;i<4;i++)
//{
for(j=0;j<8;j++) //发射帧数据
{
if((Data[counter]>>j)&1)
Transmit(75,38); //'1'码
else
Transmit(38,38); //'0'码
}
Transmit(285,38);
LED=0;
//}
while(Key==0); //等待释放按键
}
//****************************************
main()
{
LED=0;
while(1)
{
scan_key();
send_code();
delay();
delay();
delay();
}
}
//****************************************
void Transmit(int c1,int c2) //c1为高电平宽度
{
unsigned char i; //c2为低电平宽度
LED=0;
do{
LED=0; //产生38kHz载波
for(i=3;i>0;i--); //延时18us
LED=1;
for(i=5;i>0;i--); //延时18us
//_nop_();
}while(--c1);
LED=0;
do{
for(i=8;i>0;i--);
}while(--c2);
}