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

📄 c_code.lst

📁 Pressure Sensor Assemble Code
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.02   C_CODE                                                                10/25/2006 07:30:58 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE C_CODE
OBJECT MODULE PLACED IN c_code.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE c_code.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include <math.h>
   3          #include <string.h>
   4          #include <intrins.h>
   5          #include <stdio.h>
   6          #include "c_code.h"
   7          
   8          #define Graphic        1
   9          #define TXT            0
  10          
  11          unsigned char code str_USB[];
  12          unsigned char code str2[];
  13          unsigned char code str3[];
  14          unsigned char code str4[];
  15          unsigned char code str5[];
  16          unsigned char i;
  17          
  18          unsigned int ihexs, iflag[3];
  19          unsigned char disp_buffer[5];
  20          
  21          extern unsigned int ad_convert();
  22          unsigned char C;
  23          
  24          void hextobcd(unsigned int hexs,unsigned char j);
  25          void deoutlier(unsigned int x[4], unsigned int x0[4][2], char Bound);
  26          void calibration(unsigned int x[4]);
  27          
  28          void LcmDynWriteData(unsigned char x, unsigned char y, unsigned char CH_No,unsigned int ihex);
  29          
  30          unsigned int new_value[4];
  31          unsigned int value[4][2];
  32          
  33          unsigned char menu_item;
  34          
  35          void main(void)
  36          {       
  37   1              menu_item = 0;
  38   1              do
  39   1              {
  40   2                      for(i = 0;i < 3; i++)                                              
  41   2                              iflag[i] = 0;                                                            //程序跳转标志
  42   2                      ACC = 0x01;                                                                              //MOV A, #01h
  43   2                      Regstr = ACC;                                                                    //MOV 30h, A
  44   2                      PortA000 = ACC;                                                                  //MOV DPTR, #A000h  MOV @DPTR, A
  45   2                      FPWR = 0;                                                                                //CLR P1.5
  46   2                      ACC = Port6000;
  47   2                      ACC = ACC & 0x80;
  48   2                      if(ACC != 0x80)                                                                 //电源POWER键按下
  49   2                      {
  50   3                              ACC = Port6000;
  51   3                              ACC = ACC & 0x80;
  52   3                              if(ACC != 0x00)
  53   3                                      iflag[0] = 1;
  54   3                              else
  55   3                              {
C51 COMPILER V8.02   C_CODE                                                                10/25/2006 07:30:58 PAGE 2   

  56   4                                      FPWR = 1;
  57   4                                      LcmInit();
  58   4                                      LcmClear(0);                                                    //设置屏幕
  59   4                                      LcmWriteCommand(0x9f);
  60   4                                      PutString(0,0,str_Welcome);                             //显示欢迎屏
  61   4                                      Delay(10);                                                              //延迟并转入菜单屏
  62   4                                      
  63   4                                      PortA000 = 0x04;
  64   4                                      ACC = Port6000;
  65   4                                      ACC = ACC & 0x01;
  66   4                                      if(ACC != 0x01)                                                 //检测ESC键按下,则转测量Start
  67   4                                      {       
  68   5                                              //菜单共5条:日期、时间、量程、报警上限、报警下限,故0 <= menu_item <= 4
  69   5                                              ACC = Port6000;
  70   5                                              ACC = ACC & 0x10;
  71   5                                              if(ACC == 0x10)
  72   5                                              {
  73   6                                                      if(menu_item != 4)
  74   6                                                              menu_item ++;                                   //若按Down键,menu_item ++,但其最大值为4
  75   6                                                      else
  76   6                                                              menu_item = 4;
  77   6                                              }
  78   5                                              ACC = Port6000;
  79   5                                              ACC = ACC & 0x20;
  80   5                                              if(ACC == 0x30)
  81   5                                              {
  82   6                                                      if(menu_item != 0)
  83   6                                                              menu_item --;                                   //若按UP键,menu_item --,但其最小值为0
  84   6                                                      else
  85   6                                                              menu_item = 0;
  86   6                                              }
  87   5                                              switch(menu_item)                                               //下面每个设置必须按Enter确认
  88   5                                              {
  89   6                                                      case 0:                                                         //日期设置
  90   6                                                              break;
  91   6                                                      case 1:                                                         //时间设置
  92   6                                                              break;
  93   6                                                      case 2:                                                         //量程设置
  94   6                                                              break;
  95   6                                                      case 3:                                                         //上限设置
  96   6                                                              break;
  97   6                                                      case 4:                                                         //下限设置
  98   6                                                              break;
  99   6                                              }
 100   5                                              ACC = Port6000;
 101   5                                              ACC = ACC & 0x02;                                               
 102   5                                              if(ACC == 0x02)                                                 //校零键按下
 103   5                                              {
 104   6                                              }                                               
 105   5                                      }
 106   4                              }
 107   3                      }
 108   2                      else
 109   2                      {
 110   3                              ACC = Port6000;
 111   3                              ACC = ACC & 0x40;
 112   3                              if(ACC != 0x00)                                                     //交流电插入
 113   3                              {
 114   4                                      FPWR = 1;
 115   4                                      LcmInit();
 116   4                                      LcmClear(0);
 117   4                                      LcmWriteCommand(0x9f);
C51 COMPILER V8.02   C_CODE                                                                10/25/2006 07:30:58 PAGE 3   

 118   4                                      PutString(0,0,str_Charge);
 119   4                                      Delay(1);
 120   4                                      while(1)
 121   4                                      {
 122   5                                              AD_A0 = 1;
 123   5                                              AD_A1 = 1;
 124   5                                              
 125   5                                              ad_convert();
 126   5                                      hextobcd(ihexs,5);                                              //电源电压转换
 127   5                                                                                                                              //显示 
 128   5                                              FCHRG = 1;                                                              //没有写完
 129   5                                      }
 130   4                                      iflag[1] = 1;
 131   4                              }
 132   3                              if(FUSB == 1)                                                                    //USB插入
 133   3                              {
 134   4                                      LcmInit();
 135   4                              LcmClear(0);
 136   4                                      LcmWriteCommand(0x9f);
 137   4                                      while(FUSB == 1)
 138   4                                      {
 139   5                                              //USB服务程序
 140   5      
 141   5                                              PortA000 = 0x08;
 142   5                                              ACC = Port6000;
 143   5                                              ACC = ACC & 0x08;
 144   5                                              if(ACC == 0x08)                                                  //Send键按下
 145   5                                              {
 146   6                                              }
 147   5                                      }
 148   4                                      Delay(1); 
 149   4                                      FPWR = 0; 
 150   4                                      iflag[2] = 1;                                                                   //关机
 151   4                              } 
 152   3                              if(iflag[1] == 0 || iflag[2] == 0)                               //没有键按下
 153   3                              {
 154   4                                      iflag[1] = 0;
 155   4                                      iflag[2] = 0;
 156   4                                      FPWR = 1;                                                                       //置P1.5 = 1
 157   4                                      LcmInit();
 158   4                                      LcmClear(0);
 159   4                                      LcmWriteCommand(0x9f);
 160   4                                      PutString(0,0,str_Hibernate);
 161   4                                      Delay(0);
 162   4                              }
 163   3                      }
 164   2              }while(iflag[0]);
 165   1                      
 166   1      
 167   1              //Start 测量程序
 168   1              do//测量前必须曾按过Power键
 169   1              {                                                                                                                               //程序跳转标志
 170   2                      iflag[0] = 0;
 171   2                      LcmClear(1);
 172   2                      LcmWriteCommand(0x9f);
 173   2                      LcmClear(1);
 174   2              
 175   2                      for(i=0;i<4;i++)
 176   2                      {
 177   3                              value[i][0] = 0;                                                                                //k-1时刻测量值
 178   3                              value[i][1] = 0;                                                                                //k-2时刻测量值
 179   3                              new_value[i] = -1;                                                                              //当前k时刻测量值
C51 COMPILER V8.02   C_CODE                                                                10/25/2006 07:30:58 PAGE 4   

 180   3                      }  
 181   2                      
 182   2                      PortA000 = 0x81;                                                                                   //poweron();
 183   2                      Regstr = 0x81;                                                                                     
 184   2                      ACC = Regstr;

⌨️ 快捷键说明

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