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

📄 disp.lst

📁 这是自己写的基于单片机89s52的UART口的双机通讯
💻 LST
字号:
C51 COMPILER V7.06   DISP                                                                  10/24/2006 15:34:58 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                  动态数码管扫描显示程序
   3          *******************************************************************************/
   4          
   5          
   6          #include "Disp.h"
   7          #include <REG51.h>
   8          #include <ABSACC.h>
   9          
  10          
  11          unsigned char DispBuf[4];       //显示缓冲区(由定时中断程序自动扫描)
  12          unsigned char DispX;            //坐标,取值0~3
  13          unsigned char KeyValue = '\0';
  14          
  15          
  16          /*******************************************************************************
  17          函数:DispClear()
  18          功能:清除显示
  19          *******************************************************************************/
  20          void DispClear()
  21          {
  22   1              unsigned char i;
  23   1              DispX = 0;
  24   1              for ( i=0; i<4; i++ )
  25   1              {
  26   2                      DispBuf[i] = 0x00;
  27   2              }
  28   1              XBYTE[DPY_DIG] = 0x00;
  29   1              XBYTE[DPY_SEG] = 0x00;
  30   1      }
  31          
  32          
  33          //定义软件定时器(利用T0中断实现)
  34          unsigned int STV;       //16位软件定时器
  35          bit STR = 0;    //启动标志
  36          bit STF = 0;    //溢出标志
  37          
  38          
  39          /*******************************************************************************
  40          函数:T0_ISR()
  41          功能:定时器T0中断服务程序,定时扫描显示数码管
  42          *******************************************************************************/
  43          void T0_ISR() interrupt 1
  44          {
  45   1              code unsigned char com[] = {0x01,0x02,0x04,0x08};
  46   1              static unsigned char n = 0;
  47   1              static unsigned char t = 50;
  48   1      //重新定时
  49   1              TR0 = 0;                //暂停T0(重新定时前应当暂停)
  50   1              TH0 = 0xFC;             //重新定时1ms
  51   1              TL0 = 0x66;
  52   1              TR0 = 1;                //重启T0
  53   1      //扫描数码管
  54   1              XBYTE[DPY_SEG] = 0xFF;          //暂停显示(重要操作)
  55   1              XBYTE[DPY_DIG] = com[n];        //更新位选信号
C51 COMPILER V7.06   DISP                                                                  10/24/2006 15:34:58 PAGE 2   

  56   1              XBYTE[DPY_SEG] = ~DispBuf[n];   //更新段选数据
  57   1              n++;
  58   1              n &= 0x03;
  59   1      //处理软件定时器
  60   1              if ( STR ) if ( --STV == 0 ) STF = 1;
  61   1      //扫描按键
  62   1              if ( --t == 0 )
  63   1              {
  64   2                      if ( !K1 ) KeyValue = '1';
  65   2                      if ( !K2 ) KeyValue = '2';
  66   2                      if ( !K3 ) KeyValue = '3';
  67   2                      if ( !K4 ) KeyValue = '4';
  68   2                      if ( KeyValue == '\0' )
  69   2                              t = 50;
  70   2                      else
  71   2                              t = 250;
  72   2              }
  73   1      }
  74          
  75          
  76          //键盘扫描,返回按键值
  77          unsigned char KeyScan()
  78          {
  79   1              unsigned char k;
  80   1              k = KeyValue;
  81   1              KeyValue = '\0';
  82   1              return k;
  83   1      }
  84          
  85          
  86          /*******************************************************************************
  87          函数:Delay()
  88          功能:延时0.001s~65.536s
  89          参数:延时(t*0.001)s
  90          *******************************************************************************/
  91          void Delay(unsigned int t)
  92          {
  93   1              STV = t;
  94   1              STR = 1;
  95   1              while ( !STF );
  96   1              STR = 0;
  97   1              STF = 0;
  98   1      }
  99          
 100          
 101          /*******************************************************************************
 102          函数:DispChar()
 103          功能:显示1个字符
 104          参数:c为要显示的字符(仅限十进制数字)
 105          *******************************************************************************/
 106          void DispChar(unsigned char c)
 107          {
 108   1              code unsigned char Tab[10] =
 109   1              {//定义数码管字型数据
 110   1                      0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F
 111   1              };
 112   1              if ( (c >= '0') && (c <= '9') )
 113   1              {
 114   2                      DispBuf[3-DispX] = Tab[c-'0'];
 115   2                      DispX++;
 116   2                      DispX &= 0x03;
 117   2              }
C51 COMPILER V7.06   DISP                                                                  10/24/2006 15:34:58 PAGE 3   

 118   1      }
 119          
 120          
 121          /*******************************************************************************
 122          函数:DispInit()
 123          功能:初始化
 124          *******************************************************************************/
 125          void DispInit()
 126          {
 127   1              DispClear();    //清除显示
 128   1              TMOD &= 0xF0;   //T0设置在方式1,即16位定时器
 129   1              TMOD |= 0x01;
 130   1              TH0 = 0xFC;             //定时1ms
 131   1              TL0 = 0x66;
 132   1              ET0 = 1;                //使能T0定时中断
 133   1              TR0 = 1;                //启动定时器T0
 134   1              EA = 1;                 //使能总中断
 135   1      }
 136          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    224    ----
   CONSTANT SIZE    =     14    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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