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

📄 state.lst

📁 基于C51的通用人机界面程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.08   STATE                                                                 02/27/2006 16:51:50 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE STATE
OBJECT MODULE PLACED IN .\output\state.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE state.c BROWSE DEBUG OBJECTEXTEND OBJECT(.\output\state.obj)

line level    source

   1          #define _state_ 
   2          #include "general.h"
   3          #include "7219.h"
   4          #include "key.h"
   5          #include "com.h"
   6          #include "protocol.h"
   7          #include "cursor.h"
   8          #include "buzzer.h"
   9          //#include "ds1820.h"
  10          
  11          //通信是否发起标志
  12          bit f_start_ok; //开始采集
  13          bit f_cancel_ok;//开始采集
  14          bit f_acq_ok;   //查询参数
  15          
  16          bit f_seta_ok;  //设置仪器常数A好
  17          //bit f_setl_ok;        //设置纬度wd好
  18          bit f_setc_ok;  //设置比例系数c好
  19          //bit f_setp_ok;        //设置周期个数p好
  20          bit f_setz_ok;  //设置中天位置z好
  21          bit f_beep_ok;
  22          
  23          //各参数改变设置状态的显示缓冲数组,及其格式            
  24          
  25          uchar para_p[PLEN];                                     //周期个数p             [0]个位[1]十位
  26          uchar temp_p[PLEN];
  27          uchar para_a[ALEN];                                     //仪器常数A             [0][1]秒[2][3]分[4][5]度[6]符号
  28          uchar temp_a[ALEN];
  29          uchar para_c[CLEN];                                     //比例系数c             [0]指数[1]符号[2][3][4][5]有效数字
  30          uchar temp_c[CLEN];
  31          uchar para_wd[LLEN];                            //纬度wd                [0][1]小数两位[2][3]整数两位
  32          uchar temp_wd[LLEN];
  33          uchar para_z[ZLEN];                                     //中天位置              [3][2][1][0]四位整数
  34          uchar temp_z[ZLEN];
  35          
  36          uchar para_gb[6];                                       //光标坐标值gb  [0][1]小数两位[2][3][4][5]整数四位
  37          uchar result[7];                                        //静态结果数组  [6][5][4]度[3][2]分[1][0]秒
  38          
  39          uchar keyvalue;
  40          uchar Index;
  41          void SetPara(uchar *para,uchar *temp,uchar len,uchar pos_set,uchar pos_disp,uchar pos_dp,uchar state_ent,u
             -char state_pgup,uchar state_pgdn);
  42          void init_state(){
  43   1              
  44   1              //State 1st
  45   1              Index=0;                //先进'设置'菜单
  46   1              frame_cmd(FR_Cancel);
  47   1              //////////////////////////
  48   1              f_start_ok=0;
  49   1              f_cancel_ok=0;  
  50   1              f_acq_ok=0;     
  51   1              f_seta_ok=0;    
  52   1      //      f_setl_ok=0;    
  53   1              f_setc_ok=0;
  54   1              f_setz_ok=0;    
C51 COMPILER V7.08   STATE                                                                 02/27/2006 16:51:50 PAGE 2   

  55   1      //      f_setp_ok=0;
  56   1              f_beep_ok=0;    
  57   1              gboff();
  58   1              
  59   1              
  60   1      
  61   1      
  62   1      }
  63          /*******************************************************************************************************
  64          各分支状态的服务程序
  65          *******************************************************************************************************/
  66          void Sev_State0(void){//"算法1"界面(寻北)
  67   1              
  68   1              ES=0;                                           //关串口中断,以免DSP板的影响
  69   1              gboff();                                        //关光标
  70   1              if(!f_cancel_ok){//
  71   2                      frame_cmd(FR_Cancel);   //发"停止采集"
  72   2                      f_cancel_ok=1;                  
  73   2                      f_start_ok=0;                   
  74   2              }
  75   1              cls();  
  76   1              //f_start_ok=0;
  77   1              disp('-',1);    disp('P',3);    disp('A',4);    disp( 0 ,5);    disp('G',6);    disp( 1 ,8);    disp('-',10);
  78   1              ES=1;
  79   1              
  80   1              /*以下温度传感器调试代码
  81   1              
  82   1              uchar t;
  83   1              //SPK=0;
  84   1              //init_ds18b20();
  85   1              //writechar(0xcc);      
  86   1              //writechar(0x44);
  87   1              //t=readchar();
  88   1              readtemp();
  89   1              //uint tem;
  90   1              t=temrom[1];
  91   1              t=t>>8;
  92   1              t+=temrom[0];
  93   1              t=t*0.0625;
  94   1                      
  95   1              cls();
  96   1              //if((t/100)==0)disp(' ',1);else
  97   1              
  98   1              disp(t/10,1);
  99   1              disp(t%10,2);
 100   1              //disp((t%100)%10,3);
 101   1              disp('^',9);    
 102   1              disp('C',10);
 103   1              */
 104   1      }
 105          void Sev_State1(void){//"算法2"界面(标定)
 106   1      
 107   1              ES=0;                                           //关串口中断,以免DSP板的影响
 108   1              gboff();                                        //关光标
 109   1              if(!f_cancel_ok){//
 110   2                      frame_cmd(FR_Cancel);   //发"停止采集"
 111   2                      f_cancel_ok=1;                  
 112   2                      f_start_ok=0;                   
 113   2              }
 114   1              cls();  
 115   1              //f_start_ok=0;
 116   1              disp('-',1);    disp('P',3);    disp('A',4);    disp( 0 ,5);    disp('G',6);    disp( 2 ,8);    disp('-',10);
C51 COMPILER V7.08   STATE                                                                 02/27/2006 16:51:50 PAGE 3   

 117   1              ES=1;
 118   1      }
 119          void Sev_State2(void){//"参数设置"界面
 120   1              
 121   1              cls();
 122   1              if((f_seta_ok==1)&&(f_setc_ok==1)&&(f_setz_ok==1)){
 123   2                      disp('-',1);    disp('S',3);    disp('E',4);    disp('T',5);    disp('U',7);    disp('P',8);    disp('-',10);
 124   2              }
 125   1              else{
 126   2              //以下为向DSP查询参数过程
 127   2              if(!f_acq_ok){
 128   3                      frame_cmd(FR_Para);             //发查询命令    
 129   3                      f_acq_ok=1;
 130   3              }
 131   2              
 132   2              frame_unpack(FR_Para);          //解包接收的数据到参数数组para(串口慢,程序快)
 133   2      
 134   2              //memcpy(temp_p,para_p,PLEN);   //拷贝para到修改参数的临时数组temp
 135   2              memcpy(temp_a,para_a,ALEN);
 136   2              memcpy(temp_c,para_c,CLEN);
 137   2              //memcpy(temp_wd,para_wd,LLEN);
 138   2              memcpy(temp_z,para_z,ZLEN);     
 139   2      
 140   2              }
 141   1              
 142   1      }
 143          
 144          void Sev_State3(void){//寻北测量过程
 145   1              uint m,n;       
 146   1              //ES=0;
 147   1              m=para_gb[5]*1000+para_gb[4]*100+para_gb[3]*10+para_gb[2];              //摆动光标数值
 148   1              n=para_z[3]*1000+para_z[2]*100+para_z[1]*10+para_z[0];                  //摆动光标中心
 149   1      
 150   1              result[6]=result[5]=result[4]=result[3]=result[2]=result[1]=result[0]=0;//清结果数组
 151   1              cls();
 152   1              //ES=0;
 153   1              disp(para_gb[5],4);     disp(para_gb[4],5);     disp(para_gb[3],6);     disp_dp(para_gb[2],7);
 154   1              disp(para_gb[1],8);     disp(para_gb[0],9);
 155   1              //ES=1;
 156   1              gb(m,n);                                //点灯
 157   1              //ES=1;
 158   1              //起始命令选择分支
 159   1              if(!f_start_ok){//
 160   2                      frame_cmd(FR_Start);//发"开始采集"
 161   2                      f_start_ok=1;
 162   2                      f_cancel_ok=0;
 163   2                      f_beep_ok=0;
 164   2              }
 165   1              //processmsg();
 166   1              //ES=1;
 167   1              frame_unpack(FR_Start);//协议解包并应答
 168   1                      
 169   1      }
 170          
 171          void Sev_State13(void){//标定测量过程
 172   1              uint m,n;       
 173   1              //ES=0;
 174   1              m=para_gb[5]*1000+para_gb[4]*100+para_gb[3]*10+para_gb[2];              //摆动光标数值
 175   1              n=para_z[3]*1000+para_z[2]*100+para_z[1]*10+para_z[0];                  //摆动光标中心
 176   1      
 177   1              result[6]=result[5]=result[4]=result[3]=result[2]=result[1]=result[0]=0;//清结果数组
 178   1              cls();
C51 COMPILER V7.08   STATE                                                                 02/27/2006 16:51:50 PAGE 4   

 179   1              //ES=0;
 180   1              disp(para_gb[5],4);     disp(para_gb[4],5);     disp(para_gb[3],6);     disp_dp(para_gb[2],7);
 181   1              disp(para_gb[1],8);     disp(para_gb[0],9);
 182   1              //ES=1;
 183   1              gb(m,n);                                //点灯
 184   1              //ES=1;
 185   1              if(!f_start_ok){//
 186   2                      frame_cmd(FR_Swing);//发"开始标定"
 187   2                      f_start_ok=1;
 188   2                      f_cancel_ok=0;
 189   2                      f_beep_ok=0;
 190   2              }
 191   1              //processmsg();
 192   1              //ES=1;
 193   1              frame_unpack(FR_Swing);//协议解包并应答
 194   1                      
 195   1      }
 196          
 197          
 198          
 199          void Sev_State4(void){//显示参数p(周期个数)
 200   1              cls();
 201   1              disp('P',1);    disp('=',2);
 202   1              disp(para_p[1],9);      disp(para_p[0],10);
 203   1              
 204   1              //if(!f_setp_ok){//
 205   1                      frame_data(FR_P,para_p,PLEN);
 206   1                      //f_setp_ok=1;//置发送好标志
 207   1              //}
 208   1              frame_unpack(FR_P);//协议解包并应答
 209   1              
 210   1      }
 211          void Sev_State5(void){//显示参数a(仪器常数)
 212   1              cls();
 213   1              disp('E',1);            disp('=',2);
 214   1              disp(para_a[6],4);      disp(para_a[5],5);      disp(para_a[4],6);      /*disp('^',4);*/
 215   1              disp(para_a[3],7);      disp_dp(para_a[2],8);   /*disp('/',7);*/
 216   1              disp(para_a[1],9);      disp(para_a[0],10);     /*disp('"',10);*/
 217   1      
 218   1              //if(!f_seta_ok){//
 219   1                      frame_data(FR_A,para_a,ALEN);
 220   1                      //f_seta_ok=1;//置发送好标志
 221   1              //}
 222   1              frame_unpack(FR_A);//协议解包并应答
 223   1              
 224   1      }
 225          void Sev_State6(void){//显示参数wd(纬度)
 226   1              cls();
 227   1              disp('U',1);    disp('=',2);
 228   1              disp(para_wd[2],8);     disp_dp(para_wd[1],9);
 229   1              disp(para_wd[0],10);    /*disp(para_wd[0],9);*/
 230   1              //disp('^',10);
 231   1      
 232   1              //if(!f_setl_ok){       //
 233   1                      frame_data(FR_L,para_wd,LLEN);
 234   1                      //f_setl_ok=1;  //置发送好标志

⌨️ 快捷键说明

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