|
接触到红外遥控,先写了个简单的测试程序,有点问题,就是找不到问题在哪
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit IR=P3^2;
uint count;
ulong abc;
void InfraredRayMgrRemoteInit(void)
{
TMOD = 0x09;
TH0 = 0;
TL0 = 0;
IT0 = 1; //设定中断1为边沿触发方式
EX0 = 1; //开启开部中断1
EA =1; //开启中断
}
void main (void)
{
InfraredRayMgrRemoteInit();
IR=1;
P2=0XFF;
while(1)
{
if(abc==0x00ff16e9)P2=0; // 00 ff为地址码和反码,16是某一键的碥码,e9当然是反码喽
}
}
void InfraredRayMgrINT1Data(void) interrupt 0 //在这个中断中我没有去考虑前导的9ms和4.5ms
{
TR0=0;
count=((uint)TH0 <<8)|TL0;
TH0=0;
TL0=0;
TR0=1;
if(count<0xbb8) //0xbb8=3000, 排除4.5ms
{
abc = abc >> 1;
if((count>=0x05c8)&&(count<=0x0758)) //1480--1880us
abc = abc|0x80000000;
}
}
脉宽0:560us 1:1680us 首先,硬件肯定没问题,但代码上望各路高人帮我再找找问题,谢! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|