📄 gps_collect.lst
字号:
C51 COMPILER V8.02 GPS_COLLECT 09/25/2008 19:29:41 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE GPS_COLLECT
OBJECT MODULE PLACED IN .\output\bin\gps_collect.obj
COMPILER INVOKED BY: C:\Keil802\C51\BIN\C51.EXE gps\gps_collect.c LARGE BROWSE INCDIR(audio\;eeprom\;extendUART\;flash\;
-gps\;inter\;key\;mcu\;menu\;usb\;gprs\;main\;1wire\) DEBUG OBJECTEXTEND PRINT(.\output\gps_collect.lst) OBJECT(.\output\
-bin\gps_collect.obj)
line level source
1 #include "gps_collect.h"
2 #include "菜单.h"
3 #include "keyboard.h"
4 #include "string.h"
5 #include "nf_drv.h"
6 #include "16c554.h"
7 #include "mcuInit.h"
8 #include "stdio.h"
9 GPS_LINE_INFO gps_8line[8];//
10 //0:主界面;1:菜单界面;11:线路选择界面;13:删除信息;14:上传至电脑
11 unsigned char cur_menu_status;
12 unsigned char gps_receive_flg;
13 unsigned char cur_line;
14 unsigned char cur_direction;
15 unsigned char tmp_line;
16 unsigned char tmp_direction;
17 unsigned char sysinfo[100];
18 unsigned char gps_str[80];
19
20 extern void delayMs(unsigned int timeMs);
21 unsigned char gps_data_buf[256];
22 /*保存gps数据,每一页的前半页前240个字节保存3条,
23 后半页的前240个字节保存3条*/
24 void savegpstoflash(void)
25 {
26 1 Uint32 pos;
27 1 Uint16 add,halfpage;
28 1 if(cur_direction==24)
29 1 { //上行时采集计算存储地址
30 2 halfpage=(gps_8line[cur_line].gps_counter_up-1)/3;
31 2 add= ((gps_8line[cur_line].gps_counter_up-1)%3)*80;
32 2 pos= halfpage*256+cur_line*0x00100000+0x00200000+add;
33 2 if(gps_8line[cur_line].gps_counter_up>=6000)
34 2 {
35 3 gps_receive_flg=0;
36 3 gps_8line[cur_line].gps_counter_up=6000;
37 3 }
38 2 }
39 1 else if(cur_direction==25)
40 1 { //下行时采集计算存储地址
41 2 halfpage=(gps_8line[cur_line].gps_counter_down-1)/3;
42 2 add= ((gps_8line[cur_line].gps_counter_down-1)%3)*80;
43 2 pos= halfpage*256+cur_line*0x00100000+0x00280000+add;
44 2 if(gps_8line[cur_line].gps_counter_down>=6000)
45 2 {
46 3 gps_receive_flg=0;
47 3 gps_8line[cur_line].gps_counter_down=6000;
48 3 }
49 2 }
50 1 nf_wp_off(); //打开写保护,再保存,+1是为了最后多保存一个0作结束符
51 1 nf_write_onebuf(pos,gps_str,strlen(gps_str)+1);
52 1 nf_wp_on();
53 1 //由于保存的个数加1,所以把线路参数保存一下下
C51 COMPILER V8.02 GPS_COLLECT 09/25/2008 19:29:41 PAGE 2
54 1 sysinfo[8*sizeof(GPS_LINE_INFO)]=cur_line;
55 1 sysinfo[8*sizeof(GPS_LINE_INFO)+1]=cur_direction;
56 1 memcpy(sysinfo,&gps_8line[0],8*sizeof(GPS_LINE_INFO));
57 1 nf_wp_off(); //打开写保护,再保存,+1是为了最后多保存一个0作结束符
58 1 nf_write_onebuf(0x00000000,sysinfo,8*sizeof(GPS_LINE_INFO)+2);
59 1 nf_wp_on();
60 1
61 1 }
62 /*
63 只在保存线路参数时用
64 地址是0x00000000的前98个字节
65 每次都块擦除,再全部重写
66
67
68 void savetoflash(Uint32 pos, Byte* pBuf, Uint16 nLen)
69 {
70 nf_wp_off();
71 nf_block_erase(pos);
72 nf_check_status();
73 nf_write_onebuf_withouterase(pos,pBuf,nLen);
74 nf_wp_on();
75
76 }*/
77 /*
78 线路参数初始化
79 从5608中读取98个字节
80
81 */
82 void sysinit(void)
83 {
84 1 nf_read_tobuf(0x00000000,sysinfo,8*sizeof(GPS_LINE_INFO)+2);
85 1 memcpy(&gps_8line[0],sysinfo,8*sizeof(GPS_LINE_INFO));
86 1 cur_line=sysinfo[8*sizeof(GPS_LINE_INFO)];
87 1 cur_direction=sysinfo[8*sizeof(GPS_LINE_INFO)+1];
88 1 gps_receive_flg=0;
89 1 }
90 /*
91 在上下行选择界面下的操作
92 操作完成后保存操作结果
93 功能包括设置上下行,删除某条线路的上行或下行参数
94
95 */
96 void process_direction(void)
97 {
98 1 unsigned char key;
99 1 menu_direction(); //显示上下行选择界面
100 1 tmp_direction=0xff;
101 1 while(1)
102 1 {
103 2 key= get_key();
104 2 switch(key)
105 2 {
106 3 case KEY_CODE_NUM1:
107 3 tmp_direction=24;
108 3 menu_display_char(0,1,'1',1);
109 3 break;
110 3 case KEY_CODE_NUM2:
111 3 tmp_direction=25;
112 3 menu_display_char(0,2,'2',1);
113 3 break;
114 3
115 3 case KEY_CODE_ESC:
C51 COMPILER V8.02 GPS_COLLECT 09/25/2008 19:29:41 PAGE 3
116 3 return;
117 3 break;
118 3
119 3 case KEY_CODE_ENTER:
120 3 if( cur_menu_status==11&&tmp_direction!=0xff)
121 3 {
122 4 cur_line=tmp_line;
123 4 cur_direction=tmp_direction;
124 4 sysinfo[8*sizeof(GPS_LINE_INFO)]=cur_line;
125 4 sysinfo[8*sizeof(GPS_LINE_INFO)+1]=cur_direction;
126 4 memcpy(sysinfo,&gps_8line[0],8*sizeof(GPS_LINE_INFO));
127 4 nf_wp_off(); //打开写保护,再保存,+1是为了最后多保存一个0作结束符
128 4 nf_write_onebuf(0x00000000,sysinfo,8*sizeof(GPS_LINE_INFO)+2);
129 4 nf_wp_on();
130 4 }
131 3 else if(cur_menu_status==13&&tmp_direction!=0xff)
132 3 {
133 4 if(tmp_direction==24)
134 4 {
135 5 gps_8line[tmp_line].gps_counter_up=0;
136 5 gps_8line[tmp_line].station_counter_up=0;
137 5 gps_8line[tmp_line].corner_counter_up=0;
138 5 }
139 4 else if(tmp_direction==25)
140 4 {
141 5 gps_8line[tmp_line].gps_counter_down=0;
142 5 gps_8line[tmp_line].station_counter_down=0;
143 5 gps_8line[tmp_line].corner_counter_down=0;
144 5 }
145 4 sysinfo[8*sizeof(GPS_LINE_INFO)]=cur_line;
146 4 sysinfo[8*sizeof(GPS_LINE_INFO)+1]=cur_direction;
147 4 memcpy(sysinfo,&gps_8line[0],8*sizeof(GPS_LINE_INFO));
148 4 nf_wp_off(); //打开写保护,再保存,+1是为了最后多保存一个0作结束符
149 4 nf_write_onebuf(0x00000000,sysinfo,8*sizeof(GPS_LINE_INFO)+2);
150 4 nf_wp_on();
151 4 //保存这个结构体
152 4 }
153 3
154 3 return;
155 3 break;
156 3
157 3 default:
158 3
159 3 break;
160 3 }
161 2 }
162 1 }
163 /*
164 设置线路名
165 即输入线路号,再保存
166
167 */
168 void process_inputline(void)
169 {
170 1 unsigned char index=0,key,linename[4];
171 1 menu_inputline();
172 1 while(1)
173 1 {
174 2 key= get_key();
175 2 switch(key)
176 2 {
177 3 case KEY_CODE_NUM0:
C51 COMPILER V8.02 GPS_COLLECT 09/25/2008 19:29:41 PAGE 4
178 3 key=0;
179 3 case KEY_CODE_NUM1:
180 3 case KEY_CODE_NUM2:
181 3 case KEY_CODE_NUM3:
182 3 case KEY_CODE_NUM4:
183 3 case KEY_CODE_NUM5:
184 3 case KEY_CODE_NUM6:
185 3 case KEY_CODE_NUM7:
186 3 case KEY_CODE_NUM8:
187 3 case KEY_CODE_NUM9:
188 3 if(index>=4)break;
189 3 menu_display_char(index+5,1,key+'0',0);
190 3 linename[index]=key+'0';
191 3 index++;
192 3 break;
193 3
194 3 case KEY_CODE_ESC:
195 3 if(index==0)
196 3 {
197 4 return;
198 4 }
199 3 else
200 3 {
201 4 index--;
202 4 menu_display_char(index+5,1,'-',0);
203 4 }
204 3 break;
205 3
206 3 case KEY_CODE_ENTER:
207 3 if(index<4) break;
208 3 memcpy(gps_8line[tmp_line].linename,linename,4);
209 3 sysinfo[8*sizeof(GPS_LINE_INFO)]=cur_line;
210 3 sysinfo[8*sizeof(GPS_LINE_INFO)+1]=cur_direction;
211 3 memcpy(sysinfo,&gps_8line[0],8*sizeof(GPS_LINE_INFO));
212 3 nf_wp_off(); //打开写保护,再保存,+1是为了最后多保存一个0作结束符
213 3 nf_write_onebuf(0x00000000,sysinfo,8*sizeof(GPS_LINE_INFO)+2);
214 3 nf_wp_on();
215 3
216 3 return;
217 3 break;
218 3
219 3 default:
220 3
221 3 break;
222 3 }
223 2 }
224 1 }
225 /*
226 上传GPS数据函数
227 读取存储器中的GPS数据,并发到串口B通道上
228 上传过程中可以通过按取消键退出
229 上传完也要按取消键才能退出
230 */
231
232 void process_upgps(void)
233 {
234 1 unsigned char up[6]="上行";
235 1 unsigned char down[6]="下行";
236 1
237 1 Uint32 pos,page;
238 1 Uint16 tem;
239 1 Byte i;
C51 COMPILER V8.02 GPS_COLLECT 09/25/2008 19:29:41 PAGE 5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -