⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jiema.lst

📁 这是一个红外解码的程序
💻 LST
字号:
C51 COMPILER V7.06   JIEMA                                                                 03/06/2007 00:27:26 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE JIEMA
OBJECT MODULE PLACED IN jiema.OBJ
COMPILER INVOKED BY: F:\keil c51\C51\BIN\C51.EXE jiema.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg51.h>
   2          #define uint unsigned int
   3          #define uchar unsigned char
   4          void delay(uint k);//延时
   5          void add(void);  //把数组转化为地址码和数据码 
   6          void addled(void);  //计算出led要显示的数
   7          void display(void);//led显示
   8          void count(void);
   9          uchar  SEG7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳
  10          uchar  scan_led[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //片选 高平亮
  11          uchar led[8]={1,2,3,4,5,6,7,8};    //每位led要显示的数
  12          sbit P32=P3^2;
  13          bit finish;//结束标志位
  14          uchar tt[33];
  15          uchar j,t;
  16          uchar data1,data2,address1,address2;
  17          void main(void)
  18          { 
  19   1        TH0=0;TL0=0;
  20   1        TMOD=0x19;
  21   1        TR0=0;
  22   1        EX0=1;//允许中断
  23   1        IT0=1;//下降沿中断
  24   1        TH1=252;TL1=0;
  25   1        ET1=1;
  26   1        TR1=1;
  27   1        PT1=1;
  28   1        EA=1;
  29   1        while(1){
  30   2         if(finish==1){finish=0;
  31   3                       add();
  32   3                       //addled();
  33   3                        count();
  34   3                                       }
  35   2         }
  36   1      }
  37          ////////////////////////////////////////////
  38          void delay(uint k)//延时
  39          {k=k*8;
  40   1       while(--k);
  41   1       }
  42          //////////////////////////////////
  43          void int0()interrupt 0
  44          {uchar i;
  45   1       EX0=0;
  46   1       TR0=1;
  47   1       while(P32==0);
  48   1       while(P32==1){if(TH0>20)break;}//时间大于5.3ms时就退出
  49   1       TR0=0;
  50   1       t=(TH0*256+TL0)/100;
  51   1       TH0=0;TL0=0;
  52   1       tt[0]=t;
  53   1       //if(t>42&&t<48){
  54   1       for(i=1;i<=32;i++)
  55   1                         { 
C51 COMPILER V7.06   JIEMA                                                                 03/06/2007 00:27:26 PAGE 2   

  56   2                                         TR0=1;
  57   2                                           while(P32==0);
  58   2                           while(P32==1){if(TH0>20)break;}//时间大于2.7ms时就退出
  59   2                           TR0=0;
  60   2                                           t=(TH0*256+TL0)/100;
  61   2                           TH0=0;TL0=0;
  62   2                           //if(t>4&&t<7)
  63   2                                               tt[i]=t;   //0.56ms为0
  64   2                                           //if(t>15&&t<18)
  65   2                                               //tt[i]=1;//1.68ms为1
  66   2                                               TH0=0;TL0=0;
  67   2                                         }
  68   1                       finish=1;
  69   1                              //      }
  70   1       EX0=1;
  71   1      }
  72          ///////////////////////////////////////////
  73          void add(void)   //把数组转化为地址码和数据码 
  74          {uchar i;
  75   1       address1=0;
  76   1       address2=0;
  77   1       data1=0;
  78   1       data2=0;//清0
  79   1       for(i=8;i>0;i--)
  80   1              {address1=(address1<<1)|tt[i];
  81   2               address2=(address2<<1)|tt[i+8];
  82   2               data1=(data1<<1)|tt[i+16];
  83   2               data2=(data2<<1)|tt[i+24];
  84   2              }
  85   1       }
  86          ///////////////////////////////////////////
  87          void addled(void)   //计算出led要显示的数
  88          {if((data1+data2)==0xff)//数据码和反码的检验
  89   1         {led[7]=address1>>4;//取高位
  90   2              led[6]=address1&0x0f;//取低位
  91   2              led[5]=address2>>4;
  92   2          led[4]=address2&0x0f;
  93   2          led[3]=data1>>4;
  94   2          led[2]=data1&0x0f;
  95   2          led[1]=data2>>4;
  96   2          led[0]=data2&0x0f;
  97   2              }
  98   1      }
  99          //////////////////////////////////////////      
 100          void display(void)//led显示
 101          {  P0=0xff;
 102   1         P2=scan_led[j]; //片选扫瞄
 103   1         P0=SEG7[led[j]]; //共阳段显
 104   1         j++;
 105   1         if(j>=8)j=0;  
 106   1       }
 107          ////////////////////////
 108          void timer1()interrupt 3
 109          {TH1=245;TL1=0;
 110   1       display();
 111   1       }
 112          ////////////////////////////
 113          void count(void)
 114          {led[7]=tt[0]/10;
 115   1       led[6]=tt[0]%10;
 116   1       led[5]=tt[1]/10;
 117   1       led[4]=tt[1]%10;
C51 COMPILER V7.06   JIEMA                                                                 03/06/2007 00:27:26 PAGE 3   

 118   1       led[3]=tt[2]/10;
 119   1       led[2]=tt[2]%10;
 120   1       led[1]=tt[3]/10;
 121   1       led[0]=tt[3]%10;
 122   1       }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    478    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     65    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -