红外解码

来源:互联网 发布:淘宝的评论管理在哪里 编辑:程序博客网 时间:2024/04/28 10:49
#include<reg52.h>#include"./uart/uart.h"sbit IR_IN = P3^2;unsigned int irtime;bit irok = 0;bit startflag = 0;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 main(){    timer0_init();    int0_init();    uart_init();    for(bitnum = 1;bitnum < 33;bitnum++)    {        if(irdata[bitnum] <= 6)        {            irdata[bitnum] = 0 + '0';        }            else        {            irdata[bitnum] = 1 + '0';        }    }    while(1)    {        if(irok == 1)        {            for(bitnum = 0;bitnum < 33;bitnum++)            {            uart_send_byte(irdata[bitnum]);            }            uart_send_byte("\r\n");            irok = 0;        }    }}void int0_isr() interrupt 0{    if(startflag)    {        if(irtime>=40&&irtime<=60)        {            bitnum = 0;        }         irdata[bitnum] = irtime;        bitnum++;        irtime = 0;        if(bitnum == 33)        {            irok = 1;            irdata[33] = '\0';            bitnum = 0;            startflag = 0;        }    }    else    {        irtime = 0;        startflag = 1;    }}
0 0
原创粉丝点击