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

📄 main.lst

📁 Proteus实例集锦(包括电路图.仿真程序,各种各样的电路
💻 LST
字号:
C51 COMPILER V8.05a   MAIN                                                                 08/11/2007 16:59:45 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 source\main.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\main.lst)
                    - OBJECT(main.obj)

line level    source

   1          //*************************************************************************************************
   2          //*************************************************************************************************
   3          //**<程序名>:键盘控制直流电机运转。                                                                                                                     **
   4          //**<功能>:通过按键控制直流电机运转并在LCD上显示运行状态。                                                                              **
   5          //**<作者>:LastRitter                                                                                                                                                   **
   6          //**<完成时间>:2007年8月8日                                                                                                                                     **
   7          //**<联系方式>:E-Mail:superyongzhe@163.com;QQ:314665354。                                                                               **
   8          //*************************************************************************************************
   9          //*************************************************************************************************
  10          #include "includes.h"
  11          
  12          
  13          #define TIME0H 0xFF
  14          #define TIME0L 0x9C             //定时器0溢出时间:0.1ms
  15          
  16          
  17          #define TIME1H 0x3C
  18          #define TIME1L 0xB0             //定时器1溢出时间:50ms
  19          
  20          
  21          
  22          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  23          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<PWM调制计数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  24          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  25          unsigned char uc_MoCount=0;
  26          unsigned char uc_MoChange=128;
  27          
  28          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  29          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖动标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  30          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  31          bit b_KeyShock=0;                                       //键盘防抖动标志位。
  32                                                                                  //当按键中断产生时,首先判断此位。
  33                                                                                  //0--执行键盘扫描及键码处理程序;1--不执行。
  34          
  35          bit b_KillShock=0;                                      //防抖标志清除位:0--不清除;1--清除。
  36          
  37          unsigned char uc_KillCount=1;           //抖动标志清除计数,使用定时器1。
  38          
  39          
  40          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  41          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<键盘扫描开启标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  42          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  43          bit b_KeyScan=0;                                        //0--不扫描;
  44                                                                                  //1--扫描。
  45          
  46          
  47          
  48          void main()
  49          {
  50   1              vdInitialize();
  51   1      
  52   1              vWriteCMD(0x80);
  53   1              vShowChar("Motor Run Status");
  54   1              vWriteCMD(0xC4);
C51 COMPILER V8.05a   MAIN                                                                 08/11/2007 16:59:45 PAGE 2   

  55   1              vShowChar("Stop");
  56   1              vWriteCMD(0xCC);
  57   1              vShowNumber(uc_MoChange);
  58   1      
  59   1              SCANPORT=0x0F;
  60   1      
  61   1              MOTORPORT=MO_STOP;
  62   1              
  63   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<外部中断0,用于开启键盘扫描及键码处理标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  64   1              IT0=1;                   //     中断方式:下降沿。
  65   1              EX0=1;                   //     开启外部中断。
  66   1      
  67   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器0,定时器0中断,用于PWM调制计数 >>>>>>>>>>>>>>>>>>>>>>>>
  68   1              TMOD=0x11;
  69   1              
  70   1              TH0=TIME0H;
  71   1              TL0=TIME0L;
  72   1              TR0=1;
  73   1              ET0=1;
  74   1      
  75   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器1,用于防抖动标志清除 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  76   1              TH1=TIME1H;
  77   1              TL1=TIME1L;
  78   1              TR1=1;                   //开启定时器1
  79   1              ET1=1;                   //开定时器1中断
  80   1      
  81   1      
  82   1              EA=1;
  83   1      
  84   1              while(1)
  85   1              {
  86   2              if(b_KeyScan==1)                   //如果有按键按下,则进行按键扫描和键码处理。
  87   2                      {
  88   3                      b_KeyScan=0;
  89   3                      vKeyProcess(ucKeyScan());
  90   3                      }
  91   2              }
  92   1      }
  93          
  94          //*************************************************************************************************
  95          //*                                                                                                                                                                                               *
  96          //*             ******************************外部中断0,用于开启键盘扫描及键码处理******************     *
  97          //*                                                                                                                                                                                               *
  98          //*************************************************************************************************
  99          void vINT0(void) interrupt 0
 100          {
 101   1              if(b_KeyShock==0)
 102   1                      {
 103   2                              b_KeyScan=1;                    //开启键盘扫描标志。
 104   2                              b_KeyShock=1;                   //设置防抖动标志。
 105   2                      }
 106   1              else b_KeyShock=0;                              //如果有抖动则不执行键扫描,恢复防抖动标志。
 107   1      
 108   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<设置防抖动清除标志位 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
 109   1              if(b_KeyShock==1)
 110   1                      b_KillShock=1;                          //如果防抖动标志位开启则开启防抖动标志清除位,
 111   1                                                                              //300ms后清除防抖动标志。
 112   1      
 113   1      }
 114          
 115          
 116          //*************************************************************************************************
C51 COMPILER V8.05a   MAIN                                                                 08/11/2007 16:59:45 PAGE 3   

 117          //*                                                                                                                                                                                               *
 118          //*             ****************************定时器0中断,用于PWM调制计数****************************      *
 119          //*                                                                                                                                                                                               *
 120          //*************************************************************************************************
 121          void vTimer0() interrupt 1
 122          {
 123   1              
 124   1              if(uc_MoChange>128)                                       //正向。
 125   1                      {
 126   2                      if(uc_MoCount<uc_MoChange)
 127   2                              MOTORPORT=MO_COMMON;
 128   2                      else
 129   2                              MOTORPORT=MO_CUTOFF;
 130   2                      }
 131   1              else
 132   1                      {
 133   2                      if(uc_MoChange<127)                              //反向。
 134   2                              {
 135   3                              if(uc_MoCount>uc_MoChange)
 136   3                                      MOTORPORT=MO_OPPOSE;
 137   3                              else
 138   3                                      MOTORPORT=MO_CUTOFF;
 139   3                              }
 140   2                      else
 141   2                              MOTORPORT=MO_STOP;                      //停止
 142   2                      }
 143   1      
 144   1              
 145   1              
 146   1              
 147   1              if(uc_MoCount<255)
 148   1                      uc_MoCount++;
 149   1              else
 150   1                      uc_MoCount=0;
 151   1      
 152   1              TH0=TIME0H;
 153   1              TL0=TIME0L;             
 154   1      }
 155          //*************************************************************************************************
 156          //*                                                                                                                                                                                               *
 157          //*             ****************定时器1中断,用于计时功能和防抖动标志清除以及显示报告****************     *
 158          //*                                                                                                                                                                                               *
 159          //*************************************************************************************************
 160          void vTimer1(void) interrupt 3
 161          {
 162   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 163   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖动标志清除>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 164   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 165   1              if(b_KillShock==1)
 166   1                      {
 167   2                      if(uc_KillCount==5)                      //当防抖动标志位为1时,计时300ms后清除抖动标志位。
 168   2                              {
 169   3                              b_KeyShock=0;
 170   3                              b_KillShock=0;
 171   3                              uc_KillCount=1;
 172   3                              }
 173   2                      else uc_KillCount++;
 174   2                      }
 175   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 176   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<恢复定时器1溢出时间>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 177   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 178   1              TH1=TIME1H;
C51 COMPILER V8.05a   MAIN                                                                 08/11/2007 16:59:45 PAGE 4   

 179   1              TL1=TIME1L;
 180   1      } 


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    227    ----
   CONSTANT SIZE    =     22    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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