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

📄 电源老化测试定时器.lst

📁 电源老化房老化测试定时器 望大家有用
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   电源老化测试定时芲                                                   11/08/2007 21:39:03 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE 电源老化测试定时芲
OBJECT MODULE PLACED IN 电源老化测试定时器.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 电源老化测试定时器.c BROWSE DEBUG OBJECTEXTEND TABS(8)

line level    source

   1          
   2          #include<reg51.h>
   3          #include<intrins.h>
   4          #define uchar unsigned char
   5          #define uint  unsigned int 
   6          
   7          sbit RSPIN = P2^7;
   8          sbit RWPIN = P2^6;
   9          sbit EPIN = P2^5;
  10          sbit out= P1^0;
  11           /* 增特殊功能寄存器定义        */
  12          sfr      ISP_DATA       =   0xe2;
  13          sfr  ISP_ADDRH  =   0xe3;  
  14          sfr  ISP_ADDRL  =   0xe4;
  15          sfr  ISP_CMD    =   0xe5; 
  16          sfr  ISP_TRIG   =   0xe6;   
  17          sfr  ISP_CONTR  =   0xe7;
  18          
  19          
  20          /* 定义常量 */
  21          #define ERROR   0
  22          #define OK      1
  23          
  24          bit km;                         //按键已去抖动标志
  25          bit kp;                       //按键已处理标志
  26          
  27          bit ON_OFF; 
  28          bit start; 
  29          bit rest; 
  30          bit sheding; 
  31          uchar show_status;      //LED 显示状态标志
  32          uchar XPOS,YPOS;
  33          uint  ON,OFF,TIMER;
  34          uint  ON_R ,OFF_R,TIMER_R; 
  35          uchar ON_0,ON_1,ON_2,OFF_0,OFF_1,OFF_2,TIMER_0,TIMER_1,TIMER_2 ;
  36          uint  count_down;      //1秒钟计时用
  37          uchar miao;
  38          
  39          void delay(unsigned int t)
  40          {  unsigned int i,j;
  41   1         for(i=0;i<t;i++)
  42   1            for(j=0;j<10;j++)
  43   1               ;
  44   1      }
  45          
  46          
  47              /* 打开 ISP,IAP 功能 */
  48          void ISP_IAP_enable(void)
  49          {
  50   1              EA      =       0;      /* 关中断 */
  51   1              ISP_CONTR       =       ISP_CONTR & 0x18;       /* 0001,1000 */
  52   1              ISP_CONTR       =       ISP_CONTR | 0x02;
  53   1              ISP_CONTR       =       ISP_CONTR | 0x80;       /* 1000,0000 */
  54   1      }
  55          
