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

📄 text.lst

📁 这是我以前做过的51单片机实验代码
💻 LST
字号:
C51 COMPILER V8.08   TEXT                                                                  04/15/2008 17:37:26 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE TEXT
OBJECT MODULE PLACED IN Text.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Text.c BROWSE DEBUG OBJECTEXTEND

line level    source

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

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

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

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


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    550    ----
   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 + -