?? bat_ctrl_12v_24v.lst
字號:
230 1 else
231 1 VoltFlag = 0;
232 1
233 1 while(1)
234 1 {
235 2 Clr_Dog();
236 2 TimeMode = Get_Mode();
237 2 GetAd();
238 2 if(VoltFlag)
239 2 Main_Logic24(TimeMode);
240 2 else
241 2 Main_Logic12(TimeMode);/**/
C51 COMPILER V7.50 BAT_CTRL_12V_24V 12/27/2008 14:12:22 PAGE 5
242 2 //enPWM = 1;
243 2 }
244 1 }
245
246 /*其他函數定義部分*/
247 /*********************************************************************/
248 /*函數名:
249 /*功能:
250 /*輸入參數:
251 /*返回值:
252 /*調用函數:
253 /*被調用函數:
254 /*編寫日期:
255 /*最后修改日期:
256 /********************************************************************/
257 void Init_Var()
258 {
259 1 Clr_Dog();
260 1
261 1 Seconds = 0;
262 1 Minutes = 0;
263 1 Hours = 0;
264 1 ClrFlag = 1; //允許時間清0
265 1 PowerFlag = 1; //允許放電
266 1 CtrlFlag = 1; //允許控制器打開負荷
267 1 StopFlag = 0; //允許充電
268 1 L2Delay = 0;
269 1 L3Delay = 0;
270 1 Delay4min1 = 0;
271 1 Delay4min2 = 0;
272 1 enL2 = 0;
273 1 enL3 = 0;
274 1 enPWM = 0;
275 1 enDelay1 = 0;
276 1 enDelay2 = 0;
277 1 }
278 /*********************************************************************/
279 /*函數名:
280 /*功能:
281 /*輸入參數:
282 /*返回值:
283 /*調用函數:
284 /*被調用函數:
285 /*編寫日期:
286 /*最后修改日期:
287 /********************************************************************/
288 void Init_IO()
289 {
290 1 Clr_Dog();
291 1
292 1 P0M1 = 0x0c; //B00001100
293 1 P0M2 = 0x33; //B00110011
294 1 ADINS = 0x60; //B01100000
295 1 P1M1 = 0x2F; //B00101111
296 1 P1M2 = 0x10; //B00010000
297 1 PT0AD = 0x0C; //禁止P02、P03的數字輸入功能
298 1 }
299 /*********************************************************************/
300 /*函數名:
301 /*功能:
302 /*輸入參數:
303 /*返回值:
C51 COMPILER V7.50 BAT_CTRL_12V_24V 12/27/2008 14:12:22 PAGE 6
304 /*調用函數:
305 /*被調用函數:
306 /*編寫日期:
307 /*最后修改日期:
308 /********************************************************************/
309 void Init_AD()
310 {
311 1 ADINS = 0x60; //選擇CH1、CH2
312 1 ADCON1 = 0x45; //允許中斷,使能ADC1,立即啟動方式
313 1 ADMODA = 0x20; //雙通道連續轉換
314 1 ADMODB = 0xe0; //分頻 = 8
315 1 }
316 /*********************************************************************/
317 /*函數名:
319 /*輸入參數:
320 /*返回值:
321 /*調用函數:
322 /*被調用函數:
323 /*編寫日期:
324 /*最后修改日期:
325 /********************************************************************/
326 void Init_Timer()
327 {
328 1 Clr_Dog();
329 1
330 1 TRIM |= 0x80; //選擇內部RC振蕩器的輸出作為CPU時鐘
331 1 TMOD = 0x11; //定時器0工作在模式1
332 1 TAMOD = 0x00; //定時器0工作在模式1
333 1 TH0 = 0x80; //
334 1 TL0 = 0x00; //
335 1 TH1 = 0x80;
336 1 TL1 = 0x00;
337 1 TR0 = 1; //打開定時器0
338 1 TR1 = 1;
339 1 }
340 /*********************************************************************/
341 /*函數名:
342 /*功能:
343 /*輸入參數:
344 /*返回值:
345 /*調用函數:
346 /*被調用函數:
347 /*編寫日期:
348 /*最后修改日期:
349 /********************************************************************/
350 void Init_RTC()
351 {
352 1 RTCH = 0xE0;
353 1 RTCL = 0xFF; //一個周期1s
354 1 RTCCON = 0x63; //內部RC振蕩器輸出時鐘,中斷使能,RTC啟動
355 1 }
356 /*********************************************************************/
357 /*函數名:
358 /*功能:
359 /*輸入參數:
360 /*返回值:
361 /*調用函數:
362 /*被調用函數:
363 /*編寫日期:
364 /*最后修改日期:
365 /********************************************************************/
C51 COMPILER V7.50 BAT_CTRL_12V_24V 12/27/2008 14:12:22 PAGE 7
366 void Init_WDT()
367 {
368 1 Clr_Dog();
369 1
370 1 ACC = WDCON; //讀取WDT控制寄存器
371 1 ACC = ACC|0x04; //置位ACC.2準備啟動WDT
372 1 WDL = 0x80; //設置8位倒計時器初值
373 1 WDCON = ACC; //啟動WDT
374 1 WFEED1 = 0xA5; //清零第一部分
375 1 WFEED2 = 0x5A; //清零第二部分
376 1 }
377 /*********************************************************************/
378 /*函數名:
379 /*功能:
380 /*輸入參數:
381 /*返回值:
382 /*調用函數:
383 /*被調用函數:
384 /*編寫日期:
385 /*最后修改日期:
386 /********************************************************************/
387 void Init_Interrupt()
388 {
389 1 EWDRT = 1; //實時時鐘中斷使能
390 1 EAD = 1; //AD中斷使能
391 1 ET0 = 1; //
392 1 ET1 = 1;
393 1 // EA = 1; //總中斷使能
394 1 }
395 /*********************************************************************/
396 /*函數名:
397 /*功能:
398 /*輸入參數:
399 /*返回值:
400 /*調用函數:
401 /*被調用函數:
402 /*編寫日期:
403 /*最后修改日期:
404 /********************************************************************/
405 void Init_All()
406 {
407 1 Clr_Dog();
408 1
409 1 Init_Var();
410 1 Init_IO();
411 1 Init_AD();
412 1 Init_Timer();
413 1 Init_RTC();
414 1 Init_WDT();
415 1 Init_Interrupt();
416 1 Led_Ctrl(1,2); //L3閃爍——正常運行
417 1 Led_Ctrl(0,0); //L2滅——沒有過充或過放
418 1 P04 = 0; //負荷12關
419 1 P05 = 0; //負荷11關
420 1 P14 = 0; //
421 1 }
422 /*********************************************************************/
423 /*函數名:
424 /*功能:
425 /*輸入參數:
426 /*返回值:
427 /*調用函數:
C51 COMPILER V7.50 BAT_CTRL_12V_24V 12/27/2008 14:12:22 PAGE 8
428 /*被調用函數:
429 /*編寫日期:
430 /*最后修改日期:
431 /********************************************************************/
432 uchar Get_Mode()
433 {
434 1 uchar mode;
435 1
436 1 Clr_Dog();
437 1
438 1 mode = 0;
439 1 if(!P11)
440 1 {
441 2 mode += 1;
442 2 }
443 1 if(!P10)
444 1 {
445 2 mode += 2;
446 2 }
447 1 if(!P13)
448 1 {
449 2 mode += 4;
450 2 }
451 1 if(!P12)
452 1 {
453 2 mode += 8;
454 2 }
455 1 return(mode);
456 1 }
457 /*********************************************************************/
458 /*函數名:
459 /*功能:
460 /*輸入參數:
461 /*返回值:
462 /*調用函數:
463 /*被調用函數:
464 /*編寫日期:
465 /*最后修改日期:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -