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

📄 ds18b20温度计.lst

📁 DS18B20原理图及资料
💻 LST
字号:
C51 COMPILER V7.10   DS18B20温度计                                                         07/15/2008 16:02:30 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE DS18B20温度计
OBJECT MODULE PLACED IN DS18B20温度计.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DS18B20温度计.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************************************
   2          *  标题:  伟纳电子ME300B单片机开发系统演示程序 -  LED数码管显示1-8             *
   3          *  文件:  wl004.C                                                              *
   4          *  日期:  2004-1-5                                                             *
   5          *  版本:  1.0                                                                  *
   6          *  作者:  伟纳电子 - Freeman                                                   *
   7          *  邮箱:  freeman@willar.com                                                   *
   8          *  网站: http://www.willar.com                                                *
   9          ********************************************************************************
  10          *  描述:                                                                       *
  11          *         LED数码管显示演示程序                                                *
  12          *         在8个LED数码管上依次显示1,2,3,4,5,6,7,8                              *
  13          *                                                                              *
  14          *                                                                              *
  15          ********************************************************************************
  16          * 【版权】 Copyright(C)伟纳电子 www.willar.com  All Rights Reserved            *
  17          * 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
  18          *******************************************************************************/
  19          
  20          
  21          #include <reg51.h>
  22          #include <intrins.h>
  23          
  24          unsigned char data dis_digit;
  25          unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0,   // 0, 1, 2, 3
  26                                          0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, off 
  27                                          //shixr ,共阳极接法,1表示暗的。
  28          unsigned char data dis_buf[8];
  29          unsigned char data dis_index;
  30          
  31          void main()
  32          {
  33   1              P0 = 0x00;
  34   1              P2 = 0x00;
  35   1      
  36   1              //以下为定时器初始化。
  37   1      
  38   1              TMOD = 0x01;    // M1,M0 = 0,1 工作在方式1,为16位定时器
  39   1              TH0 = 0xFC;
  40   1              TL0 = 0x17;             // TH和TL各提供8位。
  41   1              IE = 0x82;              //开cpu中断 和 源中断 即EA =  1, ET0 = 1
  42   1      
  43   1      
  44   1              dis_buf[0] = dis_code[0x1];
  45   1              dis_buf[1] = dis_code[0x2];
  46   1              dis_buf[2] = dis_code[0x3];
  47   1              dis_buf[3] = dis_code[0x4];
  48   1              dis_buf[4] = dis_code[0x5];
  49   1              dis_buf[5] = dis_code[0x6];
  50   1              dis_buf[6] = dis_code[0x7];
  51   1              dis_buf[7] = dis_code[0x8];
  52   1              
  53   1              dis_digit = 0xfe;       //1111,1110
  54   1              dis_index = 0;
  55   1              
C51 COMPILER V7.10   DS18B20温度计                                                         07/15/2008 16:02:30 PAGE 2   

  56   1              TR0 = 1;        //在 TCON 中,启动定时器0。启动工作需要放置在初始化之后,这是一个好的习惯。     
  57   1              while(1);
  58   1      
  59   1      }
  60          
  61          void timer0() interrupt 1       using 1 //函数名字可以任意取, interrupt 1中的"1"表示定时器0的中断号为1。
  62          // 定时器0中断服务程序, 用于数码管的动态扫描
  63          // dis_index --- 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量
  64          // dis_digit --- 位选通值, 传送到P2口用于选通当前数码管的数值, 如等于0xfe时,
  65          //                              选通P2.0口数码管
  66          // dis_buf   --- 显于缓冲区基地址       
  67          {
  68   1              TH0 = 0x7C;
  69   1              TL0 = 0x17;                     //在定时器中断中重新赋初始值。可以计算这里的时钟周期为
  70   1              // (0x10000- 0xfc17) * [1/(11.0592 * 10^6 )] * 12 = 1.086ms
  71   1      // (0x10000- x) * [1/(11.0592 * 10^6 )] * 12 = 1ms
  72   1      
  73   1              
  74   1              P2 = 0xff;                                                      // 先关闭所有数码管
  75   1              P0 = dis_buf[dis_index];                        // 显示代码传送到P0口
  76   1              P2 = dis_digit;                                         // 
  77   1      
  78   1              dis_digit = _cror_(dis_digit,1);        // 位选通值左移, 下次中断时选通下一位数码管
  79   1              dis_index++;                                            // 
  80   1                                      
  81   1              dis_index &= 0x07;                      // 8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描
  82   1      }


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