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

📄 main.lst

📁 51单片机控制1602液晶显示器显示的程序
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  10/14/2007 14:35:24 PAGE 1   


C51 COMPILER V7.50, 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;.\include) DEBUG OBJECTEXTEND PRINT(
                    -.\main.lst) OBJECT(main.obj)

line level    source

   1          //*************************************************************************************************
   2          //*************************************************************************************************
   3          //**<程序名>:LCD显示应用                                                                                                                                                **
   4          //**<功能>:LCD显示滚动的一句话,以及键盘输入。                                                                                                  **
   5          //**<作者>:LastRitter                                                                                                                                                   **
   6          //**<完成时间>:2007年8月8日                                                                                                                                     **
   7          //**<联系方式>:E-mail:superyongzhe@163.com;QQ:314665354。                                                                               **
   8          //*************************************************************************************************
   9          //*************************************************************************************************
  10          
  11          //*************************************************************************************************
  12          //*                                                                                                                                                                                               *
  13          //*                      ******************************头文件及宏定义**************************                           *
  14          //*                                                                                                                                                                                               *
  15          //*************************************************************************************************
  16          #include <at89x51.h> 
*** WARNING C318 IN LINE 16 OF sources\main.c: can't open file 'at89x51.h'
  17          #include <intrins.h>
  18          
  19          #define TIME1H 0x3C
  20          #define TIME1L 0xB0             //定时器1溢出时间:50ms
  21          
  22          
  23          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  24          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖动标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  25          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  26          bit b_KeyShock=0;                                       //键盘防抖动标志位。
  27                                                                                  //当按键中断产生时,首先判断此位。
  28                                                                                  //0--执行键盘扫描及键码处理程序;1--不执行。
  29          
  30          bit b_KillShock=0;                                      //防抖标志清除位:0--不清除;1--清除。
  31          
  32          unsigned char uc_KillCount=1;           //抖动标志清除计数,使用定时器1。
  33          
  34          
  35          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  36          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<键盘扫描开启标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  37          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  38          bit b_KeyScan=0;                                        //0--不扫描;
  39                                                                                  //1--扫描。
  40          
  41          extern bit b_Introduce;                         //介绍关闭标志,当置零时,介绍就会停止显示。
  42          
  43          
  44          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  45          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<按键计数清除>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  46          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  47          unsigned char uc_CleanCount=0;                                  //清除按键计数时间计数。
  48          
  49          extern bit b_CleanClick;                                                //清除按键计数标志,定义在KeyProcess.c中
  50                                                                                                          //0--不清除;
  51                                                                                                          //1--清除。
  52                                                                                                          //在定时器1中使用。
  53          
