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

📄 disp.lst

📁 LM75A温度传感器的读写程序
💻 LST
字号:
C51 COMPILER V7.06   DISP                                                                  10/24/2006 10:05:25 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DISP
OBJECT MODULE PLACED IN Disp.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Disp.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*
   2                  Disp.c
   3                  数码管扫描显示驱动程序
   4          */
   5          
   6          
   7          #include <reg51.h>
   8          #include <absacc.h>
   9          #include <intrins.h>
  10          #include "Disp.h"
  11          
  12          
  13          //宏函数:向数码管位选寄存器(74HC573)加载数据
  14          #define DIGLD(dat)\
  15          {\
  16                  P0 = (dat);\
  17                  LE_DIG = 1;\
  18                  _nop_();\
  19                  LE_DIG = 0;\
  20          }
  21          
  22          
  23          //宏函数:向数码管段选寄存器(74HC573)加载数据
  24          #define SEGLD(dat)\
  25          {\
  26                  P0 = (dat);\
  27                  LE_SEG = 1;\
  28                  _nop_();\
  29                  LE_SEG = 0;\
  30          }
  31          
  32          
  33          //定义显示缓冲区(由定时中断程序自动扫描)
  34          unsigned char DispBuf[8];
  35          
  36          
  37          unsigned char DispX;
  38          
  39          
  40          /*
  41          函数:T1INTSVC()
  42          功能:定时器T1的中断服务函数
  43          */
  44          void T1INTSVC() interrupt 3
  45          {
  46   1              code unsigned char com[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  47   1              static unsigned char n = 0;
  48   1              TR1 = 0;                //暂停T1(重新定时前应当暂停)
  49   1              TH1 = 0xFC;             //重新定时1ms
  50   1              TL1 = 0x66;
  51   1              TR1 = 1;                //重启T1
  52   1              SEGLD(0xFF);    //暂停显示(重要操作)
  53   1              DIGLD(com[n]);  //更新位选信号
  54   1              SEGLD(~DispBuf[n]);     //更新段选数据
  55   1              n++;
C51 COMPILER V7.06   DISP                                                                  10/24/2006 10:05:25 PAGE 2   

  56   1              n &= 0x07;
  57   1      }
  58          
  59          
  60          /*
  61          函数:DispClear()
  62          功能:清除数码管的所有显示
  63          */
  64          void DispClear()
  65          {
  66   1              unsigned char i;
  67   1              for ( i=0; i<8; i++ )
  68   1              {
  69   2                      DispBuf[i] = 0x00;
  70   2              }
  71   1              DIGLD(0x00);
  72   1              SEGLD(0x00);
  73   1              DispX = 0;
  74   1      }
  75          
  76          
  77          /*
  78          函数:DispChar()
  79          功能:在数码管上显示字符
  80          参数:
  81                  x:数码管的坐标位置(0~7)
  82                  c:要显示的字符(仅限十进制数字和减号)
  83          */
  84          void DispChar(unsigned char c)
  85          {
  86   1              //0123456789的数码管字型数据
  87   1              code unsigned char Tab[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
  88   1              unsigned char t;
  89   1              if ( c == '-' )
  90   1              {
  91   2                      t = 0x40;
  92   2              }
  93   1              else if ( ( c >= '0' ) && ( c <= '9' ) )
  94   1              {
  95   2                      t = Tab[c-'0'];
  96   2              }
  97   1              DispBuf[7-DispX] = t;
  98   1              DispX++;
  99   1              DispX &= 0x07;
 100   1      }
 101          
 102          
 103          /*
 104          函数:DispStr()
 105          功能:在数码管上显示字符串
 106          参数:
 107                  x:数码管的坐标位置(0~7)
 108                  *s:要显示的字符串(字符仅限十进制数字和减号)
 109          */
 110          /*
 111          void DispStr(unsigned char x, unsigned char *s)
 112          {
 113                  unsigned char c;
 114                  for (;;)
 115                  {
 116                          c = *s;
 117                          if ( c == '\0' ) break;
C51 COMPILER V7.06   DISP                                                                  10/24/2006 10:05:25 PAGE 3   

 118                          s++;
 119                          DispChar(c);
 120                          x++;
 121                  }
 122          }
 123          */
 124          
 125          
 126          /*
 127          函数:DispDotOn()
 128          功能:显示指定位的小数点
 129          参数:x为数码管坐标
 130          */
 131          void DispDotOn(unsigned char x)
 132          {
 133   1              DispBuf[7-x] |= 0x80;
 134   1      }
 135          
 136          
 137          /*
 138          函数:DispInit()
 139          功能:数码管扫描显示初始化
 140          */
 141          void DispInit()
 142          {
 143   1              EA = 0;
 144   1              LE_DIG = 0;
 145   1              LE_SEG = 0;
 146   1              LE_LED = 0;
 147   1              DispClear();
 148   1              TMOD &= 0x0F;
 149   1              TMOD |= 0x10;
 150   1              TH1 = 0xFC;
 151   1              TL1 = 0x66;
 152   1              TR1 = 1;
 153   1              ET1 = 1;
 154   1              EA = 1;
 155   1      }
 156          


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