📄 irshou1.c
字号:
#include<AT89x55.H>
#include <stdio.h>
#include <INTRINS.H>
//#include "Uart.h"
#define uint unsigned int
#define uchar unsigned char
sbit ir=P1^6;
sbit out=P1^7;
uchar irdata[4];
uchar *irdat;
uint count0,count1;
uchar count10,count11;
uchar t;
bit flag,flag1,flag0;
//*********************************
//t*2us 4.5ms equ 561 9ms equ 1124 0.56ms equ 69 2.5ms equ 311
//*********************************
void delay(uint t)
{ while(--t);
}
//*********************************
//
//*********************************
void checkhead()
{ while(ir==0)
{count0++;
}
if(count0>140)
{flag0=1;
}
count0=0;
if(flag0==1)
{ flag0=0;
while(ir==1)
{count1++;
}
if(count1>350)
{flag1=1;
}
count1=0;
if(flag1==1)
{flag=1;
flag1=0;
}
}
}
uchar irshou(uchar *data1)
{ //uchar data1,BitCnt,i;
uchar i,j;
checkhead();
if(flag==1)
{
// out=0;
flag=0;
//t=33;
for(i=0;i<4;i++) //共4个字节
{ //1
*data1=0;
for(j=0;j<8;j++)
{ while(ir==0)
{ count10++;
}
if(count10>20)
{(*data1)<<=1;
//out=0;
}
//0
while(ir==1)
{count11++;
}
if(count11<60)
{*data1|=1;
//out=0;
}
count10=0;
count11=0;
//out=1;
}
data1++;
//return(0);
}
}
return 0;
}
void uart_init()
{
SCON = 0xDA; // SCON: mode 1, 8-bit UART, enable rcvr */
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit reload */
TH1 = 0xFD; // TH1: reload value for 1200 baud @ 12MHz */
TR1 = 1; // TR1: timer 1 run */
TI = 1; // TI: set TI to send first char of UART */
}
void send(unsigned char ch)
{SBUF=ch;
while(TI==0);
TI=0;
}
void main()
{ uchar c1,c2;
uart_init();
while(1)
{ //checkhead();
irshou(&irdata);
//P2=irdata[2];
//P3=irdata[3];
//
if(irdata[2]==~irdata[3])
{c1=irdata[2]/10;
c2=irdata[2]%10;
send('0'+c1);
send('0'+c2);
//send(irdata[2]);
}
//out=1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -