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

📄 disp.lst

📁 一个动态扫描程序,学习如何利用单片机来控制动态扫描的数码管.希望对学单片机的朋友有帮助.
💻 LST
字号:
C51 COMPILER V7.09   DISP                                                                  05/19/2006 10:35:08 PAGE 1   


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

line level    source

   1          /*
   2                  动态数码管扫描驱动程序
   3          */
   4          #ifndef _Disp_h_
   5          #define _Disp_h_
   6          
   7          
   8          #include <reg51.h>
   9          #include <absacc.h>
  10          
  11          
  12          //定义显示缓冲区(由定时中断程序自动扫描)
  13          unsigned char DispBuf[8];
  14          
  15          
  16          //定义中断扫描显示缓冲区
  17          void Timer1_INTSVC() interrupt 3
  18          {
  19   1              code unsigned char com[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  20   1              static unsigned char n = 0;
  21   1              TR1 = 0;
  22   1              TF1 = 0;
  23   1              TH1 = 0xFC;
  24   1              TL1 = 0x66;
  25   1              TR1 = 1;
  26   1              P1 = ~com[n];
  27   1              XBYTE[0xD800] = ~DispBuf[n];
  28   1              n++;
  29   1              if ( n >= 8 ) n = 0;
  30   1      }
  31          
  32          
  33          //显示字符
  34          //能够显示的字符有:0123456789AbCdEF-以及空白
  35          void DispChar(unsigned char x, unsigned char c)
  36          {
  37   1              code unsigned char dat[] =
  38   1              {//0123456789AbCdEF的数码管字型数据
  39   1                      0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
  40   1                      0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71
  41   1              };
  42   1              unsigned char d,t;      //临时变量
  43   1              if ( x >= 8 ) return;
  44   1              switch (c)
  45   1              {
  46   2              case '0':
  47   2              case '1':
  48   2              case '2':
  49   2              case '3':
  50   2              case '4':
  51   2              case '5':
  52   2              case '6':
  53   2              case '7':
  54   2              case '8':
  55   2              case '9':
C51 COMPILER V7.09   DISP                                                                  05/19/2006 10:35:08 PAGE 2   

  56   2                      d = dat[c-'0'];
  57   2                      break;
  58   2              case 'A':
  59   2              case 'B':
  60   2              case 'C':
  61   2              case 'D':
  62   2              case 'E':
  63   2              case 'F':
  64   2                      d = dat[c-'A'+10];
  65   2                      break;
  66   2              case 'a':
  67   2              case 'b':
  68   2              case 'c':
  69   2              case 'd':
  70   2              case 'e':
  71   2              case 'f':
  72   2                      d = dat[c-'a'+10];
  73   2                      break;
  74   2              case '-':
  75   2                      d = 0x40;
  76   2                      break;
  77   2              default:
  78   2                      d = 0x00;
  79   2                      break;
  80   2              }
  81   1              d &= 0x7F;
  82   1              t = DispBuf[7-x];
  83   1              t &= 0x80;
  84   1              t |= d;
  85   1              DispBuf[7-x] = t;
  86   1      }
  87          
  88          
  89          //显示一串字符
  90          void DispString(unsigned char x, char *s)
  91          {
  92   1              if ( x >= 8 ) return;
  93   1              while ( *s != '\0' )
  94   1              {
  95   2                      DispChar(x,*s++);
  96   2                      x++;
  97   2                      if ( x >= 8 ) x = 0;
  98   2              };
  99   1      }
 100          
 101          
 102          //显示小数点
 103          void DispDotOn(unsigned char x)
 104          {
 105   1              DispBuf[x] |= 0x80;
 106   1      }
 107          
 108          
 109          //不显示小数点
 110          void DispDotOff(unsigned char x)
 111          {
 112   1              DispBuf[x] &= 0x7F;
 113   1      }
 114          
 115          
 116          //初始化
 117          void DispInit()
C51 COMPILER V7.09   DISP                                                                  05/19/2006 10:35:08 PAGE 3   

 118          {
 119   1              unsigned char n;
 120   1              for ( n=0; n<8; n++ )
 121   1              {
 122   2                      DispBuf[n] = 0x00;      //初始为全灭
 123   2              }
 124   1              EA = 0;
 125   1              TMOD &= 0x0F;
 126   1              TMOD |= 0x10;
 127   1              TH1 = 0xFC;
 128   1              TL1 = 0x66;
 129   1              TR1 = 1;
 130   1              ET1 = 1;
 131   1              EA = 1;
 132   1      }
 133          
 134          
 135          #endif  //_dpy_h
 136          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    258    ----
   CONSTANT SIZE    =     24    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9       5
   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 + -