C51 COMPILER V7.50   MAIN                                                                  10/14/2007 14:35:24 PAGE 2   

  54          extern unsigned char uc_ClickCount;                             //按键连续点击计数,定义在KeyProcess.c中。
  55          
  56          extern unsigned char uc_KeyTemp;                                //按键键码暂存,定义在KeyProcess.c中。
  57          
  58          
  59          
  60          //*************************************************************************************************
  61          //*                                                                                                                                                                                               *
  62          //*                       ********************************主函数******************************                            *
  63          //*                                                                                                                                                                                               *
  64          //*************************************************************************************************
  65          void main()
  66          {
  67   1              P1=0x0F;
*** ERROR C202 IN LINE 67 OF SOURCES\MAIN.C: 'P1': undefined identifier
  68   1              
  69   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<外部中断0,用于开启键盘扫描及键码处理标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  70   1              IT0=1;                   //     中断方式:下降沿。
*** ERROR C202 IN LINE 70 OF SOURCES\MAIN.C: 'IT0': undefined identifier
  71   1              EX0=1;                   //     开启外部中断。
*** ERROR C202 IN LINE 71 OF SOURCES\MAIN.C: 'EX0': undefined identifier
  72   1      
  73   1      
  74   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器1,用于防抖动标志清除 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  75   1              TH1=TIME1H;
*** ERROR C202 IN LINE 75 OF SOURCES\MAIN.C: 'TH1': undefined identifier
  76   1              TL1=TIME1L;
*** ERROR C202 IN LINE 76 OF SOURCES\MAIN.C: 'TL1': undefined identifier
  77   1              TR1=1;                   //开启定时器1
*** ERROR C202 IN LINE 77 OF SOURCES\MAIN.C: 'TR1': undefined identifier
  78   1              ET1=1;                   //开定时器1中断
*** ERROR C202 IN LINE 78 OF SOURCES\MAIN.C: 'ET1': undefined identifier
  79   1              
  80   1              EA=1;                    //开总中断。
*** ERROR C202 IN LINE 80 OF SOURCES\MAIN.C: 'EA': undefined identifier
  81   1      
  82   1              vdInitialize();                         //LCD初始化,相关参数在“SMC1602.h”中修改。
  83   1                                                                      //注意,初始化里省略了vWriteCMD(0x0C),在vIntroduce()里有。
  84   1      
  85   1              vIntroduce();                           //显示介绍。
  86   1      
  87   1              while(1)
  88   1              {
  89   2              if(b_KeyScan==1)                   //如果有按键按下,则进行按键扫描和键码处理。
  90   2                      {
  91   3                      b_KeyScan=0;
  92   3                      vKeyProcess(ucKeyScan());
  93   3                      }
  94   2              }
  95   1      }
  96          
  97          //*************************************************************************************************
  98          //*                                                                                                                                                                                               *
  99          //*             ******************************外部中断0,用于开启键盘扫描及键码处理******************     *
 100          //*                                                                                                                                                                                               *
 101          //*************************************************************************************************
 102          void vINT0(void) interrupt 0
 103          {
 104   1              if(b_KeyShock==0)
 105   1                      {
 106   2                      if(b_Introduce==0)                      //此判断是为了屏蔽从介绍返回字符输入时的键盘扫描。
 107   2                              {
C51 COMPILER V7.50   MAIN                                                                  10/14/2007 14:35:24 PAGE 3   

 108   3                              b_KeyScan=1;                    //开启键盘扫描标志。
 109   3                              b_KeyShock=1;                   //设置防抖动标志。
 110   3                              }
 111   2                      }
 112   1              else b_KeyShock=0;                              //如果有抖动则不执行键扫描,恢复防抖动标志。
 113   1      
 114   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<设置防抖动清除标志位 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
 115   1              if(b_KeyShock==1)
 116   1                      b_KillShock=1;                          //如果防抖动标志位开启则开启防抖动标志清除位,
 117   1                                                                              //300ms后清除防抖动标志。
 118   1      
 119   1              b_Introduce=0;                                  //用于关闭介绍,在显示介绍时如果有案件按下,产生的中断会
 120   1      }                                                                       //把此标志置零,便可退出介绍。
 121          
 122          
 123          
 124          //*************************************************************************************************
 125          //*                                                                                                                                                                                               *
 126          //*             ****************定时器1中断,用于计时功能和防抖动标志清除以及显示报告****************     *
 127          //*                                                                                                                                                                                               *
 128          //*************************************************************************************************
 129          void vTimer1(void) interrupt 3
 130          {
 131   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 132   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖动标志清除>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 133   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 134   1              if(b_KillShock==1)
 135   1                      {
 136   2                      if(uc_KillCount%5==0)                    //当防抖动标志位为1时,计时300ms后清除抖动标志位。
 137   2                              {
 138   3                              b_KeyShock=0;
 139   3                              b_KillShock=0;
 140   3                              uc_KillCount=1;
 141   3                              }
 142   2                      else uc_KillCount++;
 143   2                      }
 144   1      
 145   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 146   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<按键计数清除>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 147   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 148   1              if(b_CleanClick==1)
 149   1                      {
 150   2                      if(uc_CleanCount==100)
 151   2                              {
 152   3                              b_CleanClick=0;                          //关闭改计数。
 153   3      
 154   3                              uc_CleanCount=1;                         //恢复计数初值。
 155   3      
 156   3                              uc_ClickCount=1;                         //清除按键计数。
 157   3      
 158   3                              uc_KeyTemp=0;
 159   3                              }
 160   2                      else
 161   2                              uc_CleanCount++;
 162   2                      }
 163   1      
 164   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 165   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<恢复定时器1溢出时间>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 166   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 167   1              TH1=TIME1H;
 168   1              TL1=TIME1L;
 169   1      }
C51 COMPILER V7.50   MAIN                                                                  10/14/2007 14:35:24 PAGE 4   


C51 COMPILATION COMPLETE.  1 WARNING(S),  8 ERROR(S)

⌨️ 快捷键说明

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