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

📄 led7disp.lst

📁 STC51系列单片机学习板演示程序(汇编语言) 有详细注释 适合初学单片机的朋友
💻 LST
字号:
C51 COMPILER V7.20   LED7DISP                                                              03/23/2007 23:06:24 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE LED7DISP
OBJECT MODULE PLACED IN LED7DISP.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LED7DISP.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*****************************************************************************
   2                                                          MCU8051学习板演示程序
   3                                                                  
   4                                          (c) Copyright 2007-2007,广州恒芯电子
   5                                                          All Rights Reserved
   6          *****************************************************************************/
   7          
   8          /*****************************************************************************
   9          程序说明
  10          名称: MCU8051学习板演示程序(数码管显示)
  11          功能: 实现数码管显示,并实现数值递增
  12          版本:2007-03-01
  13          *****************************************************************************/
  14          
  15          /*****************************************************************************
  16          硬件说明
  17          单片机:   兼容MCS-51单片机/STC89C51
  18          晶振频率: 12MHz
  19          *****************************************************************************/
  20          
  21          #include "regx52.h"
  22          
  23          /****************************************************************************
  24          说明: 程序预定义
  25          *****************************************************************************/
  26          #define LED7A_STATUS P1_0/*数码管第一位控制引脚(0为有效,1为无效)*/
  27          #define LED7B_STATUS P1_1/*数码管第二位控制引脚(0为有效,1为无效)*/
  28          #define LED7C_STATUS P1_2/*数码管第三位控制引脚(0为有效,1为无效)*/
  29          #define LED7D_STATUS P1_3/*数码管第四位控制引脚(0为有效,1为无效)*/
  30          
  31          #define LED7_STATUS     P0/*数码管状态引脚(0为有效,1为无效)*/
  32          
  33          /****************************************************************************
  34          说明: 变量定义
  35          *****************************************************************************/
  36          code unsigned char m_ucLedTab[]=
  37          {
  38                  0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90,
  39                  0x88, 0x83, 0xC6, 0xa1 ,0x86 ,0x8e, 0xff
  40          };/*数码管十六进制编码表*/
  41          
  42          unsigned char m_ucLedBuf[4];/*七段数码管显示值缓存*/
  43                          
  44          /****************************************************************************
  45          名称: Delay
  46          说明: 程序延时
  47          参数: 无
  48          返回: 无
  49          *****************************************************************************/
  50          void Delay();
  51          
  52          /****************************************************************************
  53          名称: Led7Scan()
  54          说明: 数码管动态扫描处理程序    
  55          参数: 无
C51 COMPILER V7.20   LED7DISP                                                              03/23/2007 23:06:24 PAGE 2   

  56          返回: 无
  57          *****************************************************************************/
  58          void Led7Scan();
  59          
  60          /*****************************************************************************
  61          程序开始
  62          *****************************************************************************/
  63          void main()
  64          {       
  65   1              unsigned int uiNumber=0;/*计数值置0*/
  66   1      
  67   1              /*T0中断设定*/
  68   1              TMOD=0x01;/*使用T0:GATE=0,C/T=0(定时),M1 M0=01(工作方式1)*/
  69   1              TH0=0xec;/*定时时间5毫秒*/
  70   1              TL0=0x78;
  71   1              ET0=1;/*允许T0中断*/
  72   1              TR0=1;/*使T0工作*/
  73   1              EA=1;/*总中断开启*/
  74   1      
  75   1              while(1)
  76   1              {
  77   2                      if(uiNumber>9999)/*若数值大于9999,则置为0*/
  78   2                      {
  79   3                              uiNumber=0;
  80   3                      }       
  81   2              
  82   2                      m_ucLedBuf[0]=uiNumber/1000;/*取出千位数*/
  83   2                      m_ucLedBuf[1]=(uiNumber%1000)/100;/*取出百位数*/
  84   2                      m_ucLedBuf[2]=(uiNumber%100)/10;/*取出十位数*/
  85   2                      m_ucLedBuf[3]=uiNumber%10;/*取出个位数*/
  86   2      
  87   2                      uiNumber++;/*数值加1*/
  88   2      
  89   2                      Delay();/*延时*/
  90   2              }
  91   1      }
  92          
  93          /*****************************************************************************
  94          名称: Interrupt1Handler
  95          说明: T0中断入口
  96          参数: 无
  97          返回 :无
  98          *****************************************************************************/
  99          void Interrupt1Handler() interrupt 1
 100          {
 101   1              Led7Scan();/*数码管动态扫描处理程序*/
 102   1              TH0=0xec;/*重新设置T0定时值*/
 103   1              TL0=0x78;
 104   1      }
 105          
 106          
 107          /****************************************************************************
 108          名称: Delay
 109          说明: 程序延时
 110          参数: 无
 111          返回: 无
 112          *****************************************************************************/
 113          void Delay()
 114          {
 115   1              unsigned char a,b;
 116   1      
 117   1              for(a=0;a<255;a++)
C51 COMPILER V7.20   LED7DISP                                                              03/23/2007 23:06:24 PAGE 3   

 118   1                      for(b=0;b<255;b++);
 119   1      }
 120          
 121          /****************************************************************************
 122          名称: Led7Scan()
 123          说明: 数码管动态扫描处理程序
 124          参数: 无
 125          返回: 无
 126          *****************************************************************************/
 127          void Led7Scan()
 128          {       
 129   1              static unsigned char a=0;
 130   1      
 131   1              switch(a)/*判断数码管动态扫描值*/
 132   1              {
 133   2              case 0:/*处理数码管第一位*/
 134   2                      LED7D_STATUS=1;/*设置数码管第四位为无效*/
 135   2                      LED7A_STATUS=0;/*设置数码管第一位位有效*/
 136   2                      break; 
 137   2      
 138   2              case 1:/*处理数码管第二位*/
 139   2                      LED7A_STATUS=1;/*设置数码管第一位为无效*/
 140   2                      LED7B_STATUS=0;/*设置数码管第二位位有效*/
 141   2                      break; 
 142   2      
 143   2              case 2:/*处理数码管第三位*/
 144   2                      LED7B_STATUS=1;/*设置数码管第二位为无效*/
 145   2                      LED7C_STATUS=0;/*设置数码管第三位位有效*/
 146   2                      break; 
 147   2      
 148   2              case 3:/*处理数码管第四位*/
 149   2                      LED7C_STATUS=1;/*设置数码管第三位为无效*/
 150   2                      LED7D_STATUS=0;/*设置数码管第四位位有效*/
 151   2                      break; 
 152   2              }
 153   1      
 154   1              LED7_STATUS=m_ucLedTab[m_ucLedBuf[a]];/*将显示码送数码管状态引脚*/      
 155   1              
 156   1              a++;/*数码管动态扫描值加1,若该值4则置为0*/
 157   1              if(a>3)
 158   1                      a=0;
 159   1      }
 160                                                     


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    267    ----
   CONSTANT SIZE    =     17    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5       2
   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 + -