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

📄 16位数据编码.lst

📁 基于51单片机的控制的红外线通信
💻 LST
字号:
C51 COMPILER V7.08   16位数据盻码                                                          08/23/2007 13:20:44 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE 16位数据盻码
OBJECT MODULE PLACED IN 16位数据编码.OBJ
COMPILER INVOKED BY: D:\单片机~1\C51\Bin\c51.exe 16位数据编码.c DB OE SMALL ROM(LARGE)

line level    source

*** WARNING C500 IN LINE 1 OF 16位数据编码.C: MISSING DEVICE (SECURITY KEY NOT FOUND)
   1          #include<reg52.h>
   2          #define uchar unsigned char     //预定义字符
   3          #define uint  unsigned  int  
   4                        
   5          sbit flag=P3^4;        //发射输出端
   6          uint count;    //延时计数器
   7          uint endcount; //终止延时计数
   8          
   9          void SendIRdata(uchar addr,uint r_data);
  10          void delay();
  11          
  12          //-----------------------主程序------------------------
  13          
  14          void main(void) 
  15          {
  16   1        count=0;
  17   1        flag=1;
  18   1        
  19   1        EA=1; //允许CPU中断 
  20   1        TMOD=0x11; //设定时器0和1为16位模式1 
  21   1        ET0=1; //定时器0中断允许 
  22   1      
  23   1      
  24   1        TH0=0xFF; 
  25   1        TL0=0xE6; //设定时值0为38K 也就是每隔26us中断一次  
  26   1        TR0=1;//开始计数
  27   1      
  28   1        do{
  29   2            delay();
  30   2            SendIRdata(0x7e,0xffff);
  31   2          }while(1);
  32   1      } 
  33          
  34          //------------------------------定时器0中断处理--------------------------------------- 
  35          
  36          void timeint(void) interrupt 1 using 2
  37          { 
  38   1        TH0=0xFF; 
  39   1        TL0=0xE6; //-----------设定时值为38K也就是每隔26us中断一次
  40   1        count++;
  41   1      } 
  42          
  43          //----------------------------发送程序----------------------------------------------
  44          
  45          void SendIRdata(uchar r_addr,uint r_data)
  46          {
  47   1        uchar i;
  48   1        uint  temp=r_data;
  49   1        //---------------发送9ms的起始码
  50   1        endcount=223;
  51   1        flag=0;
  52   1        count=0;
  53   1        do{}while(count<endcount);
  54   1      
C51 COMPILER V7.08   16位数据盻码                                                          08/23/2007 13:20:44 PAGE 2   

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

 117   2           flag=0;
 118   2           count=0;
 119   2           do{}while(count<endcount);
 120   2      
 121   2           if(r_data-(r_data/2)*2)
 122   2           {
 123   3               endcount=41;
 124   3           }
 125   2           else
 126   2           {
 127   3             endcount=15;
 128   3           }
 129   2           flag=1;
 130   2           count=0;
 131   2           do{}while(count<endcount);
 132   2      
 133   2           r_data=r_data>>1;
 134   2        }
 135   1      
 136   1        endcount=10;
 137   1        flag=0;
 138   1        count=0;
 139   1        do{}while(count<endcount);
 140   1        flag=1;
 141   1      }
 142          
 143          //-------------------------------------------延时程序----------------------------------
 144          void delay()
 145          {
 146   1        uint i,j;
 147   1        for(i=0;i<400;i++)
 148   1        {
 149   2          for(j=0;j<100;j++){}
 150   2        }
 151   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    420    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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