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

📄 guding.lst

📁 程序功能: 用温度传感器DS18B20读取外界温度,然后用单片机读取传感器里面的两个装 有温度值的寄存器温度.最后用单片机处理,将数值显示在数码管上.
💻 LST
字号:
C51 COMPILER V7.06   GUDING                                                                10/24/2006 10:47:06 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE GUDING
OBJECT MODULE PLACED IN guding.OBJ
COMPILER INVOKED BY: D:\keil 7.06\C51\BIN\C51.EXE guding.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*======缩写说明=========
   2          PB---判别
   3          SF---是否
   4          ZL---指令
   5          SJ---数据
   6          QD---确定
   7          WZ---位置       
   8          ========================*/
   9          #include<reg51.h>
  10          #define uchar unsigned char
  11          #define uint unsigned int
  12          
  13          void Delay5Ms(void);
  14          
  15          sbit    RS = P1^0;            // P10口接4脚,1-数据寄存器,0-指令寄存器
  16          sbit    RW = P1^1;            // P11口接5脚,1-读操作,0-写操作
  17          sbit    E  = P1^2;            // P12口接6脚,使能
  18          
  19          
  20          extern uchar m,n,k,l;
  21          void ReadTemperature(); 
  22          
  23          uchar lcd_show_date[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
  24          
  25          
  26          /*=========================
  27            读忙子程序 RS=0 RW=1 E=1
  28            =========================*/
  29           bit  PB_busy(void)
  30          {  
  31   1       uchar temp ;
  32   1       bit  busy=1;
  33   1       RS=0;
  34   1       RW=1;
  35   1       E=1;   
  36   1       while(busy)
  37   1              {
  38   2                      E = 0 ;
  39   2                      temp = P2 ;
  40   2                      E = 1 ;                         //读忙
  41   2                      temp = temp & 0x80;
  42   2                      if(temp)    busy=1;         //当检测到忙,则一直检测,程序进入循环
  43   2                      else    busy=0;         //等待不忙
  44   2              }
  45   1          return busy;                        //返回忙标志,可能有用
  46   1                 
  47   1      }
  48          
  49          
  50           /*==========================
  51           写指令子程序 RS=0 RW=0 E=1
  52           ============================*/
  53          void  Write_ZL(uchar ZL)
  54          {   
  55   1       if(  !PB_busy()  )                     //判断不忙则写指令
C51 COMPILER V7.06   GUDING                                                                10/24/2006 10:47:06 PAGE 2   

  56   1              { 
  57   2                      RS=0; RW=0;
  58   2                      P2 = ZL ;
  59   2                      E=1;
  60   2                      E=0;
  61   2              }
  62   1      
  63   1      }
  64          
  65          
  66          /*==========================
  67           写单个数据 RS=1 RW=0 E=1
  68          ============================*/
  69          void  Write_SJ(uchar SJ)
  70          {   
  71   1       if(  !PB_busy()  ) 
  72   1              { 
  73   2                      RS=1; RW=0;
  74   2                      P2 = SJ ;
  75   2                      E = 1 ;
  76   2                      E = 0 ;
  77   2              }
  78   1      }
  79          
  80          
  81          /*===============================
  82          确定字符位置字程序 x---列  y---行
  83          ================================*/
  84          void QD_WZ(uchar x,uchar y)
  85          {
  86   1              uchar address;
  87   1              if(y==0)  address = 0x80 + x ;          //x,y都从0计起
  88   1              else      address = 0xc0 + x ;
  89   1              Write_ZL(address);
  90   1      }
  91          
  92          
  93          /*==========================================
  94          初试化:
  95          ===========================================*/
  96          void Reset(void)
  97          {   
  98   1       uchar n;
  99   1       for(n=0;n<3;n++)                       //3次,不检测忙信号(故未直接用函数)
 100   1              {
 101   2                      RS=0;RW=0;E=1;
 102   2                      P2=0x38;                        //八位总线,双行显示,显示5X10的点阵字符
 103   2                      E=1;E=0;
 104   2                      Delay5Ms();
 105   2              };
 106   1       Write_ZL(0x38);                                        //需要检测忙信号
 107   1       Write_ZL(0x0e);
 108   1       Write_ZL(0x0d);                        //关显示
 109   1       Write_ZL(0x01); 
 110   1       Delay5Ms();
 111   1       Write_ZL(0x06);                                        //光标设置,光标右移,文字不移动
 112   1       Delay5Ms();
 113   1       Write_ZL(0x0c);                                        //开显示,设置光标
 114   1                                                                      /*未用到指令5*/ 
 115   1      }
 116          
 117          
C51 COMPILER V7.06   GUDING                                                                10/24/2006 10:47:06 PAGE 3   

 118          // 短延时
 119          void Delay5Ms(void)
 120          {
 121   1              uint c=5552;
 122   1              while(c--);
 123   1      }
 124          
 125          
 126          
 127          void main(void)
 128          {       
 129   1          Reset();
 130   1              while(1)
 131   1                      {
 132   2                       ReadTemperature(); 
 133   2                       Delay5Ms();
 134   2                       QD_WZ(1,0);
 135   2                       Write_SJ(lcd_show_date[m]);
 136   2                       QD_WZ(2,0);
 137   2                       Write_SJ(lcd_show_date[n]);
 138   2                       QD_WZ(3,0);
 139   2                       Write_SJ(0x2e);
 140   2                       QD_WZ(4,0);
 141   2                       Write_SJ(lcd_show_date[k]);
 142   2                       QD_WZ(5,0);
 143   2                       Write_SJ(lcd_show_date[l]);
 144   2                      }
 145   1       
 146   1      
 147   1      }


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