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

📄 红外电视遥控器.lst

📁 此程序是有关红外的程序 mcu用啊他89c52 采用外部中断0接一体化红外接受头038 (就是影碟机上拆得的) P0 P2接数码管 P0数据 P2位选 能显示遥控器的系统码及其反码 数据及
💻 LST
字号:
C51 COMPILER V7.50   红外电视_?_芲                                                        05/30/2007 22:57:49 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 红外电视_?_芲
OBJECT MODULE PLACED IN 红外电视遥控器.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE 红外\红外电视遥控器\红外电视遥控器.c BROWSE DEBUG OBJECTEXTEN
                    -D PRINT(.\红外电视遥控器.lst) OBJECT(红外电视遥控器.obj)

line level    source

   1           
   2           //    用AT89S51 单片机制作红外电视遥控器     
   3          #include   <reg51.h> 
   4          
   5          sbit OUT=P3^4;
   6          
   7          static   bit   OP;     //红外发射管的亮灭 
   8          static   unsigned    int   count;    //延时计数器 
   9          static   unsigned    int   endcount;  //终止延时计数 
  10          static   unsigned    char   flag;   //红外发送标志 
  11          char   iraddr1;   //十六位地址的第一个字节 
  12          char   iraddr2;   //十六位地址的第二个字节 
  13          
  14          void   SendIRdata(char   p_irdata); 
  15          void   delay(); 
  16          
  17          void   main(void) 
  18          { 
  19   1        count   =  0; 
  20   1        flag    =  0; 
  21   1        OP      =  0; 
  22   1        OUT     =  0;      
  23   1        EA      =  1; //允许CPU 中断 
  24   1        TMOD    =  0x11;   //设定时器0 和 1 为 16 位模式 1 
  25   1        ET0     =  1; //定时器0 中断允许 
  26   1        TH0     =  0xFF; 
  27   1        TL0     =  0xE6;  //设定时值0 为38K              也就是每隔26us 中断一次 
  28   1        TR0     =  1;//开始计数 
  29   1      
  30   1        iraddr1=3; 
  31   1        iraddr2=252; 
  32   1      
  33   1        do{     delay(); 
  34   2                SendIRdata(12);   }  while(1);          } 
  35          
  36          //定时器0 中断处理 
  37          void   timeint(void)   interrupt   1 
  38          { 
  39   1        TH0=0xFF; 
  40   1        TL0=0xE6;      //设定时值为38K             也就是每隔26us 中断一次 
  41   1        count++; 
  42   1      
  43   1        if(flag==0) OP=~OP;  
  44   1        else     OP=  0; 
  45   1        OUT    =  OP; 
  46   1                                       } 
  47          
  48          void   SendIRdata(char   p_irdata) 
  49          { 
  50   1        int   i; 
  51   1        char  irdata=p_irdata; 
  52   1      
  53   1        //发送9ms 的起始码 
  54   1        endcount=223; 
C51 COMPILER V7.50   红外电视_?_芲                                                        05/30/2007 22:57:49 PAGE 2   

  55   1        flag=1; 
  56   1        count=0; 
  57   1        do{}while(count<endcount); 
  58   1      
  59   1        //发送4.5ms 的结果码 
  60   1        endcount=117; 
  61   1        flag=0; 
  62   1       
  63   1      count=0; 
  64   1      do{}while(count<endcount); 
  65   1      
  66   1      //发送十六位地址的前八位 
  67   1      irdata=iraddr1; 
  68   1      for(i=0;i<8;i++) 
  69   1      { 
  70   2      
  71   2         //先发送0.56ms 的38KHZ 红外波(即编码中0.56ms 的低电平) 
  72   2        endcount=10; 
  73   2         flag=1; 
  74   2         count=0; 
  75   2          do {}while(count<endcount); 
  76   2      
  77   2       //停止发送红外信号(即编码中的高电平) 
  78   2       if(irdata-(irdata/2)*2)   //判断二进制数个位为 1 还是 0 
  79   2        { 
  80   3          endcount=41;      //1 为宽的高电平 
  81   3         } 
  82   2       else 
  83   2         { 
  84   3         endcount=15;     //0 为窄的高电平 
  85   3        } 
  86   2       flag=0; 
  87   2       count=0; 
  88   2       do{}while(count<endcount); 
  89   2      
  90   2       irdata=irdata>>1; 
  91   2      } 
  92   1      
  93   1      //发送十六位地址的后八位 
  94   1      irdata=iraddr2; 
  95   1       for(i=0;i<8;i++) 
  96   1      { 
  97   2        endcount=10; 
  98   2        flag=1; 
  99   2        count=0; 
 100   2        do{}while(count<endcount); 
 101   2      
 102   2        if(irdata-(irdata/2)*2) 
 103   2         { 
 104   3          endcount=41; 
 105   3         } 
 106   2        else 
 107   2        { 
 108   3          endcount=15; 
 109   3         } 
 110   2         flag=0; 
 111   2        count=0; 
 112   2         do{}while(count<endcount); 
 113   2      
 114   2        irdata=irdata>>1; 
 115   2      } 
 116   1      
C51 COMPILER V7.50   红外电视_?_芲                                                        05/30/2007 22:57:49 PAGE 3   

 117   1                                 
 118   1      
 119   1      //发送八位数据 
 120   1       irdata=p_irdata; 
 121   1       for(i=0;i<8;i++) 
 122   1       { 
 123   2         endcount=10; 
 124   2         flag=1; 
 125   2         count=0; 
 126   2         do{}while(count<endcount); 
 127   2      
 128   2         if(irdata-(irdata/2)*2) 
 129   2         { 
 130   3            endcount=41; 
 131   3         } 
 132   2         else 
 133   2         { 
 134   3           endcount=15; 
 135   3         } 
 136   2         flag=0; 
 137   2         count=0; 
 138   2         do{}while(count<endcount); 
 139   2      
 140   2         irdata=irdata>>1; 
 141   2       } 
 142   1      
 143   1       //发送八位数据的反码 
 144   1       irdata=~p_irdata; 
 145   1       for(i=0;i<8;i++) 
 146   1       { 
 147   2         endcount=10; 
 148   2         flag=1; 
 149   2         count=0; 
 150   2         do{}while(count<endcount); 
 151   2      
 152   2         if(irdata-(irdata/2)*2) 
 153   2         { 
 154   3             endcount=41; 
 155   3         } 
 156   2         else 
 157   2         { 
 158   3          endcount=15; 
 159   3         } 
 160   2          flag=0; 
 161   2         count=0; 
 162   2         do{}while(count<endcount); 
 163   2      
 164   2         irdata=irdata>>1; 
 165   2       } 
 166   1      
 167   1      endcount=10; 
 168   1       flag=1; 
 169   1       count=0; 
 170   1       do{}while(count<endcount); 
 171   1      
 172   1                                               
 173   1                    
 174   1      
 175   1        flag=0; 
 176   1      } 
 177          
 178          void   delay() 
C51 COMPILER V7.50   红外电视_?_芲                                                        05/30/2007 22:57:49 PAGE 4   

 179          { 
 180   1        int   i,j; 
 181   1        for(i=0;i<400;i++) 
 182   1        { 
 183   2         for(j=0;j<100;j++) 
 184   2         { 
 185   3         } 
 186   2        } 
 187   1      } 
 188          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    549    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7    ----
   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 + -