📄 init_sys.lst
字号:
190 1 }
191
192
193 /**********************************************************************
194 **函数原型: void Attand_485(void)
195 **入口参数: Xin_485_b=1
196 **出口参数: 无
197 **返 回 值: 无
198 **说 明: T4定时中断子程序INIT
199 ************************************************************************/
200
201
202 void Timer4_Init (int counts)
203 {
204 1 CKCON&=0xbf; //tm4=0 12 scale
205 1 TH4=(65536-counts)/256;
206 1 TL4=(65536-counts)%256;
207 1 T4CON|=0x4; //START
208 1 RCAP4=65536-counts*SYSCLK/12000 ; //65536-T*1000*SYSCLK/Scale /1000000 T(ms)
209 1
210 1 //TF4 EXF4 RCLK1 TCLK1 EXEN4 TR4 C/T4 CP/RL4 00000000
211 1 // 位7 位6 位 5 位 4 位 3 位 2 位 1 位0
212 1 // 0 0 0 0 0 1 0
- 0
213 1
214 1 T4CON|=0x4; //START TR4
215 1 EIE2|=4; // IE4=1
216 1
217 1 }
218
219
220
221 void Tpca_Init ()
222 {
223 1
224 1 // 配置PCA
225 1 PCA0MD = 0x40; // 禁止CF中断
226 1 // PCA时基= SYSCLK
227 1 PCA0CPL0 = PWM; // 初始化PCA的PWM
228 1 PCA0CPH0 = PWM;
229 1 PCA0CPM0 = 0x42; // CCM0为8位PWM方
230 1 DIS_PWM ;
231 1 PCA0CN = 0x40; // 允许PCA计数器
232 1
233 1
234 1 /*
235 1 // PCA0CN = 0x40; // BIT7 CF BIT6 CR Clear TF3;
236 1 PCA0MD=0X00; //0X01; // scale 12 BIT0: ECF
237 1 // use SYSCLK as timebase
238 1 PCA0H=0X00;
239 1 PCA0L=0X00;
C51 COMPILER V7.50 INIT_SYS 06/10/2007 23:11:21 PAGE 5
240 1
241 1 //EIEP1.3
242 1 EIP1=EIP1|0X08; // PCA0 INT HGIH
243 1
244 1
245 1 PCA0CPM0=0X46;
246 1 //。通过置位PCA0CPMn寄存器中ECOMn、TOGn和PWMn位来使能频率输
247 1 //出方式。
248 1
249 1 PCA0CPH0=120;
250 1 PCA0CPL0=190;
251 1
252 1 PCA0CN = 0x40; // BIT7 CF BIT6 CR Clear TF3; start Timer
253 1 */
254 1 }
255
256
257
258 uint CWFTT=0;
259 uint rr45,rr56;
260 void Tpca_ISR (void) interrupt 9 using 2 //250uS ONCE
261 {
262 1
263 1 PCA0CN &= 0x7F; //CLR BIT7 CF
264 1 // PCA0H=0XFE; //65536-461
265 1 // PCA0L=0X33;
266 1
267 1 PCA0H=0XFC; //65536-461
268 1 PCA0L=0X66;
269 1
270 1 /*
271 1 CWFTT++;
272 1 if( CWFTT>4000) {
273 1 CWFTT=0;
274 1 if(++rr45>=10) {
275 1 rr45=0;
276 1 if(++rr56>=20)
277 1 rr56=0;
278 1 }
279 1 }
280 1 */
281 1 //Rf_2262();
282 1 }
283
284
285
286
287
288
289
290
291
292 /******************************************************************
293 ; 提供50ms延时子程序
294 ; 函数原型: void wait_50ms(void)
295 *******************************************************************/
296 void Wait_50ms(void)
297 {
298 1 os_wait2(K_TMO, 25);
299 1 }
300
301 //如是第一次上电则初始化EEPROM
C51 COMPILER V7.50 INIT_SYS 06/10/2007 23:11:21 PAGE 6
302 // ttt 为1 时正常初始化,0时强行恢复出厂数据
303 void FLASH_INIT(uchar ttt ) {
304 1 uchar *Poitc;
305 1 uchar *Poitt11;
306 1 uchar *Poitt22;
307 1 xdata uint mmk;
308 1 uchar Summ,timee;
309 1
310 1
311 1 Looppp0:
312 1 timee=0;
313 1 // read_fm_memory(0,iic_data_buf,12);
314 1 while (1) { // wait for EEProm is free
315 2 if (EETask == 0xff) break;
316 2 os_wait2(K_TMO, 2);
317 2 }
318 1 EECmd = FM_MEMORY_RD;
319 1 FM_addr=0;
320 1 FM_num=12;
321 1
322 1 EETask = os_running_task_id();
323 1 os_send_signal(FMROM);
324 1 os_wait2(K_SIG, 0);
325 1 EETask = 0xff; //EEProm read =================sample
326 1
327 1 if(iic_data_buf[8]!= MM0xa5||ttt==0) {
328 2 Nessst44888:
329 2 Poitt11=(uchar *)&Para_all_True.Apn[0];
330 2 Clr_MeM(Poitt11,(sizeof(Para_all_True)));
331 2
332 2 Poitt11=(uchar *)&Para_all_True.Apn[0];
333 2 Poitt22=(uchar *)&struct_Para_all_IniteValue.Apn[0];
334 2 for(mmk=0;mmk<sizeof(Para_all_True);mmk++) {
335 3 *Poitt11++= *Poitt22++;
336 3 }
337 2
338 2
339 2 //清除所有报警 记录
340 2 Clr_BaoJingJiLu_All() ;
341 2
342 2
343 2 }
344 1 else {
345 2 Nessst:
346 2 Poitc=&Para_all_True.Apn[0];
347 2 //read_fm_memory(0,Poitc,128);
348 2 while (1) { // wait for EEProm is free
349 3 if (EETask == 0xff) break;
350 3 os_wait2(K_TMO, 2);
351 3 }
352 2 EECmd = FM_MEMORY_RD;
353 2 FM_addr=0;
354 2 FM_num=253;
355 2
356 2 EETask = os_running_task_id();
357 2 os_send_signal(FMROM);
358 2 os_wait2(K_SIG, 0);
359 2
360 2 Summ=0;
361 2 for(mmk=0;mmk<252;mmk++)
362 2 Summ+=iic_data_buf[mmk];
363 2
C51 COMPILER V7.50 INIT_SYS 06/10/2007 23:11:21 PAGE 7
364 2 if(Summ!= iic_data_buf[mmk]) {
365 3 if(++ timee>9) {
366 4 EETask = 0xff; //EEProm read =================sample
367 4
368 4 goto Nessst44888; //连续记取6次不成功则恢复出
-厂设置
369 4 }
370 3 else {
371 4 EETask = 0xff; //EEProm read ================
-=sample
372 4
373 4 goto Nessst;
374 4 }
375 3 }
376 2
377 2
378 2 EETask = 0xff; //EEProm read =================sample
379 2 for(mmk=0;mmk<253;mmk++)
380 2 *Poitc++=iic_data_buf[mmk];
381 2
382 2
383 2
384 2 //**说 明: 读报警记录到内存
385 2 #if (Is_JiLuRecIn2416 == 1 )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -