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

📄 main.lst

📁 电话单路计费系统!LCD段码显示!电话机设定自由费率,根据反极信号计费及延时计费自由设定!
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.10   MAIN                                                                  05/07/2006 17:33:51 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND CODE

line level    source

   1          #include <reg2051.h>
   2          #include "1621_driver.h"
   3          #include "tel_equipment.h"
   4          #include "AT24C08PAGE_Ok.H"
   5          
   6          bit scankey_bit;
   7          bit KeyACT;
   8          bit set_sign;
   9          
  10          bit status3;
  11          bit lift_bit;                   //提机标志
  12          bit time1s;
  13          bit polarity_bit;
  14          bit scankey_bit;
  15          bit Showbit;
  16          bit LineType;
  17          
  18          uchar KeyTemp;
  19          uchar p[10];
  20          uchar key[20];
  21          uchar nkey;
  22          uchar timetype;
  23          ulong times;
  24          ulong times2;
  25          uchar times3;
  26          
  27          
  28          uchar code keycode[] = {
  29          //0             1        2        3        4    5        6        7    8        9        a        b        c    d        e        f
  30          0x00,0x08,0x04,0x0c,0x02,0x00,0x06,0x0e,0x01,0x09,0x05,0x0d,0x03,0x0b,0x07,0x00
  31          };
  32          main(){
  33   1              Led1 = 0;
  34   1              Led2 = 0;
  35   1              init();
  36   1              SETUP_LCD();
  37   1              Led1 = 1;
  38   1              Led2 = 1;
  39   1              
  40   1              while(1){
  41   2                      if(lift_bit){
  42   3                              status3 = status1;
  43   3                              ClrLCD();
  44   3                              times3 = 0;
  45   3                      }       
  46   2      
  47   2                      while (lift_bit){
  48   3                              scankey_bit = 1;
  49   3                              getkey();
  50   3                              set_menu();
  51   3                              if (polarity_bit & !set_sign)
  52   3                                      showmoney(ShowCountTime(times));
  53   3                              
  54   3                      }
  55   2                      showtime();
C51 COMPILER V7.10   MAIN                                                                  05/07/2006 17:33:51 PAGE 2   

  56   2                      clrbuf();
  57   2              }
  58   1      
  59   1      }
  60          void getkey(void) {
  61   1              STD = 1;
  62   1              if (STD){
  63   2                      KeyTemp = keybord /0x10;
  64   2                      KeyTemp = keycode[KeyTemp];
  65   2      
  66   2                      key[nkey] = KeyTemp;
  67   2                      
  68   2                      if ((KeyTemp  == 0x0b) && (nkey == 0) )
  69   2                              set_sign = 1;   
  70   2              
  71   2                      while (STD);
  72   2                      times3 = 0;
  73   2                      KeyACT = 1;
  74   2                      if((KeyTemp == 0x0c)&& !LineType)
  75   2                              polarity_bit = 1;
  76   2                      if(nkey < 20)nkey++;                    //防止ram数据存储溢出
  77   2                      ShowLCD(0,0,&key[nkey-1],nkey);
  78   2              }
  79   1      }
  80          
  81          //#pragma OPTIMIZE(6,speed) //the funcion以9极优化,空间压缩为主
  82          void clrbuf(){
  83   1      uchar i;
  84   1              polarity_bit = 0;
  85   1              scankey_bit = 0;
  86   1              set_sign = 0;
  87   1              nkey = 0;
  88   1              Led2 = 1;
  89   1              Led1 = 1;
  90   1              for (i=0;i<20;i++)
  91   1                      key[i] = 0x00;
  92   1              for (i=0;i<10;i++)
  93   1                      p[i] = 0x00;
  94   1      
  95   1      }
  96          /*
  97          设定长途计费单位                00      (<60 ,>0;)
  98          设定长途计费方式:(N+1)  01
  99          设定长途N费率                   02
 100          设定长途N后费率                 03
 101          
 102          设定短途计费单位                04
 103          设定短途计费方式                05
 104          设定短途N费率                   06
 105          设定短途N后费率                 07
 106          
 107          设定国际计费单位                08
 108          设定国际单位计费费率    09
 109          *#0000#-01#-
 110          
 111          设定长途N费率                   0x10
 112          设定短途N费率                   0x11
 113          设定国际单位计费费率    0x12
 114          
 115          #define changtu_unit            0
 116          #define changtu_N                       1
 117          #define changtu_feilu_N         2
C51 COMPILER V7.10   MAIN                                                                  05/07/2006 17:33:51 PAGE 3   

 118          #define changtu_feilu           3
 119          #define duantu_unit                     4
 120          #define duantu_N                        5
 121          #define duantu_feilu_N          6
 122          #define duantu_feilu            7
 123          #define guojiunit                       8
 124          #define guoji_feilu                     9
 125          #define password                        0x10
 126          */
 127          void set_menu(void){
 128   1      static uchar count;
 129   1              if (!KeyACT)return;
 130   1              if (!set_sign) return;
 131   1              if (nkey == 1) count = 0;
 132   1              KeyACT = 0;
 133   1              switch (count){
 134   2              case 0x00:
 135   2                      if (KeyTemp==0x0b)
 136   2                              count++;
 137   2                      else {
 138   3                              count = 0xff;
 139   3                              showerror();
 140   3                              }
 141   2                      break;
 142   2              case 0x01:
 143   2                      if (KeyTemp == 0x0c)
 144   2                              count++;
 145   2                      else {
 146   3                              count = 0xff;
 147   3                              showerror();
 148   3                      }
 149   2                      break;
 150   2              case 0x02:case 0x03:case 0x04:case 0x05:
 151   2                      key[count-2] = KeyTemp;
 152   2                      count ++;
 153   2                      break;
 154   2              case 0x06:
 155   2                      if(KeyTemp != 0x0c){count =0xff;showerror();break;};
 156   2                      EEReadPage      (&p[0], 0, password, 4);
 157   2                      if (key[0] != p[0]){count =0xff;showerror();break;} 
 158   2                      if (key[1] != p[1]){count =0xff;showerror();break;} 
 159   2                      if (key[2] != p[2]){count =0xff;showerror();break;} 
 160   2                      if (key[3] != p[3]){count =0xff;showerror();break;} 
 161   2                      showsucceed();
 162   2                      count++;
 163   2                      break;
 164   2      
 165   2              case 0x07:
 166   2                      count ++;
 167   2                      key[0] = KeyTemp;
 168   2                      break;
 169   2      
 170   2              case 0x08:
 171   2                      if (KeyTemp != 0x0c){count =0xff;showerror();break;}
 172   2                      switch(key[0]){
 173   3              
 174   3                              case 0x01:
 175   3                                      count = changtu_N;
 176   3                                      showsucceed();
 177   3                              break;
 178   3                              case 0x02:
 179   3                                      count = duantu_N;
C51 COMPILER V7.10   MAIN                                                                  05/07/2006 17:33:51 PAGE 4   

 180   3                                      showsucceed();
 181   3                              break;
 182   3                              case 0x03:
 183   3                                      count = guoji_N;
 184   3                                      showsucceed();
 185   3                              break;
 186   3                              case 0x04:
 187   3                                      count = password;
 188   3                                      showsucceed();
 189   3                              break;
 190   3                              case 0x05:
 191   3                                      count = modifytime;
 192   3                                      showsucceed();
 193   3                              break;
 194   3                              case 0x06:
 195   3                                      count = linetype;
 196   3                                      showsucceed();
 197   3                              break;
 198   3                      }
 199   2                      break;
 200   2      /*
 201   2      设定长途费率
 202   2      */
 203   2              case changtu_N:
 204   2                      key[0] = KeyTemp;
 205   2                      count++;
 206   2                      break;
 207   2              case changtu_N+1:
 208   2                      key[1] = KeyTemp;
 209   2                      count++;
 210   2                      break;
 211   2              case changtu_N+2:
 212   2                      key[2] = KeyTemp;
 213   2                      count++;
 214   2                      break;
 215   2              case changtu_N+3:
 216   2                      key[3] = KeyTemp;
 217   2                      count++;
 218   2                      break;
 219   2              case changtu_N+4:
 220   2                      if(KeyTemp != 0x0c){count =0xff;showerror();break;};
 221   2                      EEWritePage(&key[0],0,changtu_N,4);
 222   2                      DELAY(0xff);
 223   2                      EEReadPage(&p[0],0,changtu_N,4);
 224   2                      if(key[0] != p[0]){count =0xff;showerror();break;};
 225   2                      if(key[3] != p[3]){count =0xff;showerror();break;};
 226   2                      showsucceed();
 227   2                      break;
 228   2      
 229   2      /*
 230   2      设定短途费率
 231   2      */
 232   2              case duantu_N:
 233   2                      key[0] = KeyTemp;
 234   2                      count++;
 235   2                      break;
 236   2              case duantu_N+1:
 237   2                      key[1] = KeyTemp;
 238   2                      count++;
 239   2                      break;
 240   2              case duantu_N+2:
 241   2                      key[2] = KeyTemp;
C51 COMPILER V7.10   MAIN                                                                  05/07/2006 17:33:51 PAGE 5   

 242   2                      count++;
 243   2                      break;
 244   2              case duantu_N+3:
 245   2                      key[3] = KeyTemp;
 246   2                      count++;
 247   2                      break;
 248   2              case duantu_N+4:
 249   2                      if(KeyTemp != 0x0c){count =0xff;showerror();break;};
 250   2                      EEWritePage(&key[0],0,duantu_N,4);
 251   2                      DELAY(0xff);
 252   2                      EEReadPage(&p[0],0,duantu_N,4);
 253   2                      if(key[0] != p[0]){count =0xff;showerror();break;};
 254   2                      if(key[4] != p[4]){count =0xff;showerror();break;};
 255   2                      showsucceed();
 256   2                      break;
 257   2      
 258   2      /*
 259   2      设定国际费率
 260   2      */

⌨️ 快捷键说明

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