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

📄 main.lst

📁 LCD1602.rar
💻 LST
📖 第 1 页 / 共 2 页
字号:
 140   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<设置防抖动清除标志位 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
 141   1              if(b_KeyShock==1)
 142   1                      b_KillShock=1;                          //如果防抖动标志位开启则开启防抖动标志清除位,
 143   1                                                                              //300ms后清除防抖动标志。
 144   1      
 145   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<恢复键扫描处理前初始状态 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 146   1              P2=0x0F;                                                //恢复P2口。
 147   1              EX0=1;                                                  //恢复按键中断。
 148   1      }
 149          
 150          
 151          //*************************************************************************************************
 152          //*                                                                                                                                                                                               *
 153          //*             ****************定时器1中断,用于计时功能和防抖动标志清除以及显示报告****************     *
 154          //*                                                                                                                                                                                               *
 155          //*************************************************************************************************
 156          void vTimer1(void) interrupt 3
 157          {
 158   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<计时模式计数刷新>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 159   1              if(b_ClockStart==1)                                     //当计时模式开启式,如计时处于运行状态则执行定时计数增加。
 160   1                      {
 161   2                      if(b_ClockOppose==0)                    //正常计时。
 162   2                              {
 163   3                              if(uc_TimeCount%21==0)
 164   3                                      {
 165   4                                      uc_TimeCount=1;
 166   4                                      ul_Number++;
 167   4                                      }
 168   3                              else uc_TimeCount++;
 169   3                              }
 170   2                      else
 171   2                              {                                                         //倒计时模式。
 172   3                              if(uc_TimeCount%21==0)
 173   3                                      {
 174   4                                      uc_TimeCount=1;
 175   4                                      if(ul_ClockOppose>0)
 176   4                                              {
 177   5                                              ul_ClockOppose--;
 178   5                                              ul_Number=ul_ClockOppose;
C51 COMPILER V8.05a   MAIN                                                                 08/07/2007 14:58:33 PAGE 4   

 179   5                                              }
 180   4                                      else
 181   4                                              {
 182   5                                              b_ClockStart=0;
 183   5                                              uc_ReportSymbol=7;
 184   5                                              b_LCDClean=1;
 185   5                                              }
 186   4                                      }
 187   3                              else uc_TimeCount++;
 188   3                              }
 189   2                      }
 190   1      
 191   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖动标志清除>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 192   1              if(b_KillShock==1)
 193   1                      {
 194   2                      if(uc_KillCount%5==0)                    //当防抖动标志位为1时,计时300ms后清除抖动标志位。
 195   2                              {
 196   3                              b_KeyShock=0;
 197   3                              b_KillShock=0;
 198   3                              uc_KillCount=1;
 199   3                              }
 200   2                      else uc_KillCount++;
 201   2                      }
 202   1      
 203   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<LCD显示报告>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 204   1              if(b_LCDClean==1)
 205   1                      {
 206   2                              if(uc_CleanCount==1)
 207   2                                      {
 208   3                                              EX0=0;                                                  //关闭键盘中断,此时按键无效。
 209   3                                              vShowReport(uc_ReportSymbol);
 210   3                                              b_ShowMode=1;
 211   3                                      }
 212   2                              if(uc_CleanCount%40==0)                                 //通过设置b_LCDClean为1便可启动延时清空LCD显示。
 213   2                                      {
 214   3                                              b_LCDClean=0;                                   //关闭清零标志位,清零结束。
 215   3                                              uc_CleanCount=1;                                //恢复清零计数为初始值1.
 216   3                                              b_ShowMode=0;                                   //恢复显示模式为默认的数字模式。
 217   3                                              b_ReportFlash=0;
 218   3                                              EX0=1;                                                  //重新开启键盘中断。
 219   3                                      }
 220   2                              else 
 221   2                                      {
 222   3                                      //<<<<<<<<<<<<<<<<<<<<<<<<<实现闪烁报告功能>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 223   3                                      if(uc_CleanCount%7==0)                                                                                                          
 224   3                                              {
 225   4                                                      if(b_ReportFlash==0)
 226   4                                                              {
 227   5                                                                      vCharCopy(uca_FlashBlank);
 228   5                                                                      b_ReportFlash=1;
 229   5                                                              }
 230   4                                                      else 
 231   4                                                              {
 232   5                                                                      vShowReport(uc_ReportSymbol);
 233   5                                                                      b_ReportFlash=0;
 234   5                                                              }
 235   4                                               }
 236   3                              uc_CleanCount++;
 237   3                                      }
 238   2                      }
 239   1      
 240   1              TH1=TIME1H;
C51 COMPILER V8.05a   MAIN                                                                 08/07/2007 14:58:33 PAGE 5   

 241   1              TL1=TIME1L;
 242   1      
 243   1      }
 244          
 245          
 246          //*************************************************************************************************
 247          //*                                                                                                                                                                                               *
 248          //*             ***************************定时器0,定时刷新LED*************************                                  *
 249          //*                                                                                                                                                                                               *
 250          //*************************************************************************************************
 251          void vTimer0(void) interrupt 1
 252          {
 253   1              if(b_ShowMode==0)
 254   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<数字模式>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 255   1                      {
 256   2                      vShowOneNum(*(pucLedNum(ul_Number)+uc_DisCount),6-uc_DisCount);    //在LCD上显示1位数字。
 257   2                      if(uc_DisCount==5)
 258   2                      uc_DisCount=0;                                          //定时器0在每次被触发时,改变LCD显示。
 259   2                      else uc_DisCount++;                                     //从第一位到第六位循环显示。
 260   2                      }
 261   1              else
 262   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<自定义模式>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 263   1                      {
 264   2                      vShowCustom(uca_ShowCustom[uc_DisCount],uc_DisCount);
 265   2                      if(uc_DisCount==5)
 266   2                      uc_DisCount=0;                                          //定时器0在每次被触发时,改变LCD显示。
 267   2                      else uc_DisCount++;                                     //从第一位到第六位循环显示。
 268   2                      }
 269   1      
 270   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<恢复定时器0初始状态 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 271   1              TH0=TIME0H;     
 272   1              TL0=TIME0L;
 273   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    540    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     21    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      6    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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