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

📄 main.lst

📁 一个基于C51开发的计价秤
💻 LST
📖 第 1 页 / 共 5 页
字号:
  40   3                      }
  41   2              }
  42   1      }
  43          
  44          /**********************************
  45          ********Power On Reset*************
  46          **********************************/
  47          VOID Power_On()
  48          {
  49   1              BAT_DECT=1;
  50   1              AC_DECT=1;
  51   1              P4=0x00;
  52   1              P3=0xff;
  53   1              P2=0xff;
  54   1              P0=0x7f;
  55   1              Delay(20);
  56   1              if(!P3_2)
  57   1                      mode=Input_code_mode;
  58   1              else
  59   1                      mode=Initialization_mode;
  60   1              timer1_count=0;
  61   1              date.year=6;
  62   1              date.month=3;
  63   1              date.day=1;
  64   1              time.hour=12;
  65   1              time.min=0;
C51 COMPILER V7.50   MAIN                                                                  05/27/2006 14:00:50 PAGE 15  

  66   1              time.sec=0;
  67   1              icon_buf=0x00;
  68   1              PT0=1;
  69   1              TMOD=V_TMOD;
  70   1              TH0=V_TH0;TL0=V_TL0;
  71   1              TH1=V_TH1;TL1=V_TL1;
  72   1              TR0=1;ET0=1;TR1=1;ET1=1;EA=1;
  73   1              if(!Key_Short_Test())
  74   1              {
  75   2                      Beep_on=TRUE;
  76   2                      while(1)
  77   2                      {
  78   3                              Beep();
  79   3                              Wait_n_s(2);
  80   3                      }
  81   2              }
  82   1              RS232_Init();
  83   1              CS5532_Init();
  84   1              LCD_Init(LCD_MODE,LCD_GLITTER);
  85   1              keyprocess=FALSE;keydone=TRUE;
  86   1              Beep_on=TRUE;colon=FALSE;Cal_flag=FALSE;        
  87   1      }
  88          
  89          /**********************************
  90          ********Power Down mode***********
  91          **********************************/
  92          VOID Power_Down()
  93          {
  94   1              P4=0xff;
  95   1              LIGHT=TRUE;
  96   1              Cls_Icon_Buf();
  97   1              while(mode==Power_down_mode)
  98   1              {
  99   2                      if(keyprocess)
 100   2                      {
 101   3                              keydone=FALSE;
 102   3                              keyprocess=FALSE;
 103   3                              if(keypre[0]==K_ON_OFF)
 104   3                              {
 105   4                                      Beep();
 106   4                                      P4=0x00;
 107   4                                      Delay(20);      
 108   4                                      RS232_Init();
 109   4                                      CS5532_Init();
 110   4                                      LCD_Init(LCD_MODE,LCD_GLITTER);
 111   4                                      if(Light_on)
 112   4                                              LIGHT=FALSE;
 113   4                                      else
 114   4                                              LIGHT=TRUE;
 115   4                                      Set_Logo_Display();
 116   4                                      Set_SCALE_Display();
 117   4                                      Set_Ver_no_Display(Soft_ver_no);
 118   4                                      Display();
 119   4                                      Wait_n_ms(50);
 120   4                                      while(!Zero_Setting_When_Power_Up())
 121   4                                      {
 122   5                                              Set_INIT0_On_Lcd1_Display();
 123   5                                              Display();      
 124   5                                      }       
 125   4                                      unit_price_entered=FALSE;
 126   4                                      mode=Sales_mode;
 127   4                                      Sold_Quantity=0;
C51 COMPILER V7.50   MAIN                                                                  05/27/2006 14:00:50 PAGE 16  

 128   4                                      Sum_Price=0;
 129   4                              }
 130   3                              keydone=TRUE;
 131   3                      }
 132   2                      PCON|=0x01;
 133   2              }       
 134   1      }
 135          
 136          /**********************************
 137          *********Input Code mode***********
 138          **********************************/
 139          VOID Input_Code()
 140          {
 141   1              INT8 data i;
 142   1              static input_count=0;
 143   1              BYTE Option_Table[TABLE_LEN];
 144   1              Beep_on=TRUE;
 145   1              if(Read_extern_eeprom(Option_Table))
 146   1              {
 147   2                      if(Option_Table[EEPROM_ID]==0xa5&&Option_Table[EEPROM_ID+1]==0x5a)
 148   2                      {
 149   3                              if(Save_Option_Table(Option_Table))
 150   3                              {
 151   4                                      Set_COPY_SUCCESS_Display();
 152   4                                      Display();
 153   4                                      Wait_n_s(2);    
 154   4                              }
 155   3                      }       
 156   2              }
 157   1              if(!Read_Cal_Password(Option_Table))
 158   1              {
 159   2                      Set_NOEEP_On_Lcd1_Display();
 160   2                      Display();
 161   2                      while(1);       
 162   2              }
 163   1              Full_Display();
 164   1              Wait_n_s(2);
 165   1              for(i=9;i>=0;i--)
 166   1              {
 167   2                      Set_Lcd1_Buf(i+'0',0,5);
 168   2                      Set_Lcd2_Buf(i+'0',0,7);
 169   2                      Set_Lcd3_Buf(i+'0',0,7);
 170   2                      Display();
 171   2                      Wait_n_ms(50);
 172   2              }
 173   1              Set_INPUT_CODE_Display();
 174   1              Display();
 175   1              while(!P3_2);
 176   1              while(mode==Input_code_mode)
 177   1              {
 178   2                      if(keyprocess)
 179   2                      {
 180   3                              keydone=FALSE;
 181   3                              keyprocess=FALSE;
 182   3                              numeric=0;
 183   3                              if(!keypre[1]&&!keypre[2]&&!keypre[3])
 184   3                              {
 185   4                                      switch(keypre[0])
 186   4                                      {
 187   5                                      case K_ENTER:
 188   5                                              Beep();
 189   5                                              if(Password_Compare(Option_Table,lcd2_buf))
C51 COMPILER V7.50   MAIN                                                                  05/27/2006 14:00:50 PAGE 17  

 190   5                                                      mode=Calibration_mode;
 191   5                                              else if(input_count>3)
 192   5                                              {
 193   6                                                      Cal_flag=FALSE;
 194   6                                                      mode=Initialization_mode;
 195   6                                              }       
 196   5                                              else
 197   5                                              {
 198   6                                                      Alarm();
 199   6                                                      input_count++;
 200   6                                              }
 201   5                                              break;
 202   5                                      case K_CLEAR:
 203   5                                              Beep();
 204   5                                              Set_INPUT_CODE_Display();
 205   5                                              break;                  
 206   5                                      case K_00:
 207   5                                              Beep();
 208   5                                              numeric+='0';
 209   5                                              Lcd_Buf_Left_Shift(lcd2_buf,2,numeric,0);
 210   5                                              Lcd_Buf_Left_Shift(lcd2_buf,2,numeric,0);
 211   5                                              break;  
 212   5                                      case K_9:numeric++;
 213   5                                      case K_8:numeric++;
 214   5                                      case K_7:numeric++;
 215   5                                      case K_6:numeric++;
 216   5                                      case K_5:numeric++;
 217   5                                      case K_4:numeric++;
 218   5                                      case K_3:numeric++;
 219   5                                      case K_2:numeric++;
 220   5                                      case K_1:numeric++;
 221   5                                      case K_0:numeric+='0';
 222   5                                              Beep();
 223   5                                              Lcd_Buf_Left_Shift(lcd2_buf,2,numeric,0);
 224   5                                              break;
 225   5                                      }       
 226   4                              }
 227   3                              else if(keypre[3])
 228   3                              {
 229   4                                      Beep();
 230   4                                      Cal_flag=FALSE;
 231   4                                      mode=Initialization_mode;
 232   4                              }
 233   3                              keydone=TRUE;
 234   3                      }
 235   2                      if(half_sec)
 236   2                      {
 237   3                              half_sec=FALSE;
 238   3                              Display();                      
 239   3                      }       
 240   2              }
 241   1      }
 242          /**********************************
 243          ********Calibration mode***********
 244          **********************************/
 245          VOID Calibration_Key_Processing()
 246          {
 247   1              if(keyprocess)
 248   1              {
 249   2                      keydone=FALSE;
 250   2                      keyprocess=FALSE;
 251   2                      numeric=0;
C51 COMPILER V7.50   MAIN                                                                  05/27/2006 14:00:50 PAGE 18  

 252   2                      if(!keypre[1]&&!keypre[2]&&!keypre[3])
 253   2                      {
 254   3                              switch(keypre[0])
 255   3                              {
 256   4                              case K_ENTER:
 257   4                                      Beep();
 258   4                                      Cal_Weight=Get_Cal_Weight_from_display_buf();
 259   4                                      if(Cal_Weight!=0&&Cal_Weight<=30000)
 260   4                                      {
 261   5                                              factor_calcul=TRUE;
 262   5                                              Calculate_One_Count();
 263   5                                              Save_Cal_One_count(One_count);
 264   5                                              Set_One_count_Display(One_count);
 265   5                                              Delay(2);
 266   5                                              Cal_counts++;
 267   5                                              if(Cal_counts>99)
 268   5                                                      Cal_counts=99;
 269   5                                              Save_Cal_counts(&Cal_counts);
 270   5                                      }
 271   4                                      else
 272   4                                              Alarm();
 273   4                                      break;
 274   4                              case K_ADD:
 275   4                                      Beep();
 276   4                                      if(factor_calcul)
 277   4                                      {
 278   5                                              One_count=One_count+1;
 279   5                                              //Save_Cal_One_count(One_count);
 280   5                                              Set_One_count_Display(One_count);
 281   5                                      }
 282   4                                      break;
 283   4                              case K_SUB:
 284   4                                      Beep();
 285   4                                      if(factor_calcul)
 286   4                                      {
 287   5                                              One_count=One_count-1;
 288   5                                              //Save_Cal_One_count(One_count);
 289   5                                              Set_One_count_Display(One_count);
 290   5                                      }
 291   4                                      break;
 292   4                              case K_CLEAR:
 293   4                                      Beep();
 294   4                                      Cal_Weight=0;
 295   4                                      Set_Cal_Weight_Display(Cal_Weight);
 296   4                                      break;
 297   4                              case K_00:
 298   4                                      Beep();
 299   4                                      numeric+='0';
 300   4                                      Lcd_Buf_Left_Shift(lcd2_buf,4,numeric,0);
 301   4                                      Lcd_Buf_Left_Shift(lcd2_buf,4,numeric,0);
 302   4                                      Cal_Weight=Get_Cal_Weight_from_display_buf();
 303   4                                      Set_Cal_Weight_Display(Cal_Weight);
 304   4                                      break;  
 305   4                              case K_9:numeric++;
 306   4                              case K_8:numeric++;
 307   4                              case K_7:numeric++;
 308   4                              case K_6:numeric++;
 309   4                              case K_5:numeric++;
 310   4                              case K_4:numeric++;
 311   4                              case K_3:numeric++;
 312   4                              case K_2:numeric++;
 313   4                              case K_1:numeric++;
C51 COMPILER V7.50   MAIN                                                                  05/27/2006 14:00:50 PAGE 19  

 314   4                              case K_0:numeric+='0';
 315   4                                      Beep();
 316   4                                      Lcd_Buf_Left_Shift(lcd2_buf,4,numeric,0);
 317   4                                      Cal_Weight=Get_Cal_Weight_from_display_buf();
 318   4                                      Set_Cal_Weight_Display(Cal_Weight);
 319   4                                      break;

⌨️ 快捷键说明

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