C51 COMPILER V8.05a   电源老化测试定时芲                                                   11/08/2007 21:39:03 PAGE 2   

  56          /* 关闭 ISP,IAP 功能 */
  57          void ISP_IAP_disable(void)
  58          {
  59   1              ISP_CONTR       =       ISP_CONTR & 0x7f;       /* 0111,1111 */
  60   1              ISP_TRIG        =       0x00;
  61   1              EA                      =   1;                  /* 开中断 */
  62   1      }
  63          
  64          /* 字节读 */
  65          uchar byte_read(uint byte_addr)
  66          {
  67   1              ISP_ADDRH       =       (uchar)(byte_addr >> 8);
  68   1              ISP_ADDRL       =       (uchar)(byte_addr & 0x00ff);
  69   1      
  70   1              ISP_CMD         =       ISP_CMD &       0xf8;        /* 1111,1000 */
  71   1              ISP_CMD         =       ISP_CMD |       0x01;        /* 0000,0001 */
  72   1      
  73   1              ISP_IAP_enable();
  74   1      
  75   1              ISP_TRIG        =       0x46;
  76   1              ISP_TRIG        =       0xb9;
  77   1              _nop_();
  78   1      
  79   1              ISP_IAP_disable();
  80   1              return (ISP_DATA);
  81   1      }
  82          
  83          /* 扇区擦除 */
  84          uchar sector_erase(uint sector_addr)
  85          {
  86   1              uint get_sector_addr    =       0;
  87   1              get_sector_addr                 =       (sector_addr & 0xfe00); /* 1111,1110,0000,0000; 取扇区地址 */
  88   1              ISP_ADDRH                       =       (uchar)(get_sector_addr >> 8);
  89   1              ISP_ADDRL                       =       0x00;
  90   1      
  91   1              ISP_CMD =       ISP_CMD &       0xf8;   /* 1111,1000 */
  92   1              ISP_CMD =       ISP_CMD |       0x03;   /* 0000,0011 */
  93   1      
  94   1              ISP_IAP_enable();
  95   1              ISP_TRIG        =       0x46;        /* 触发ISP_IAP命令 */
  96   1              ISP_TRIG        =       0xb9;        /* 触发ISP_IAP命令 */
  97   1               _nop_();
  98   1      
  99   1              ISP_IAP_disable();
 100   1              return OK;
 101   1      }
 102          
 103          /* 字节编程 */
 104          uchar byte_program(uint byte_addr, uchar original_data)
 105          {
 106   1              ISP_ADDRH       =       (uchar)(byte_addr >> 8);
 107   1              ISP_ADDRL       =       (uchar)(byte_addr & 0x00ff);
 108   1      
 109   1              ISP_CMD         =       ISP_CMD &       0xf8;        /* 1111,1000 */
 110   1              ISP_CMD         =       ISP_CMD |       0x02;           /* 0000,0010 */
 111   1              ISP_DATA        =       original_data;
 112   1      
 113   1              ISP_IAP_enable();
 114   1              ISP_TRIG        =       0x46;        /* 触发ISP_IAP命令 */
 115   1              ISP_TRIG        =       0xb9;        /* 触发ISP_IAP命令 */
 116   1              _nop_();
 117   1      
C51 COMPILER V8.05a   电源老化测试定时芲                                                   11/08/2007 21:39:03 PAGE 3   

 118   1              ISP_IAP_disable();
 119   1              return  OK;
 120   1      }
 121          
 122          
 123          
 124          
 125          
 126          
 127          
 128          
 129          
 130          
 131          
 132          
 133          
 134          
 135          
 136          
 137          
 138          
 139          
 140          
 141          
 142          
 143          
 144          void lcdwaitidle(void)
 145          {  P0=0xff;
 146   1         RSPIN=0;
 147   1         RWPIN=1;
 148   1         EPIN=1;
 149   1         while((P0&0x80)==0x80);
 150   1         EPIN=0;
 151   1      }
 152          
 153          void lcdwcn(unsigned char c)
 154          {  RSPIN=0;
 155   1         RWPIN=0;
 156   1         P0=c;
 157   1         EPIN=1;
 158   1         _nop_();
 159   1         EPIN=0;
 160   1      }
 161          
 162          void lcdwc(unsigned char c)
 163          {  lcdwaitidle();
 164   1         lcdwcn(c);
 165   1      }
 166          
 167          void lcdwd(unsigned char d)
 168          {  lcdwaitidle();
 169   1         RSPIN=1;
 170   1         RWPIN=0;
 171   1         P0=d;
 172   1         EPIN=1;
 173   1         _nop_();
 174   1         EPIN=0;
 175   1      }
 176          
 177          void lcdpos(void)
 178          {  XPOS&=0x0f;
 179   1         YPOS&=0x03;
C51 COMPILER V8.05a   电源老化测试定时芲                                                   11/08/2007 21:39:03 PAGE 4   

 180   1         if(YPOS==0x00)
 181   1            lcdwc(XPOS|0x80);
 182   1         else if(YPOS==0x01)
 183   1            lcdwc((XPOS+0x40)|0x80);
 184   1      }
 185          
 186          void lcdreset()
 187          {  delay(150); lcdwcn(0x38);
 188   1         delay(50); lcdwcn(0x38);
 189   1         delay(50); lcdwcn(0x38);
 190   1         lcdwc(0x38);
 191   1         lcdwc(0x08);
 192   1         lcdwc(0x01);
 193   1         lcdwc(0x06);
 194   1         lcdwc(0x0c);
 195   1      }
 196          
 197          void lcdwone(unsigned char x,unsigned char y,unsigned char s)
 198          {  YPOS=y;
 199   1         XPOS=x;
 200   1         {  lcdpos();
 201   2            lcdwd(s);
 202   2      
 203   2      
 204   2         }
 205   1      }
 206          
 207          
 208          void lcdwda(unsigned char x,unsigned char y,unsigned char *s)
 209          {  YPOS=y;
 210   1         for(XPOS=x;XPOS<16;XPOS++)
 211   1         {  lcdpos();
 212   2            lcdwd(*s);
 213   2            s++;
 214   2          
 215   2         }
 216   1      }
 217          
 218          
 219          
 220          void show_1602()
 221          {
 222   1      
 223   1       
 224   1      
 225   1        ON_R=ON;
 226   1        OFF_R=OFF;
 227   1        TIMER_R=TIMER;
 228   1      
 229   1      
 230   1        ON_2=ON_R/100;
 231   1        ON_1= (ON_R-=ON_2*100)/10;
 232   1        ON_0= ON_R-=ON_1*10;
 233   1      
 234   1        OFF_2=OFF_R/100;
 235   1        OFF_1= (OFF_R-=OFF_2*100)/10;
 236   1        OFF_0= OFF_R-=OFF_1*10;
 237   1      
 238   1      
 239   1      
 240   1        TIMER_2=TIMER_R/100;
 241   1        TIMER_1= (TIMER_R-=TIMER_2*100)/10;
C51 COMPILER V8.05a   电源老化测试定时芲                                                   11/08/2007 21:39:03 PAGE 5   

 242   1        TIMER_0= TIMER_R-=TIMER_1*10;
 243   1      
 244   1       lcdwone(4,0,0X30+ON_2);
 245   1       lcdwone(5,0,0X30+ON_1);
 246   1       lcdwone(6,0,0X30+ON_0);
 247   1      
 248   1       lcdwone(4,1,0X30+OFF_2);
 249   1       lcdwone(5,1,0X30+OFF_1);
 250   1       lcdwone(6,1,0X30+OFF_0);
 251   1      
 252   1       lcdwone(11,1,0X30+TIMER_2);
 253   1       lcdwone(12,1,0X30+TIMER_1);
 254   1       lcdwone(13,1,0X30+TIMER_0);
 255   1      
 256   1       delay(5000);
 257   1                          switch(show_status   )
 258   1                           { case 1:  
 259   2                                      
 260   2                                    lcdwone(4,0,0X20);
 261   2                                    lcdwone(5,0,0X20);
 262   2                                    lcdwone(6,0,0X20);
 263   2                                   break;
 264   2      
 265   2                             case 2:  
 266   2                                    lcdwone(4,1,0X20);
 267   2                                    lcdwone(5,1,0X20);
 268   2                                    lcdwone(6,1,0X20);
 269   2                                   break;
 270   2      
 271   2                             case 3:  
 272   2                                    lcdwone(11,1,0X20);
 273   2                                    lcdwone(12,1,0X20);
 274   2                                    lcdwone(13,1,0X20);
 275   2                                   break;
 276   2                             
 277   2                              case 4: 
 278   2                               sector_erase(0x2000);
 279   2                               byte_program( 0x2000,  ON_2);
 280   2                               byte_program( 0x2001,  ON_1);
 281   2                               byte_program( 0x2002,  ON_0);
 282   2      
 283   2                               byte_program( 0x2003,  OFF_2);
 284   2                               byte_program( 0x2004,  OFF_1);
 285   2                               byte_program( 0x2005,  OFF_0);
 286   2      
 287   2                               byte_program( 0x2006,  TIMER_2);
 288   2                               byte_program( 0x2007,  TIMER_1);
 289   2                               byte_program( 0x2008,  TIMER_0);
 290   2                               show_status=0;
 291   2      
 292   2                                break;
 293   2      
 294   2                             default:
 295   2                                   break;
 296   2      
 297   2      
 298   2                                 }
 299   1          delay(5000);
 300   1      
 301   1      
 302   1      
 303   1       }
C51 COMPILER V8.05a   电源老化测试定时芲                                                   11/08/2007 21:39:03 PAGE 6   

 304          
 305           void read_ISP_IAP()

⌨️ 快捷键说明

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