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

📄 mine.lst

📁 健身器械面板显示程序
💻 LST
字号:
C51 COMPILER V7.06   MINE                                                                  07/10/2006 19:16:23 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MINE
OBJECT MODULE PLACED IN mine.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE mine.c OPTIMIZE(2,SPEED) BROWSE NOINTVECTOR DEBUG OBJECTEXTEND SRC(.\mine.S
                    -RC)

stmt level    source

   1          #include <reg52.h>
   2          
   3          
   4          #define OSC_FREQ       (12000000ul)
   5          #define OSC_PER_INST    12
   6          #define INT_0     0                 //计数中断  
   7          #define TIMER_0   1                 //暂停时,控制闪烁时间  
   8          #define INT_1     2                 //暂停中断
   9          #define TIMER_2   5                 //系统时钟
  10          #define DIS       22                //edit it if necessary
  11          
  12          #define SELECT_4  P1                //位选 
  13          #define OUT_3     P0                //段选
  14           
  15          sbit int_0=P3^2;
  16          sbit int_1=P3^3;
  17          sbit Flash=P3^4;                    //控制CD4514B INHIBIT位以使LED在暂停时闪烁
  18          
  19          typedef unsigned char tbyte;
  20          typedef unsigned int  tword;
  21          typedef unsigned long tlong;
  22          typedef enum{WORK,TIMEOUT}Sys_state;
  23          
  24          
  25          tbyte min;
  26          tbyte sec;
  27          tbyte speed;
  28          tword dis;
  29                    //tbyte num[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
  30          tlong Add_one;                    //对中断0计数
  31          tbyte time_G;                     //现在时间
  32          tbyte time_temp_G;                //与现在时间求时间间隔以计算速度
  33          Sys_state Sys_flag;
  34          
  35          tbyte flash_t=50;
  36          
  37          
  38          void show_init(void);
  39          void sEOS_init(const char);
  40          void show(tbyte,tbyte);
  41          void display(void);
  42          
  43          
  44          void main(void)
  45          {
  46   1       show_init();
  47   1       sEOS_init(10);//setup interrupt &&timer2
  48   1        
  49   1       while(1)
  50   1          {
  51   2           display();
  52   2          }
  53   1      }
  54          
C51 COMPILER V7.06   MINE                                                                  07/10/2006 19:16:23 PAGE 2   

  55          
  56          void show_init(void)
  57          {
  58   1       min=0;
  59   1       sec=0;
  60   1       speed=0;
  61   1       dis=0;
  62   1       Flash=0;
  63   1       Sys_flag=WORK;
  64   1      }
  65          
  66          //**************************
  67          
  68          void display(void)
  69          {
  70   1       show(0,sec%10);
  71   1       show(1,sec/10);
  72   1       show(2,min%10);
  73   1       show(3,min/10);
  74   1       show(4,dis%10);
  75   1       show(5,dis/10%10);
  76   1       show(6,dis/100%10);
  77   1       show(7,dis/1000%10);
  78   1       show(8,speed%10);
  79   1       show(9,speed/10);
  80   1      }
  81          
  82          void show(tbyte addr,tbyte dat)
  83          {
  84   1        tword k=50;
  85   1        
  86   1        OUT_3    =dat;
  87   1        SELECT_4 =addr;
  88   1      
  89   1         while(--k);
  90   1      }
  91          
  92          
  93          
  94          void sEOS_init(const tbyte TICK)
  95          {
  96   1       //setup timer2
  97   1         tlong Inc;
  98   1         tword Reload_16;
  99   1         tbyte Reload_08H, Reload_08L;
 100   1      
 101   1         Add_one=0;
 102   1         time_G=0;
 103   1         time_temp_G=0;
 104   1      
 105   1         // Timer 2 is configured as a 16-bit timer,
 106   1         // which is automatically reloaded when it overflows
 107   1         T2CON   = 0x04;   // Load Timer 2 control register
 108   1      
 109   1         // Number of timer increments required (max 65536)
 110   1         Inc = ((tlong)TICK*(OSC_FREQ/1000))/OSC_PER_INST;   
 111   1      
 112   1         // 16-bit reload value
 113   1         Reload_16 = (tword) (65536UL - Inc);
 114   1      
 115   1         // 8-bit reload values (High & Low)
 116   1         Reload_08H = (tbyte)(Reload_16 / 256);
C51 COMPILER V7.06   MINE                                                                  07/10/2006 19:16:23 PAGE 3   

 117   1         Reload_08L = (tbyte)(Reload_16 % 256);
 118   1      
 119   1         // Used for manually checking timing (in simulator)
 120   1         //P2 = Reload_08H;
 121   1         //P3 = Reload_08L;
 122   1      
 123   1         TH2     = Reload_08H;   // Load T2 high byte
 124   1         RCAP2H  = Reload_08H;   // Load T2 reload capt. reg. high byte
 125   1         TL2     = Reload_08L;   // Load T2 low byte
 126   1         RCAP2L  = Reload_08L;   // Load T2 reload capt. reg. low byte
 127   1      
 128   1         // Timer 2 interrupt is enabled, and ISR will be called 
 129   1         // whenever the timer overflows.
 130   1         ET2 = 1;
 131   1          //setup int0
 132   1         IT0 = 1;
 133   1         EX0 = 1;
 134   1              //setup int1
 135   1         IT1 = 1;
 136   1         EX1 = 1;
 137   1         //setup  time0
 138   1         TMOD= 0x01;
 139   1         TH0 = 0xB1;
 140   1         TL0 = 0xE0;
 141   1         // Start Timer 2 running
 142   1         TR2 = 1;     
 143   1      
 144   1         EA  = 1;            // Globally enable interrupts
 145   1      }
 146          
 147          //************************************
 148          //中断0,计算路程和根据时间计算速度
 149          
 150          void intp0(void) interrupt INT_0
 151           {
 152   1        Add_one++;
 153   1      
 154   1        if(time_G<time_temp_G)
 155   1          speed=DIS*10/(time_G+100-time_temp_G);
 156   1          speed=DIS*10/(time_G-time_temp_G);
 157   1      
 158   1         dis=Add_one*DIS;
 159   1         time_temp_G=time_G;
 160   1       }
 161          
 162          //************************************
 163          //系统时钟,计算时间
 164          
 165           void timer2(void) interrupt TIMER_2
 166            {
 167   1         if(++time_G==100)
 168   1           {
 169   2                 time_G=0;
 170   2                 if(++sec==60)
 171   2                   {
 172   3                         sec=0;
 173   3                         ++min;
 174   3                       }
 175   2               }
 176   1        }
 177          
 178          //*************************************
C51 COMPILER V7.06   MINE                                                                  07/10/2006 19:16:23 PAGE 4   

 179          //中断1,系统暂停
 180          void intp1(void) interrupt INT_1
 181          {
 182   1        flash_t=50;
 183   1      
 184   1       if(Sys_flag==WORK)
 185   1         {
 186   2           Sys_flag=TIMEOUT;
 187   2           TR2 =0;                      //禁止系统时钟&计数中断
 188   2           EX0 =0;
 189   2           TR0 =1;                                      //开放暂停时钟计时
 190   2           ET0 =1;
 191   2         }
 192   1       else
 193   1         {
 194   2           Sys_flag=WORK; 
 195   2           TR2 =1;
 196   2           EX0 =1;
 197   2           TR0 =0;
 198   2           ET0 =0;
 199   2           Flash=0;   
 200   2         }
 201   1      }
 202          
 203          
 204          //*************************************
 205          //时钟中断0,计算LED闪烁时间
 206          
 207          void timer0(void) interrupt TIMER_0
 208          {
 209   1         while(--flash_t==0)
 210   1            {
 211   2                  #pragma asm
 212   2                 CPL Flash
 213   2              #pragma endasm
 214   2            }
 215   1      
 216   1      }


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