2.18

#include<reg52.h>


sbit IR=P3^2;


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


void uart_init()
{
     SCON = 0x50;  //设置串口工作方式
//TMOD &= 0x0F;
TMOD |= 0x20;
TH1 = 0xFD; //9600
ET1 = 0;
// EA = 1;
TR1 = 1;
 
}


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


void Timer0_isr() interrupt 1
{
     irtime++;   //256us  引导码 0:1.12/0.56=4   1:2.24/0.256=9
}


void Int0_init()
{
     IT0 = 1;
EA = 1;
EX0 = 1;
}




void Int0_isr() interrupt 0   //中断服务函数
{
     if(startflag)
{
     if((irtime >= 40)&&(irtime <= 60))
 {
      bitnum = 0;
 }
 irdata[bitnum] = irtime + '0';
 bitnum++;
 irtime = 0;
 if(bitnum == 33)
 {
      irdata[bitnum] = '\0';
      bitnum = 0;
  irok = 1;
  startflag = 0;
 }
}
else
{
     startflag = 1;
     irtime = 0;
}
}


void uart_send_byte(unsigned char byte)
{
     SBUF = byte; //TI位自动置1,手动清零
while(!TI);
TI = 0;
}


void uart_send_string(unsigned char *temp)
{
     while(*temp)
{
    uart_send_byte(*temp);
temp++;
}



void main()
{
uart_init();
Int0_init();
Timer0_init();


     while(1)
{
     if(irok == 1)
 {
     uart_send_string(irdata);
 uart_send_byte('\n'); 
     //Ircordpro();
     irok = 0; 
 }
 /*if(irpro_ok == 1)
 {
     uart_send_string(buf);
 } */
}


}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值