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

📄 main.lst

📁 Proteus实例集锦(包括电路图.仿真程序,各种各样的电路
💻 LST
字号:
C51 COMPILER V8.05a   MAIN                                                                 08/11/2007 15:13:57 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\main.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\main.lst
                    -) OBJECT(main.obj)

line level    source

   1          //*************************************************************************************************
   2          //*************************************************************************************************
   3          //**<程序名>:LED动态扫描显示及键盘输入扫描。                                                                                                    **
   4          //**<功能>:将键盘输入转换成相应的输出并显示在LCD上。                                                                                    **
   5          //**<作者>:LastRitter                                                                                                                                                   **
   6          //**<完成时间>:2007年7月28日                                                                                                                                    **
   7          //**<联系方式>:E-Mail:superyongzhe@163.com;QQ:314665345。                                                                               **
   8          //*************************************************************************************************
   9          //*************************************************************************************************
  10          
  11          
  12          //*************************************************************************************************
  13          //*                                                                                                                                                                                               *
  14          //*                      ******************************头文件及宏定义**************************                           *
  15          //*                                                                                                                                                                                               *
  16          //*************************************************************************************************
  17          #include "includes.h"
  18          
  19          #define TIME0H 0xFC
  20          #define TIME0L 0x18             //定时器0溢出时间:5ms
  21          
  22          #define TIME1H 0x44
  23          #define TIME1L 0x80             //定时器1溢出时间:48ms
  24          
  25          
  26          #define SCANPORT P2
  27          
  28          
  29          //*************************************************************************************************
  30          //*                                                                                                                                                                                               *
  31          //*                       ********************************全局变量******************************                          *
  32          //*                                                                                                                                                                                               *
  33          //*************************************************************************************************
  34          
  35          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器0定时刷新LED计数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  36          unsigned char uc_DisCount=1;
  37          
  38          unsigned long ul_Number=0;                      //LCD实时显示数字。
  39          
  40          
  41          
  42          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖动标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  43          
  44          bit b_KeyShock=0;                                       //键盘防抖动标志位。
  45                                                                                  //当按键中断产生时,首先判断此位。
  46                                                                                  //0--执行键盘扫描及键码处理程序;1--不执行。
  47          
  48          bit b_KillShock=0;                                      //防抖标志清除位:0--不清除;1--清除。
  49          
  50          unsigned char uc_KillCount=0;           //抖动标志清除计数,使用定时器1。
  51          
  52          
  53          //*************************************************************************************************
  54          //*                                                                                                                                                                                               *
C51 COMPILER V8.05a   MAIN                                                                 08/11/2007 15:13:57 PAGE 2   

  55          //*                       ********************************主函数******************************                            *
  56          //*                                                                                                                                                                                               *
  57          //*************************************************************************************************
  58          void main()
  59          {
  60   1              SCANPORT=0x0F;            //初始化键盘接口。
  61   1      
  62   1              TMOD=0x11;                //定时器0:模式一;定时器0:模式一.
  63   1      
  64   1      
  65   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器0,用于LCD刷新>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  66   1              TH0=TIME0H;
  67   1              TL0=TIME0L;
  68   1              TR0=1;                   //开启定时器0
  69   1              ET0=1;                   //开定时器0中断
  70   1      
  71   1      
  72   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器1,用于防抖动标志清除>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  73   1              TH1=TIME1H;
  74   1              TL1=TIME1L;
  75   1              TR1=1;                   //开启定时器1
  76   1              ET1=1;                   //开定时器1中断
  77   1      
  78   1      
  79   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<外部中断0,用于执行键盘扫描和键处理程序>>>>>>>>>>>>>>>>>>>>>>>>>>
  80   1              IT0=1;                   //外部中断0,中断方式:下降沿
  81   1              EX0=1;                   //开启外部中断0
  82   1      
  83   1              PT0=1;                   //把定时器0设为高优先级,防止在按键的时候LED产生闪烁。
  84   1      
  85   1              EA=1;                    //开启总中断
  86   1      
  87   1              while(1);
  88   1      }
  89          
  90          
  91          //*************************************************************************************************
  92          //*                                                                                                                                                                                               *
  93          //*             ***************************外部中断0,调用键盘扫描程序*************************                   *
  94          //*                                                                                                                                                                                               *
  95          //*************************************************************************************************
  96          void vINT0(void) interrupt 0
  97          {
  98   1              EX0=0;                                                  //在键扫描处理时,关闭外部中断0,防抖动。
  99   1      
 100   1              if(b_KeyShock==0)
 101   1                      {
 102   2                      vKeyProcess(ucKeyScan());       //当判断有按键按下时,扫描键盘,并把扫描结果进行处理。
 103   2                      }
 104   1              else b_KeyShock=0;                              //如果有抖动则不执行键扫描,恢复防抖动标志。
 105   1      
 106   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<设置防抖动清除标志位 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
 107   1              if(b_KeyShock==1)
 108   1                      b_KillShock=1;                          //如果防抖动标志位开启则开启防抖动标志清除位,
 109   1                                                                              //300ms后清除防抖动标志。
 110   1      
 111   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<恢复键扫描处理前初始状态 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 112   1              EX0=1;                                                  //恢复按键中断。
 113   1      }
 114          
 115          
 116          //*************************************************************************************************
C51 COMPILER V8.05a   MAIN                                                                 08/11/2007 15:13:57 PAGE 3   

 117          //*                                                                                                                                                                                               *
 118          //*                     **********************定时器1中断,用于防抖动标志清除************************             *
 119          //*                                                                                                                                                                                               *
 120          //*************************************************************************************************
 121          void vTimer1(void) interrupt 3
 122          {
 123   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖动标志清除>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 124   1              if(b_KillShock==1)
 125   1                      {
 126   2                      if(uc_KillCount==7)                      //当防抖动标志位为1时,计时300ms后清除抖动标志位。
 127   2                              {
 128   3                              b_KeyShock=0;
 129   3                              b_KillShock=0;
 130   3                              uc_KillCount=0;
 131   3                              }
 132   2                      else uc_KillCount++;
 133   2                      }
 134   1      
 135   1              TH1=TIME1H;
 136   1              TL1=TIME1L;
 137   1      }
 138          //*************************************************************************************************
 139          //*                                                                                                                                                                                               *
 140          //*             ***************************定时器0,定时刷新LED*************************                                  *
 141          //*                                                                                                                                                                                               *
 142          //*************************************************************************************************
 143          void vTimer0(void) interrupt 1
 144          {
 145   1              vShowOneNum(*(pucLedNum(ul_Number)+uc_DisCount),uc_DisCount);      //在LED上显示1位数字。
 146   1      
 147   1              if(uc_DisCount<5)
 148   1                      uc_DisCount++;                                          //定时器0在每次被触发时,改变LED显示。
 149   1              else uc_DisCount=0;                                             //从第一位到第六位循环显示。
 150   1      
 151   1              TH0=TIME0H;                                                             //恢复定时器0初始值。
 152   1              TL0=TIME0L;
 153   1      }


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