You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

435 lines
15 KiB

C51 COMPILER V9.54 APP_CONFIG 09/06/2024 11:24:44 PAGE 1
C51 COMPILER V9.54, COMPILATION OF MODULE APP_CONFIG
OBJECT MODULE PLACED IN ..\out\app_config.obj
COMPILER INVOKED BY: E:\KeilC51\C51\BIN\C51.EXE ..\source\app\app_config.c LARGE OMF2 OPTIMIZE(0,SIZE) BROWSE ORDER NOIN
-TPROMOTE INCDIR(..\source\bsp;..\source\msp;..\source\app;..\source\clib;..\source\cpu;..\source\ctask;..\source\tpc;..\
-source\asp;..\source\debug;..\source\msp\uart;..\source\msp\simiic;..\source\bsp\oled;..\source\bsp\TTSSbsp) DEBUG PRINT
-(..\out\app_config.lst) TABS(2) OBJECT(..\out\app_config.obj)
line level source
1 #include "app_config.h"
*** WARNING C320 IN LINE 51 OF ..\source\bsp\TTSSbsp\bsp_config.h: "MainFre_22M"
2 //#include "../tpc/tpc_uart.h"
3 ///#include "../bsp/bsp_cs1232.h"
4 #include "msp_eeprom.h"
5 ///#include "../msp/msp_id.h"
6 #include "debug_drv.h"
7 #include "msp_uartN.h"
8
9 TS_GlobalRegisterSave_ S;
10 ////TS_GlobalParam_ G;
11
12 void L3_R_2_S(void)
13 {
14 1 TTSS_run_times(4)////tst_v.i
15 1 { ////ts_adc_samples[tst_v.i].pSPara = &TS_adc_SPara[tst_v.i];
16 2 Lc_buf_from_const_uc(D_struct2U8(S.adc_SPara[tst_v.i]),D_struct2U8(TS_adc_SPara[tst_v.i]),D_TS_adc_SPara
-_LEN);
17 2 }
18 1 ///tst_weight.pSPara = &ts_weight_SPara;
19 1 Lc_buf_from_const_uc(D_struct2U8(S.weight_SPara),D_struct2U8(ts_weight_SPara),D_TS_weight_SPara_len);
20 1 }
21 void L3_S_2_R(void)
22 {
23 1 TTSS_run_times(4)////tst_v.i
24 1 {
25 2 Lc_buf_from_const_uc(D_struct2U8(TS_adc_SPara[tst_v.i]),D_struct2U8(S.adc_SPara[tst_v.i]),D_TS_adc_SPara
-_LEN);
26 2 ts_adc_samples[tst_v.i].pSPara = &TS_adc_SPara[tst_v.i];
27 2 }
28 1 ///
29 1 Lc_buf_from_const_uc(D_struct2U8(ts_weight_SPara),D_struct2U8(S.weight_SPara),D_TS_weight_SPara_len);
30 1 tst_weight.pSPara = &ts_weight_SPara;
31 1 }
32
33 #define D_0xaa55 0xaa55
34
35 ////返回0 并打印 ("\r\nSpara ok ");
36 /// 返回非零 为错误次数 最后一次ok
37 /// 返回100 严重错误 一次没有成功
38 vtype L3_S_init(void)
39 {
40 1 vtype ovt = 0;
41 1 ////
42 1 /*
43 1
44 1 存错的多个写法:
45 1 使用三个区域,增加一致性判定的写法
46 1 使用一个区域,容错一次的写法
47 1
48 1
49 1 step 1 上电读取eeprom参数,
C51 COMPILER V9.54 APP_CONFIG 09/06/2024 11:24:44 PAGE 2
50 1 step 2 如果标志位数据不对,把每个任务中的spara初始化放到S 中,然后写入eeprom
-,返回step 1
51 1 如果重试次数溢出 打印错误信息;严重警告 系统不可用
52 1 step 3 如果标志位数据ok 退出
53 1 TTSS_run_times(4)////tst_v.i
54 1 { ////ts_adc_samples[tst_v.i].pSPara = &TS_adc_SPara[tst_v.i];
55 1 Lc_buf_from_const_uc(D_struct2U8(S.adc_SPara[tst_v.i]),D_struct2U8(&TS_adc_SPara[tst_v.i]),D_TS_adc_SPara
-_LEN);
56 1 }
57 1
58 1 ///tst_weight.pSPara = &ts_weight_SPara;
59 1 Lc_buf_from_const_uc(D_struct2U8(S.weight_SPara),D_struct2U8(&ts_weight_SPara),D_TS_weight_SPara_len);
60 1
61 1
62 1 */
63 1 do{
64 2 L0_Iap_Read_array(D_EEP_BASE,D_struct2U8(S),D_S_LEN);
65 2 printf1("\r\nread S: %d ",(int)ovt);
66 2 L1_uartD_Arrayhex(D_struct2U8(S),D_S_LEN);
67 2
68 2 if(0xaa55 == S.d0xaa55)
69 2 {////>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>和应用强相关
70 3 L3_S_2_R();
71 3 ////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<和应用强相关
72 3 printfs("\r\nSpara ok ");
73 3 return ovt;
74 3 }else
75 2 {
76 3 S.d0xaa55 = D_0xaa55;
77 3 printf1("\r\nProg %x",S.d0xaa55);
78 3 L3_R_2_S();
79 3 L0_Iap_Program_array(D_EEP_BASE,D_struct2U8(S),D_S_LEN);
80 3 }
81 2 }while(ovt ++< 2);
82 1 return 100;
83 1 }
84
85 /*
86 void L3_param_init(void)
87 {
88 int i;
89 for(i=0;i<D_ch_max_num;i++)
90 {
91 G.weight[i] = 0;
92 }
93 G.allweight = 0;
94 G._total_weight = 0;
95 G._total_zweight = 0;
96
97 //L3_eeprom_read_param();
98 }
99
100 */
101
102 ///出厂参数 向 保存参数
103 void L3_S(void)
104 {
105 1
106 1
107 1 /// Lc_buf_copy_uc((u8 *)&R.sd,(u8 *)&iapData,20);
108 1 //写入eeprom
109 1 /// if(L1_eeprom_write((U8*)&iapData,sizeof(TS_GlobalRegisterSave_)) == 0)
C51 COMPILER V9.54 APP_CONFIG 09/06/2024 11:24:44 PAGE 3
110 1 {
111 2 // L0_uart0_sendstr("e2p write success");
112 2 }
113 1 }
114
115 ////把当前任务中的数据放入到保存参数(一般是eeprom
116 void L2_para_2_S(TS_para_ *t)
117 {////void L0_Iap_Program_array(vU16 addr,U8 *buf,U8 len)
118 1 /// L0_Iap_Program_array(t->add,);
119 1
120 1 }
*** WARNING C280 IN LINE 116 OF ..\source\app\app_config.c: 't': unreferenced local variable
121
122
123
124 //读取iap内容,写入reg
125 void L3_iap_2_reg(void)
126 {
127 1
128 1 /*
129 1
130 1
131 1 U8 len = 0,i = 0;
132 1 if(L1_eeprom_read((U8*)&iapData,&len) == 1)
133 1 {
134 1 L0_uart0_sendstr("e2p read failed\r\n");
135 1 return;
136 1 }
137 1 L0_uart0_sendstr("e2p read success\r\n");
138 1
139 1 Lc_buf_copy_uc((u8 *)&iapData,(u8 *)&R.sd,20);
140 1
141 1 */
142 1
143 1 }
144
145 /*********
146
147
148 int L3_mcu_id_ok(void)
149 {
150 U8 i = 0,crc[2];
151 U32 enc_key;
152 //1.获取MCU_ID
153 L0_id_get_rom(G.e.mcu_id);
154 for(i=0;i<MCU_ID_LEN;i++)
155 {
156 L0_uart0_uchex(G.e.mcu_id[i]);
157 }
158
159 //2.读取eeprom中的加密信息
160 L0_Iap_Read_array(EEP_ENC_ADDR, (U8*)&eep_enc, MCU_ID_KEY_LEN + MCU_ID_LEN + 2);
161 crc16(crc,(U8*)&eep_enc,MCU_ID_KEY_LEN + MCU_ID_LEN);
162 if(eep_enc.crc[0] != crc[0] || eep_enc.crc[1] != crc[1])
163 {
164 L0_uart0_uc('-');
165 return 0;
166 }
167
168 //3.根据mcu_id和enc_key计算enc_val
169 enc_key = ((U32)eep_enc.enc_key[0] << 24) | (eep_enc.enc_key[1] << 16) | (eep_enc.enc_key[2] << 8) |(eep_
-enc.enc_key[3] << 0);
C51 COMPILER V9.54 APP_CONFIG 09/06/2024 11:24:44 PAGE 4
170 Lc_encrypt_id((U8*)G.e.mcu_enc_id, (U8*)G.e.mcu_id, enc_key, MCU_ID_LEN);
171
172 //4.判断enc_val是否一致
173 for(i=0;i<MCU_ID_KEY_LEN;i++)
174 {
175 if(G.e.mcu_enc_id[i] != eep_enc.enc_val[i])
176 {
177 return 0;
178 }
179 }
180 return 1;
181 }
182
183
184 **********/
185
186
187
188 #if 0
TS_EEPROM_ENC_ eep_enc;
void L0_reg_reset()
{/******
//R.p.reset = 0;
R.p.adc_ch_status = ADC_status_ch1_Ready | ADC_status_ch2_Ready | ADC_status_ch3_Ready | ADC_status_ch4_R
-eady; //修改采集通道
R.p.slaver_id = D_UART0_485_SLAVER_ID;
R.zero = 0;
R.status_eep_save = 0;
// R.reset = 0;
R.p.weight_max = 150; //500kg
R.p.lmd = 15; //2mv/v
R.p.adc_blur_mid = 1;
R.p.adc_blur_avg = 6;
R.p.adc_blur_shift[0] = 0;
R.p.adc_blur_shift[1] = 2;
R.p.adc_blur_shift[2] = 4;
R.p.adc_blur_threshold[0] = 1600; //1.6kg
R.p.adc_blur_threshold[1] = 700; //0.7kg
*********/
///L3_reg_2_iap();
}
void L0_reg_init(void)
{
R.sd.rev0x55aa55aa = 0x55aa55aa;
//R.total_weight = R.total_zweight = 0;
///L0_reg_reset();
L4_iap_2_reg();
}
S32 L3_count_std_weight(S32 weight)
{
U8 i = 0;
U16 ratio = 100;
weight = (weight - G._total_zweight)/10;
C51 COMPILER V9.54 APP_CONFIG 09/06/2024 11:24:44 PAGE 5
for(i=0;i<D_weight_std_num;i++)
{
if(R.p.weight_std[i].weight_range == 0 || (R.p.weight_std[i].weight_range * 100) >= weight)
{
break;
}
}
if(i<D_weight_std_num && R.p.weight_std[i].ratio != 0)
{
ratio = R.p.weight_std[i].ratio;
}
return (S32)(weight * 1.0 * ratio / 100) ;
}
#endif
245
246
247
248 void L0_main_lowp(void)
249 {//
250 1
251 1
252 1 BITN_1(P_SW2 ,BITN7);USBCON = 0;
253 1
254 1 D_stdIO_P0_ALL();
255 1
256 1 D_stdIO_P1_ALL();
257 1 D_stdIO_P2_ALL();
258 1 D_stdIO_P3_ALL();
259 1 D_stdIO_P4_ALL();
260 1 D_stdIO_P5_ALL();
261 1
262 1
263 1
264 1
265 1
266 1 WKTCL = 0xff; //设定掉电唤醒时钟约为 1 秒钟 WKTCH = 0x87;
267 1
268 1 WKTCH = 0x87;
269 1 ///SetWakeUpTime(10000);
270 1
271 1 D_P24_REV();
272 1 Lc_delay_ms(500);
273 1 D_P24_REV();
274 1 Lc_delay_ms(500);
275 1 D_P24_REV();
276 1 Lc_delay_ms(500);
277 1
278 1 D_P24_ON();
279 1 P_SW2|=0x80;
280 1
281 1 P0PU = 0;
282 1 P1PU = 0;
283 1 P2PU = 0;
284 1 P3PU = 0;
285 1 P4PU = 0;
286 1 P5PU = 0;
287 1
288 1 P0SR =0xff;
289 1 P1SR =0xff;
290 1 P2SR =0xff;
291 1 P3SR =0xff;
292 1 P4SR =0xff;
C51 COMPILER V9.54 APP_CONFIG 09/06/2024 11:24:44 PAGE 6
293 1 P5SR =0xff;
294 1
295 1 P0DR =0xff;
296 1 P1DR =0xff;
297 1 P2DR =0xff;
298 1 P3DR =0xff;
299 1 P4DR =0xff;
300 1 P5DR =0xff;
301 1
302 1
303 1 P0IE =0;
304 1 P1IE =0;
305 1 P2IE =0;
306 1 P3IE =0;
307 1 P4IE =0;
308 1 P5IE =0;
309 1
310 1 USBCON = 0;
311 1 ///USBCON = 0x80;
312 1
313 1
314 1
315 1
316 1 D_HighR_P0_ALL();
317 1 D_HighR_P1_ALL();
318 1 D_HighR_P2_ALL();
319 1 D_HighR_P3_ALL();
320 1 D_HighR_P4_ALL();
321 1 D_HighR_P5_ALL();
322 1 P_SW2 = 0x80;
323 1 // XOSCCR =0;
324 1 ///HIRCCR = 0;
325 1 /*****
326 1
327 1 IRC32KCR = 0x80; //启动内部32K IRC
328 1 while (!(IRC32KCR & 1)); //等待时钟稳定
329 1 CLKDIV = 0x00; //时钟不分频
330 1 CLKSEL = 0x03; //选择内部32K
331 1 P_SW2 = 0x00;
332 1
333 1
334 1 D_stdIO_P0_ALL();
335 1 D_stdIO_P1_ALL();
336 1 D_stdIO_P2_ALL();
337 1 D_stdIO_P3_ALL();
338 1 D_stdIO_P4_ALL();
339 1 D_stdIO_P5_ALL();
340 1
341 1 P0 = 0xff;
342 1 P1 = 0xff;
343 1 P2 = 0xff;
344 1 P3 = 0xff;
345 1 P4 = 0xff;
346 1 P5 = 0xff;
347 1
348 1
349 1
350 1 *******/
351 1 RSTCFG=0;//没有变化43ua 41ua
352 1
353 1 while(9)
354 1 {
C51 COMPILER V9.54 APP_CONFIG 09/06/2024 11:24:44 PAGE 7
355 2
356 2 D_HighR_P2_ALL();
357 2
358 2
359 2
360 2
361 2
362 2 _nop_();
363 2 _nop_();
364 2
365 2 PCON = 0x02; ////2222 //MCU进入掉电模式
366 2 ///D_LPCD_INT_CLOSE(); 对掉电唤醒后有一个中断进来没有效果
367 2 _nop_();
368 2 _nop_(); _nop_();
369 2 _nop_(); _nop_();
370 2 _nop_();
371 2 /// D_P24_REV();
372 2
373 2 D_stdIO_P2_ALL();
374 2 D_P24_REV();
375 2
376 2 Lc_delay_ms(300);
377 2 D_P24_REV();
378 2
379 2
380 2 }
381 1
382 1 }
383
384
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 892 ----
CONSTANT SIZE = 36 ----
XDATA SIZE = 54 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
EDATA SIZE = ---- ----
HDATA SIZE = ---- ----
XDATA CONST SIZE = ---- ----
FAR CONST SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)