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

📄 main7221_1.lst

📁 自己做的单片机Proteus仿真实例
💻 LST
字号:
C51 COMPILER V7.06   MAIN7221_1                                                            06/20/2011 18:39:48 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN7221_1
OBJECT MODULE PLACED IN main7221_1.obj
COMPILER INVOKED BY: E:\lah\KEIL\C51\BIN\C51.EXE source\source7221动态显示\main7221_1.c BROWSE DEBUG OBJECTEXTEND PRINT(
                    -.\main7221_1.lst) OBJECT(main7221_1.obj)

stmt level    source

   1          //*************************************************************************************************
   2          //*************************************************************************************************
   3          //**<程序名>:7221 LED动态扫描显示                                                                                                                                       **
   4          //**<功能>:LED动态显示1s计数。                                                                                                                                  **
   5          //**<作者>:lah                                                                                                                                          **
   6          //**<完成时间>:2010年12月14日                                                                                                                                                   **
   7          //*************************************************************************************************
   8          //*************************************************************************************************
   9          
  10          
  11          
  12          //*************************************************************************************************
  13          //*                                                                                                                                                                                               *
  14          //*                      ******************************头文件及宏定义**************************                           *
  15          //*                                                                                                                                                                                               *
  16          //*************************************************************************************************
  17          
  18          #include "at89X51.h"
  19          #include "LED6Show1.h"
  20          #include "intrins.h"
  21          #include "absacc.h"
  22          #include "Max7221.h"
  23          unsigned char DisplayBuffer[8]={0,1,2,3,4,5,6,7};//显示缓冲区
  24          #define TIME0H 0xFC
  25          #define TIME0L 0x18//定时器0溢出时间:5ms,用于刷新LED。
  26          
  27          #define TIME1H 0x80
  28          #define TIME1L 0x98             //定时器1溢出时间:49ms,用于计时模式的计数增加。
  29          
  30          
  31          //*************************************************************************************************
  32          //*                                                                                                                                                                                               *
  33          //*                       ********************************全局变量******************************                          *
  34          //*                                                                                                                                                                                               *
  35          //*************************************************************************************************
  36          
  37          unsigned char uc_DisCount=5;            //定时器0定时刷新LED计数。
  38          
  39          unsigned char uc_TimeCount=0;           //定时器1定时计数。
  40          
  41          unsigned char uc_Count=0;               //定时器0定时计数。
  42          unsigned long ul_Number=123456;                 //LED显示数字。
  43          unsigned char uca_LedNum[8];
  44          
  45          //*************************************************************************************************
  46          //*                                                                                                                                                                                               *
  47          //*                       ********************************主函数******************************                            *
  48          //*                                                                                                                                                                                               *
  49          //*************************************************************************************************
  50          void Delay1ms(unsigned int count)
  51          {
  52   1              unsigned int i,j;
  53   1              for(i=0;i<count;i++)
  54   1              for(j=0;j<120;j++);
C51 COMPILER V7.06   MAIN7221_1                                                            06/20/2011 18:39:48 PAGE 2   

  55   1      }
  56          
  57          unsigned char * pucLedNum(unsigned long ulNumber)
  58          {
  59   1              if(ulNumber>999999)
  60   1                      ulNumber=999999;
  61   1              if(ulNumber<0)
  62   1                      ulNumber=0;
  63   1              uca_LedNum[0] = ulNumber/100000;                                                                   //最高位
  64   1      
  65   1              uca_LedNum[1] = (ulNumber-100000*(long)uca_LedNum[0])/10000;
  66   1      
  67   1              uca_LedNum[2] = (ulNumber-100000*(long)uca_LedNum[0]-10000*(long)uca_LedNum[1])/1000;
  68   1      
  69   1              uca_LedNum[3] = (ulNumber-100000*(long)uca_LedNum[0]-10000*(long)uca_LedNum[1]
  70   1                                              -1000*(long)uca_LedNum[2])/100;
  71   1      
  72   1              uca_LedNum[4] = (ulNumber-100000*(long)uca_LedNum[0]-10000*(long)uca_LedNum[1]
  73   1                                              -1000*(long)uca_LedNum[2]-100*(long)uca_LedNum[3])/10;
  74   1      
  75   1              uca_LedNum[5] = (ulNumber-100000*(long)uca_LedNum[0]-10000*(long)uca_LedNum[1]
  76   1                                              -1000*(long)uca_LedNum[2]-100*(long)uca_LedNum[3]-10*(long)uca_LedNum[4]);
  77   1              uca_LedNum[6] =0x0a;
  78   1              uca_LedNum[7] =0x0a;
  79   1              return uca_LedNum;
  80   1      }
  81          
  82          
  83          
  84          void main()
  85          {
  86   1              TMOD=0x11;                //定时器0:模式一;定时器0:模式一.
  87   1      
  88   1      
  89   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器0,用于LCD刷新>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  90   1              TH0=TIME0H;
  91   1              TL0=TIME0L;
  92   1              TR0=1;                   //开启定时器0
  93   1      //      ET0=1;                   //开定时器0中断
  94   1      
  95   1      
  96   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器1,用于1s计时 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  97   1              TH1=TIME1H;
  98   1              TL1=TIME1L;
  99   1              TR1=1;                   //开启定时器1
 100   1              ET1=1;                   //开定时器1中断
 101   1      
 102   1      
 103   1          EA=1;                       // 开启总中断
 104   1              
 105   1              InitialMax7221();
 106   1              Max7221Display(&DisplayBuffer[0]);
 107   1      
 108   1      
 109   1              while(1)
 110   1              {
 111   2              Delay1ms(200);
 112   2              pucLedNum(ul_Number);
 113   2              Max7221Display(&uca_LedNum[0]);
 114   2              }
 115   1      }
 116          
C51 COMPILER V7.06   MAIN7221_1                                                            06/20/2011 18:39:48 PAGE 3   

 117          
 118          //*************************************************************************************************
 119          //*                                                                                                                                                                                               *
 120          //*             *****************************定时器1中断,用于计时功能******************************      *
 121          //*                                                                                                                                                                                               *
 122          //*************************************************************************************************
 123          void vTimer1(void) interrupt 3
 124          {
 125   1      
 126   1                      if(uc_TimeCount==19)
 127   1                              {
 128   2                              uc_TimeCount=0;
 129   2                              ul_Number++;
 130   2                              }
 131   1                      else uc_TimeCount++;
 132   1      
 133   1              TH1=TIME1H;
 134   1              TL1=TIME1L;
 135   1      }
 136          //*************************************************************************************************
 137          //*                                                                                                                                                                                               *
 138          //*             ***************************定时器0,定时刷新LED*************************                                  *
 139          //*                                                                                                                                                                                               *
 140          //*************************************************************************************************
 141          void vTimer0(void) interrupt 1
 142          
 143          {
 144   1                              
 145   1                              if(uc_DisCount<5)
 146   1                              uc_DisCount++;                                          //定时器0在每次被触发时,改变LED显示。
 147   1                              else uc_DisCount=0;                                             //从第一位到第六位循环显示。
 148   1                       
 149   1              TH0=TIME0H;                                                             //恢复定时器0初始值。
 150   1              TL0=TIME0L;
 151   1              
 152   1      }         


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1035    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     23       8
   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 + -