?? state.lst
字號:
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 + -