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

📄 main.lst

📁 89C52单片机12M晶振下DS18B20温度传感器测量温度应用子程序源码
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.09   MAIN                                                                  05/28/2005 18:15:36 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE G:\yanshenjing\程序\MAIN\main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\main.lst)
                    - OBJECT(.\main.obj)

line level    source

   1          /*********************************************************************
   2          ***                                     头文件区                                ***
   3          **********************************************************************/
   4          #include<reg52.h>
   5          #include <intrins.h>    /*内部函数调用,如_nop_() 、_crol_()、cror();*/
   6          
   7          #include <absacc.h>     /*绝对地址访问,如XBYTE[0x0fff0]*/
   8          
   9          /******************************************************************
  10          *******                   全局变量定义                        ******
  11          *******************************************************************/
  12          #define uint unsigned int
  13          #define uchar unsigned char
  14          
  15          #define ICM7218 XBYTE [0x00]           //7218B的地址
  16          
  17          #define DS_A XBYTE [0xff0a]                     //时钟芯片的  A  寄存器地址
  18          #define DS_B XBYTE [0xf00b]                     //时钟芯片的  B  寄存器地址
  19          #define DS_second XBYTE [0xf000]        //时钟芯片的 秒  寄存器地址
  20          #define DS_minute XBYTE [0xf002]        //时钟芯片的 分钟 寄存器地址
  21          #define DS_hour XBYTE [0xf004]          //时钟芯片的 小时 寄存器地址
  22          #define DS_day XBYTE [0xf007]           //时钟芯片的 天数 寄存器地址
  23          #define DS_month XBYTE [0xf008]         //时钟芯片的 月数 寄存器地址
  24          #define DS_year XBYTE [0xf009]          //时钟芯片的 年数 寄存器地址
  25          
  26          sbit ICM7218MODE=P1^4;//7218b的控制端
  27          
  28          
  29          bit flag=0;//功能键和数字键的区别标志,0为功能1为数字键
  30          bit f_time=1;//显示时间,时期标致
  31          bit choose=0;//时间,日期选择标志(0为时间,1为日期)
  32          uchar a_move=3;//时间修改移动次数
  33          bit b_change=0;//时间修改标志,1时执行
  34          bit c_temp=0;//温度显示标志,1时执行
  35          bit d_temp=0;//设置温度显示标志,1时执行
  36          bit c_shift=0;//当前温度1和2的选择标志位
  37          bit d_shift=0;//设置温度1和2的选择标志位
  38          
  39          bit e_shift=0;//摄氏和华氏的切换标志
  40          bit t_half=0;//半秒标志位
  41          
  42          bit t_read0=0;//定时500ms读温度1标志位
  43          bit t_read1=0;//定时500ms读温度2标志位
  44          
  45          bit figure=0;//数字键标志位,1为数字键
  46          
  47          bit mark_0=0;//温度1符号标志位,1为负
  48          bit mark_1=0;//温度2符号标志位,1为负
  49          
  50          bit mark_2=0;//设置温度1的符号标志位,1为负
  51          bit mark_3=0;//设置温度2的符号标志位,1为负
  52          
  53          bit start_0=0;//第一片DS18B20的延时标志位,1开始延时计数
  54          bit start_1=0;//第二片DS18B20的延时标志位,1开始延时计数
C51 COMPILER V7.09   MAIN                                                                  05/28/2005 18:15:36 PAGE 2   

  55          
  56          unsigned char  buffer[]={0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84};//7218B输出存储数组
  57          
  58          uchar status;//定义一个键值存储器
  59          uchar b_times=0;//按键B按下的次数
  60          
  61          uint temp1=0,temp2=0;//两个温度存储器
  62          
  63          uint t_set1, t_set2;//两个温度的设置值
  64          
  65          uchar t_chan[16];
  66          
  67          unsigned char ROM_0_code[]={0x28,0x25,0xb3,0x84,0x00,0x00,0x00,0x95};//ds18b20的CRC码
  68          unsigned char ROM_1_code[]={0x28,0x50,0xe2,0x84,0x00,0x00,0x00,0xbe};//ds18b20的CRC码
  69          
  70          
  71          /*==========================
  72           ==      7218字型码表     ==
  73           ===========================*/
  74          uchar code LedCode[] = { 0xFB,0xB0,0xED,0xF5,0xB6,     /* 0,1,2,3,4  */
  75                                   0xD7,0xDF,0xF0,0xFF,0xF7,     /* 5,6,7,8,9  */
  76                                   0xFE,0x9F,0xCB,0xBD,0xCF,     /* A,b,C,d,E  */
  77                                   0xCE,0x7F,0x80,0xEE,0xF6,     /* F,.(16),blank(17),P(18),q(19)*/
  78                                   0xBE,0x84,0xBB,0xFA,0xC1,     /* H(20), -(21),U(22),n(23),冒号(24)*/
  79                                   0x80,0x80,0x80,0x80,0x80      /* 填空格 */                 
  80                                  } ; 
  81                                    
  82          unsigned char code top_table[]={0x7b,0x30,0x6D,0x75,0x36,0x57,0x5F,0x70,0x7F,0x77};
  83                                            // 0.,1.,2.,3.,4., 5.,6.,7.,8.,9.  小数点显示    
  84                                               
  85          /*--------------------------------------------------------------------------
  86          DS1820.H
  87          
  88          --------------------------------------------------------------------------*/
  89          sbit TSOR = P1^6;               
  90                                                    
  91          //**********************************************************************//
  92          //                                      延时子函数                                 //
  93          //**********************************************************************//
  94          void delay(unsigned int d)
  95          {
  96   1              while(d--);
  97   1      }
  98          
  99          void delay15us(void)
 100          {
 101   1              unsigned char i;
 102   1              for(i=0;i<8;i++);
 103   1      }
 104          
 105          void delay60us(void)
 106          {
 107   1              unsigned char i;
 108   1              for(i=0;i<30;i++);
 109   1      }
 110          /**********************************************
 111          //键盘扫描。、识别函数
 112          ************************************************/
 113          void service_int1()interrupt 2 using 2
 114          {
 115   1        uchar i;
 116   1        i=P1&0x0f;
C51 COMPILER V7.09   MAIN                                                                  05/28/2005 18:15:36 PAGE 3   

 117   1        flag=1;
 118   1        
 119   1        switch(i)
 120   1        {
 121   2        case 0:status=i;
 122   2               flag=1;
 123   2               figure=1;
 124   2               break;//按下数字键,status等于键值且两个标志位置1
 125   2        case 1:status=i;
 126   2               flag=1;
 127   2               figure=1;
 128   2               break;//
 129   2        case 2:status=i;
 130   2               flag=1;
 131   2               figure=1;
 132   2               break;//
 133   2        case 3:status=i;
 134   2               flag=1;
 135   2               figure=1;
 136   2               break;//
 137   2        case 4:status=i;
 138   2               flag=1;
 139   2               figure=1;
 140   2               break;//
 141   2        case 5:status=i;
 142   2               flag=1;
 143   2               figure=1;
 144   2               break;//
 145   2        case 6:status=i;
 146   2               flag=1;
 147   2               figure=1;
 148   2               break;//
 149   2        case 7:status=i;
 150   2               flag=1;
 151   2               figure=1;
 152   2               break;//
 153   2        case 8:status=i;
 154   2               flag=1;
 155   2               figure=1;
 156   2               break;//
 157   2        case 9:status=i;
 158   2               flag=1;
 159   2               figure=1;
 160   2               break;//
 161   2        case 10:a_move++;
 162   2                if(a_move==2||a_move==5||a_move==10||a_move==13)a_move++;
 163   2                if(a_move>15)a_move=0;
 164   2                flag=0;
 165   2                break;//
 166   2        case 11:b_change=1;
 167   2                b_times++;
 168   2                c_temp=0;
 169   2                d_temp=0;
 170   2                f_time=0;
 171   2                flag=0;
 172   2                break;//
 173   2        case 12:c_temp=1;
 174   2                c_shift=~c_shift;
 175   2                d_temp=0;
 176   2                f_time=0;
 177   2                flag=0;
 178   2                b_change=0;
C51 COMPILER V7.09   MAIN                                                                  05/28/2005 18:15:36 PAGE 4   

 179   2                break;//
 180   2        case 13:d_temp=1;
 181   2                d_shift=~d_shift;
 182   2                c_temp=0;
 183   2                f_time=0;
 184   2                flag=0;
 185   2                b_change=0;
 186   2                break;//
 187   2        case 14:e_shift=~e_shift;
 188   2                flag=0;
 189   2                break;//
 190   2        case 15:if(!b_change)
 191   2                {
 192   3                      f_time=1;
 193   3                      c_temp=0;
 194   3                      d_temp=0;
 195   3                      choose=~choose;
 196   3                }
 197   2                flag=0;break;//
 198   2      
 199   2        default:;
 200   2        }
 201   1      }
 202          /***************************************************
 203          //定时器0中断程序
 204          ****************************************************/
 205          time0()interrupt 1 using 3
 206          {
 207   1         uchar i,j,k;
 208   1         TH0=-2000/256;
 209   1         TL0=-2000%256;
 210   1         i++;
 211   1         if(i==250){t_half=~t_half;i=0;}
 212   1         if(start_0)
 213   1         {
 214   2              j++;
 215   2              if(j==250)
 216   2              {
 217   3                      start_0=0;
 218   3                      t_read0=1;
 219   3                      j=0;
 220   3              }
 221   2      }
 222   1         if(start_1)
 223   1         {
 224   2              k++;
 225   2              if(k==250)
 226   2              {
 227   3                      start_1=0;
 228   3                      t_read1=1;
 229   3                      k=0;
 230   3              }
 231   2      }
 232   1      }
 233          /***************************************         
 234          //7218B显示函数  
 235          ***************************************/
 236          void display()
 237          {
 238   1        uchar i;
 239   1        ICM7218MODE=1;
 240   1        ICM7218=0xff;
C51 COMPILER V7.09   MAIN                                                                  05/28/2005 18:15:36 PAGE 5   

 241   1        for(i=0;i<10;i++);
 242   1      
 243   1        ICM7218MODE=0;
 244   1        for(i=0;i<8;i++)
 245   1        {
 246   2        ICM7218=buffer[i];
 247   2        
 248   2        }
 249   1      }
 250          

⌨️ 快捷键说明

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