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

📄 at89c51.lst

📁 DS18B20温度采集然后红外发射出去,接收板接收红外并LCD显示接收的数据信息,有完整的发射接收程序
💻 LST
字号:
C51 COMPILER V7.50   AT89C51                                                               04/06/2008 20:32:16 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE AT89C51
OBJECT MODULE PLACED IN .\obj\AT89C51.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE src\AT89C51.c BROWSE DEBUG OBJECTEXTEND PRINT(.\lst\AT89C51.lst) OBJECT(.\o
                    -bj\AT89C51.obj)

line level    source

   1          #include <reg51.h>
   2          #include <math.h>
   3          
   4          #include "AT89C51.h"
   5          uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xb9,0xbf};
   6          uchar count=0;
   7          ///////////////////空闲延时函数///////////////16us*k+24////////////////////////
   8          void KX_delay1(long k)//延时程序,k是形式参数
   9          {
  10   1       uint  i;
  11   1       for(i=0;i<k;i++);    
  12   1      }
  13          
  14          ////////////////数据发送函数////////////////////////////////////////////////////////////////////////////
  15          bit Send_Data(uchar z,uchar y)
  16          {
  17   1        if(    (Send_leader())&&    ////引导码发送成功/////
  18   1           (Send_user_data(z))&&////用户码发送成功////
  19   1           (Send_user_data(y)) )  return (1);/////数据码发送成功////3者都发送成功,则返回1///
  20   1          else return(0);                   ///////否则数据发送失败////////
  21   1      }
  22          /////////////////////引导码发送函数///////////////////////////////////////////////////////////////////////
             -/
  23          bit  Send_leader(void)
  24          {
  25   1       count=6;//调试值////count是个全局变量//引导码宽度为M*500us//
  26   1       TR0=1;  ///打开定时/计数器0开始运行//
  27   1       TR1=1; ////打开定时/计数器1开始运行//
  28   1       //P34=0;  ////此句可要可不要////
  29   1       while(TR0==1);////脉冲没有结束,等待//////
  30   1       KX_delay1(N);/////脉冲结束后,有大概多长时间的宽度,根据实际情况调整///////
  31   1       //KX_delay1(30);//延时1秒左右//用于调试////
  32   1       return(1);
  33   1      }
  34          /////////////////////用户码和数据码发送函数(包含其反码)/////////////////////////////////////////////////
             -///////////////////////
  35          bit Send_user_data(uchar z1)
  36          {
  37   1       // uchar i,j=8;////注意这样只对j赋值为8,要全部赋值应该为uchar i=8;uchar j=8;或 uchar j;uchar i=j=8;/////
             -/////
  38   1      ///////////////直接uchar i=j=8;也不正确///////////////
  39   1       uchar z2;
  40   1       uchar i=8;
  41   1       uchar j=8;
  42   1       z2=~z1;    ////z1的反码传给z2////////
  43   1       while(i--)
  44   1        {
  45   2          if((z1&0x80)==0x80) Send_bitdata_1();/////先发高位,后发低位//////
  46   2           else  Send_bitdata_0();
  47   2          // KX_delay1(30);//延时1秒左右//用于调试////
  48   2          z1=z1<<1;
  49   2        }
  50   1        while(j--)
  51   1        {
C51 COMPILER V7.50   AT89C51                                                               04/06/2008 20:32:16 PAGE 2   

  52   2          if((z2&0x80)==0x80) Send_bitdata_1();
  53   2           else  Send_bitdata_0();
  54   2           //KX_delay1(30);//延时1秒左右//用于调试////
  55   2          z2=z2<<1;
  56   2        }
  57   1       return (1);
  58   1      }
  59          /////////////////////发送位数据0函数//////////////////////////////////////////////////////////////////////
             -//
  60          void Send_bitdata_0(void)
  61          {
  62   1       count=1;//调试值//count是全局变量//定义逻辑0为1000us的脉宽//
  63   1       TR0=1;  ///打开定时/计数器0开始运行//
  64   1       TR1=1; ////打开定时/计数器1开始运行//
  65   1       //P34=0; ////此句可要可不要////
  66   1       while(TR0==1);////脉冲没有结束,等待//////
  67   1       KX_delay1(N);//////////脉冲结束后,有大概多长时间的宽度,根据实际情况调整///////
  68   1      }
  69          
  70          /////////////////////发送位数据1函数//////////////////////////////////////////////////////////////////////
             -//
  71          void Send_bitdata_1(void)
  72          {
  73   1       count=3;//调试值//count是全局变量//定义逻辑1为2000us的脉宽//
  74   1       TR0=1;  ///打开定时/计数器0开始运行//
  75   1       TR1=1; ////打开定时/计数器1开始运行//
  76   1      // P34=0; ////此句可要可不要////
  77   1       while(TR0==1);////脉冲没有结束,等待//////
  78   1       KX_delay1(N);//////////脉冲结束后,有大概多长时间的宽度,根据实际情况调整///////
  79   1      }
  80          ////////////////////AT89C51初始化函数/////////////////////////////////////////////////////////////////////
             -////
  81          void AT89C51_initialize(void)
  82          {  
  83   1        TMOD=0x21;    //确定定时器0和定时器1的工作模式
  84   1        TH0=0xfe;      ///定时器0定时500us////
  85   1        TL0=0x0c;
  86   1        TH1=0xf3;      ///定时器1定时13us////
  87   1        TL1=0xf3;
  88   1        EA=1;             //开总中断允许//
  89   1        ET0=1;                //开定时/计数器0允许/
  90   1        ET1=1;                //开定时/计数器0允许//
  91   1        P34=0;        ////置0使发光二极管处于熄灭状态//////
  92   1      }
  93          ////////////////////////////////////////////////////////////////////////////////////////////
  94          ///////////////////////////////////////////////////////////////////////////////
  95          ////////////////////数码管显示程序//////////////////////////////////////////////
  96          void display(uchar z)
  97          {
  98   1       // uchar m,t,k;
  99   1      // if(z<=125){t=10;k=z;}
 100   1       //   else{t=11;k=z-125;}
 101   1           uchar m;
 102   1              for(m=0;m<100;m++)
 103   1                      {
 104   2                 //      P1=tab[t];
 105   2                   //    LED0=1;
 106   2                    //   LED1=0;
 107   2                    //   LED2=0;
 108   2                    //   LED3=0;
 109   2                    //   delay();
 110   2                    //   LED0=0;
C51 COMPILER V7.50   AT89C51                                                               04/06/2008 20:32:16 PAGE 3   

 111   2      
 112   2                       P1=tab[z/100];
 113   2                       LED0=0;
 114   2                       LED1=1;
 115   2                       LED2=0;
 116   2                       LED3=0;
 117   2                       delay();
 118   2                       LED1=0;
 119   2              
 120   2                       P1=tab[z%100/10];
 121   2                       LED0=0;
 122   2                       LED1=0;
 123   2                       LED2=1;
 124   2                       LED3=0;
 125   2                       delay();
 126   2                       LED2=0;
 127   2      
 128   2                       P1=tab[z%10];
 129   2                        LED0=0;
 130   2                        LED1=0;
 131   2                        LED2=0;
 132   2                        LED3=1;
 133   2                        delay();
 134   2                        LED3=0;                
 135   2                      }
 136   1      }
 137          /////////////////数码管显示程序结束/////////////////////////////////////////////
 138          ///////////////////////////////////////////////////////////////////////////////
 139          
 140          void delay()
 141          {
 142   1       unsigned int  i,j;
 143   1       for(i=0;i<15;i++)
 144   1          for(j=0;j<15;j++);
 145   1         
 146   1      }
 147          ///////////////////////////////////////////////////////////////////////////////
 148          
 149          
 150           
 151          


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


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

⌨️ 快捷键说明

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