**/
**/
*/
**/
户码并显示 .
/****************************************************************
void EX0init(void) {
IT0 = 1; //指定外部中断0下降沿触发,INT0 (P3.2) EX0 = 1; //使能外部中断 EA = 1; //开总中断 }
/****************************************************************
/* 红外键值处理 /****************************************************************
void Ir_work(void) //红外键值散转程序 {
TimeNum[5] = Tab[IRcord[0]/16]; //处理客
TimeNum[6] = Tab[IRcord[0]];
.
户码并显示
据码并显示
据反码并显示值
位
**/
*/
.
TimeNum[8] = Tab[IRcord[1]/16]; //处理客
TimeNum[9] = Tab[IRcord[1]];
TimeNum[11] = Tab[IRcord[2]/16]; //处理数
TimeNum[12] = Tab[IRcord[2]];
TimeNum[14] = Tab[IRcord[3]/16]; //处理数
TimeNum[15] = Tab[IRcord[3]];
ShowString(1,TimeNum);//显示处理过后的码
irpro_ok=0; //处理完成后清楚标志
}
/****************************************************************
/* 红外解码函数处理 .
.
/****************************************************************
**/
void Ircordpro(void)//红外码值处理函数 {
unsigned char i, j, k; unsigned char cord,value; k=1;
for(i=0;i<4;i++) //处理4个字节 {
for(j=1;j<=8;j++) //处理1个字节8位 {
cord=irdata[k];
if(cord>7)//大于某值为1,这个和晶振有绝
对关系,这里使用12M计算,此值可以有一定误差
{
value=value|0x80;
}
else
.
.
{
value=value;
}
if(j<8) **/
{ value=value>>1;
}
k++; }
IRcord[i]=value; value=0;
} irpro_ok=1;//处理完毕标志位置1 }
/****************************************************************
.
.
/* 微秒延时函数
*/
**/
**/
*/
**/
/****************************************************************
void DelayUs(unsigned char us)//delay us {
unsigned char uscnt;
uscnt=us>>1;/* Crystal frequency in 12MHz*/ while(--uscnt); }
/****************************************************************
/* 毫秒函数声明 /****************************************************************
void DelayMs(unsigned char ms)//delay Ms {
while(--ms) {
DelayUs(250);
.
基于单片机的红外线遥控器设计
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)