单片机红外遥控程序beta

来源:本站
导读:目前正在解读《单片机红外遥控程序beta》的相关信息,《单片机红外遥控程序beta》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《单片机红外遥控程序beta》的详细说明。
简介:本文给大家分享了单片机红外遥控程序beta代码。

#include#define uchar unsigned char#define uint unsigned intuchar code table[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};   //定义数字显示sbit remote=P3^3; //定义中断源外中断3.3int count=0;  //定义全局变量计数计时器bit get_over;  //定义读取数据结束int dat[33],ircode[4]; //第一个是直接读取数据,第二个是解码之后的数据void ini_rem(void);                  //遥控器的初始化void ini_other(void);                      //其他设定初始化void exchange(void);      //编码转换//void timer0(void) interrupt 0          //计时器0中断,计时计算上升沿个数来测定1,0,和开始结束码//void ex_rem(void) interrupt 4       //外中断1,通过上升沿来让定时器计时void dis(void);       //显示函数void delay(uint z);         //显示延时函数main(){    ini_other(); ini_rem(); while(1) {  if(get_over==1)  {    exchange();   dis();   get_over=0;  } }}void ini_other(){    EA=1;                  //总中断              ET0=1;                    //定时器0中断    TR0=1;                    //定时器0中断    TMOD=0X01;                      //定时器状态 定时器0方式1,16位计数器    TH0=(65535-300)/256;            //初值设定为300us=0.30ms    TL0=(65535-300)%6;                EX1=1;                           //开启外部中断 1    IT1=1;                           // 设置成 下降沿触发方式   (为0时为低电平触发) PX1=1;       //将外中断设置为高优先级}ex_rem(void) interrupt 2{ bit flag;    int i=0; EX1=0;    if(flag) {    if(count>=27&&count<=33)     // 引导码接受成功  {       i=0;         //给计数标志位  }    dat[i]=count;        //将计时数存入,备用处理  count=0;         //计数清零  i++;          //下一次的计时数    if(i==33)         //如果一次信号32位全部OK  {   i=0;         //给计数标志位     get_over=1;        //置计数标志  }  else  {   count=0;        //否则计数清零,置标志位,继续   flag=1;  } }     EX1=1;} void timer0(void) interrupt 1{    TH0=(65535-500)/256;    TL0=(65535-500)%6;    //TMOD=0X01;    count++;}void exchange(void)      //编码子程序从第三个数据开始{  unsigned char i,j,k,val,tmp1;  k=1;   for(i=0;i<4;i++) {  for(j=0;j<8;j++)    {    tmp1=dat[k];        if(tmp1>4)     val=val|0x80;    else val=val;        if(j<8)     val=val>>1;        k++;  }    ircode[i]=val;  val=0; }}void dis()  //显示子程序 OK{    P1=0XF0;    P2=table[ircode[2]/10];    delay(1);    P1=0xF1;    P2=table[ircode[2]];    delay(1);  }void delay(uint z)       //延时子函数{    uint x,y;    for(x=z;x>0;x--)        for(y=110;y>0;y--);}

提醒:《单片机红外遥控程序beta》最后刷新时间 2024-03-14 01:01:21,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《单片机红外遥控程序beta》该内容的真实性请自行鉴别。