2.12

#include<reg52.h>
#include"./uart/uart.h"


sbit IR_IN = P3^2;


unsigned int irtime;
bit irok = 0,irpro_ok=0;
bit startflag = 0;
unsigned char buf[33];
unsigned char irdata[33];
unsigned char bitnum = 0;


void int0_init()
{
    IT0 = 1; //设置外部中断的触发方式
EA = 1;
EX0 = 1;


}


void timer0_init()
{
    EA = 1;
TMOD |= 0x02;
TH0 = 0;
ET0 = 1;
TR0 = 1;
}


void timer0_isr() interrupt 1
{
   irtime++;//0.256ms  引导码 13.5/0.256 = 52 1.12/0.256 = 4   0.56+1.685/0.256 = 8


}


void Ircordpro()
{
     unsigned char i;
     for(i = 0;i < 32; i++)
{
     if(irdata[i+1] <= 6 +'0')
 {
      buf[i] = 0 + '0';
 }
 else
 {
      buf[i] = 1 + '0';
 }
}
buf[32] = '\0';
irpro_ok=1;
}


void main()
{
    timer0_init();
int0_init();
uart_init();
    while(1)
{
   if(irok == 1)
{
   Ircordpro();
irok = 0;
}
if(irpro_ok == 1)
{
     uart_send_string(buf);
 uart_send_byte('\n');
 irpro_ok = 0;
}
}
}


void int0_isr() interrupt 0
{
    if(startflag)
{
if(irtime>=40&&irtime<=60)
{
   bitnum = 0;

irdata[bitnum] = irtime + '0';
bitnum++;
irtime = 0;
if(bitnum == 33)
{
   irok = 1;
irdata[33] = '\0';
bitnum = 0;
startflag = 0;
}
}
else
{
   irtime = 0;
startflag = 1;
}
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值