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