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

📄 controler.lst

📁 AT89C2051为电动车充电器装加控制器
💻 LST
字号:
C51 COMPILER V7.06   CONTROLER                                                             04/11/2006 18:30:05 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE CONTROLER
OBJECT MODULE PLACED IN controler.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE controler.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg51.h>
   2          #define LEDLen 3
   3          
   4          
   5          sbit OUT0 = P1^0;
   6          sbit OUT1 = P1^1;
   7          sbit OUT2 = P1^2;
   8          sbit OUT3 = P1^3;
   9          sbit OUT4 = P1^4;
  10          sbit OUT5 = P1^5;
  11          sbit OUT6 = P1^6;
  12          sbit OUT7 = P1^7;
  13          
  14          int bdata Second;
  15          sbit TURN0 = Second^8;
  16          sbit TURN1 = Second^9;
  17          sbit TURN2 = Second^10;
  18          
  19          int bdata flag;
  20          
  21          sbit I_test = flag^0;                   //电流测试标志  
  22          
  23          
  24          
  25          unsigned char Sec,Time;
  26          
  27          unsigned int w;
  28          
  29          unsigned char LEDBuf[LEDLen];             //显示缓冲区
  30          unsigned char Buf0[LEDLen];
  31          unsigned char Buf1[LEDLen];
  32          
  33          code unsigned char LEDMAP[] = {
  34          
  35                0x80,  0xb9,  0x24,  0x30,  0x19,  0x12,  0x02,  0xb8,  0x00,  0x10
  36          };
  37          
  38          void delay1() {
  39   1         unsigned int j;
  40   1              for (j=0;j<30000; j++){}
  41   1              }
  42          
  43               
  44          
  45          void Delay(unsigned char CNT) {         //延时函数
  46   1        unsigned int i;        
  47   1        while (CNT-- !=0)
  48   1          for (i=100; i !=0; i--);
  49   1                
  50   1      
  51   1      }
  52          
  53          
  54          void DisplayLED()  {                     //显示函数
  55   1         unsigned char i;
C51 COMPILER V7.06   CONTROLER                                                             04/11/2006 18:30:05 PAGE 2   

  56   1          
  57   1            
  58   1         for (i = 0; i < LEDLen; i++) {
  59   2              
  60   2               P3 = LEDBuf[i];
  61   2               if (i == 0) {
  62   3               OUT4 = 1;
  63   3               OUT3 = 1;
  64   3               OUT2 = 0;
  65   3               
  66   3          }
  67   2               else if (i == 1) {
  68   3               OUT4 = 1;
  69   3               OUT3 = 0;
  70   3               OUT2 = 1;
  71   3               }
  72   2               else {
  73   3               OUT4 = 0;
  74   3               OUT3 = 1;
  75   3               OUT2 = 1;
  76   3               }
  77   2                             
  78   2         Delay(1);
  79   2         
  80   2        }
  81   1      }
  82          
  83                       //中断函数
  84          #define Tick     4000                      //4000x250us=1s
  85          #define T250us   (256-230)                   //250us 时间常数(fosc11.0592
  86          unsigned char Hour, Minute;
  87          
  88          unsigned int C250us;                       //250us 计数单元
  89          
  90          
  91          
  92          void T0Int() interrupt 1  {              //T0 中断服务函数
  93   1        C250us--;
  94   1            if (C250us == 0)  {
  95   2               C250us = Tick/8;                //250us 计数器为0,重置计数器
  96   2      
  97   2      
  98   2                              Second++;                      //秒进位
  99   2      
 100   2            if (Time == 8){                      //点位处理
 101   3                OUT5 = TURN2;   
 102   3                 
 103   3                  }
 104   2              else  {
 105   3                    OUT5 = TURN0;
 106   3               
 107   3      }
 108   2                 
 109   2      
 110   2                if (Second == 480) {                  
 111   3                           
 112   3               Second = 0;                        //秒清零
 113   3      
 114   3      
 115   3                   Minute++;
 116   3                   if (Minute == 60) {
 117   4                       Minute = 0;
C51 COMPILER V7.06   CONTROLER                                                             04/11/2006 18:30:05 PAGE 3   

 118   4                       Hour++;
 119   4                       if (Hour == Time){ 
 120   5                         
 121   5                          OUT5 = 1;
 122   5                          TURN0 = 1;
 123   5                          TR0 = 0;           
 124   5                                                       }
 125   4               }
 126   3             }
 127   2          }
 128   1      }
 129          
 130          
 131          void main()  {                                 //主函数
 132   1         
 133   1      
 134   1      
 135   1         Time   = 8;            //
 136   1         TMOD   = 0X02;         //设置T0工作方式与处置
 137   1         TH0    = T250us;
 138   1         TL0    = T250us;
 139   1         IE     = 0x82;          //开中断
 140   1         Hour   = 0;
 141   1         Minute = 0;
 142   1         Second = 0;
 143   1         C250us = Tick;
 144   1         TR0    = 1;              //启动定时器 0
 145   1      
 146   1         
 147   1         I_test = 0;             //启动程序
 148   1      
 149   1         
 150   1              P3 = 0x00; 
 151   1       if  (P3 == 0x00  ){            //启动检测电流
 152   2            
 153   2               OUT6 = 0;
 154   2                                                     
 155   2              delay1();
 156   2                        OUT6 = 1;
 157   2              delay1();
 158   2                        if (P3 == 0x00){             //确认电流
 159   3              OUT6 = 0;
 160   3                        delay1();
 161   3                        OUT6 = 1;
 162   3                delay1();
 163   3                                        
 164   3         while (1)  {                  //循环函数
 165   4              
 166   4              LEDBuf[0] = LEDMAP[Hour%10];
 167   4              LEDBuf[1] = LEDMAP[Minute/10];
 168   4              LEDBuf[2] = LEDMAP[Minute%10]; 
 169   4             
 170   4              DisplayLED();
 171   4              if (Hour == Time){
 172   5                         OUT7 = 0;
 173   5                         TURN0 = 1;
 174   5                        OUT5 = 1;
 175   5                        }
 176   4             
 177   4                        if (Time == 8){                  //转浮冲的翻转函数
 178   5              P3 = 0x00;
 179   5                        if (P3 != 0x00){                 //检测电流是否反转
C51 COMPILER V7.06   CONTROLER                                                             04/11/2006 18:30:05 PAGE 4   

 180   6                        Buf0[0]=LEDBuf[0];
 181   6                        Buf0[1]=LEDBuf[1];
 182   6                        Buf0[2]=LEDBuf[2];
 183   6                        Second=0x00;
 184   6                        Minute=0x00;
 185   6                        Hour=0x00;
 186   6              Time = 2;
 187   6              }
 188   5                        }
 189   4                      else                                         //如果已经进入浮充
 190   4                          if (TURN0 == 1)                                 //翻看函数  
 191   4                    
 192   4                   if (OUT5 == 0){
 193   5                                       
 194   5                                       w=600;                                   //翻看时间
 195   5                                       while (w){
 196   6                      w--;
 197   6                                       LEDBuf[0]=Buf0[0];
 198   6                                       LEDBuf[1]=Buf0[1];
 199   6                                       LEDBuf[2]=Buf0[2];
 200   6                                       DisplayLED();
 201   6                                       
 202   6                                       }
 203   5                   }
 204   4      
 205   4                
 206   4          }
 207   3      
 208   3      }
 209   2      
 210   2      }
 211   1        
 212   1      }
 213          
 214                 


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