Устройства для тестирования аккумуляторов
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
00432 ;--------------------------------------------------------------------
FB 00433 ZAR_STOP ;полный останов цикла с очисткой всех регистров
FB 12B3 00434 BCF ZARAD ;выключаем зарядку и разрядку
00FC 1233 00435 BCF RAZRAD
FD 22CF 00436 CALL COPY_A
00FE 01AB 00437 CLRF EMK_R_L
00FF 01AC 00438 CLRF EMK_R_H
01AD 00439 CLRF EMK_Z_L
01AE 00440 CLRF EMK_Z_H
01AA 00441 CLRF AKK_Z_R
01BA 00442 CLRF TMR_ZAR
01BB 00443 CLRF TMR_PI
01BE 00444 CLRF COUNT_PI
102F 00445 BCF SEG1_MIG
10AF 00446 BCF SEG2_MIG
112F 00447 BCF SEG3_MIG
300F 00448 MOVLW B'00001111'
A 05B4 00449 ANDWF FLAG_ALL,F
B 01B5 00450 CLRF BIT_SOS
C 0197 00451 CLRF CCP1CON
D 1435 00452 BSF SHORT_PI5.03 ZY_LIT.ASM 11-12-2006 19:18:31 PAGE 10OBJECT CODE LINE SOURCE TEXT
VALUE
E 22D8 00453 CALL STOP_EEPR ;записываем в епромку, что при след. вкл. питания
F 0008 00454 RETURN ;восстанавливать никакие данные не надо
00455
00456 ;==========================================================
00457 ;========== КОНТРОЛЬ НАЛИЧИЯ И НАПРЯЖЕНИЯ АККУМУЛЯТОРА =======
00458 ;==========================================================
00459 CONTR_AKK ;измерение напряжения аккумулятора
2121 00460 CALL ADC_V ;собственно измерение напр.
152A 00461 BSF AKK_ERR ;пред. установка перед новой записью
1003 00462 CLRC
3080 00463 MOVLW O_MIN_V ;проверяем корректность напряжений в ячейке
0223 00464 SUBWF V_AKK,W ;т.е. находится ли измеренное напряжение
1C03 00465 SKPC ;в заданном диапазоне - 2,5...4,5В ?
0116 291C 00466 GOTO TIM_ERR
1003 00467 CLRC
30E6 00468 MOVLW O_MAX_V
0119 0223 00469 SUBWF V_AKK,W ;
A 1C03 00470 SKPC
011B 112A 00471 BCF AKK_ERR ;напряжение на аккумуляторе в заданном диапозоне
011C 00472 TIM_ERR
C 1D2A 00473 BTFSS AKK_ERR
011D 0008 00474 RETURN
E 15AA 00475 BSF ADC_AVAR
F 01BD 00476 CLRF TMR_NEXT
0120 0008 00477 RETURN
00478 ;------------------------------
00479 ADC_V ;собственно измерение,
2299 00480 CALL DELAY_10 ;задержка для зарядки C'hold
151F 00481 BSF ADCON0,GO ;старт преобразования
00482 ADC_GO
191F 00483 BTFSC ADCON0,GO ;проверка окончания преобразования
2923 00484 GOTO ADC_GO
081E 00485 MOVFW ADRESH ;заносим только старший байт в память
0126 00A3 00486 MOVWF V_AKK ;
0008 00487 RETURN
00488
00489 ;==========================================================
00490 ;======== КОНТРОЛЬ ВСЕХ ВРЕМЕННЫХ ЦИКЛОВ (ТАЙМЕРОВ) ===============
00491 ;==========================================================
00492 TIMERS ;контроль таймеров
1D0B 00493 BTFSS INTCON,2 ;проверяем таймер_0 сработал?
0008 00494 RETURN ;нет еще, возвр на место
A 110B 00495 BCF INTCON,2 ;сработал, сбрасываем что он сработал
B 3022 00496 MOVLW IND_SEG3 ;проверяем все цифры высветили?
C 0230 00497 SUBWF FSR_2,W
D 1D03 00498 SKPZ
E 2805 00499 GOTO INDIK ;нет ещё, продолжаем
F 3020 00500 MOVLW IND_SEG1 ;все высветили, переходим к 1 цифре
00B0 00501 MOVWF FSR_2
03B0 00502 DECF FSR_2,F
2805 00503 GOTO INDIK ;прога индикации
00504
00505 INDIK_OUT ;СЮДА ВЫХОДИМ ИЗ ИНДИКАЦИИ
MPASM 5.03 ZY_LIT.ASM 11-12-2006 19:18:31 PAGE 11OBJECT CODE LINE SOURCE TEXT
VALUE
0AB6 00506 INCF TMR_TIM_DEL,F ; увел кол-во срабатываний таймера
1103 00507 CLRZ
3031 00508 MOVLW O_TIM_DEL ;проверяем пора перейти к обработке
0236 00509 SUBWF TMR_TIM_DEL,W ;временных данных?
1D03 00510 SKPZ
0008 00511 RETURN ;нет ещё рано (мало срабатываний таймера)
01B6 00512 CLRF TMR_TIM_DEL ;очищаем для след раза
00513
00514 ;------------------ СЮДА ВЫХОДИМ КАЖДЫЕ 50,17мс ------------
A 1CAA 00515 BTFSS CTRL_PUSK ;новый цикл запущен?
B 2940 00516 GOTO CLR_SOS ;нет, значит SOS не надо запускать при аварии
C 1D2A 00517 BTFSS AKK_ERR ;новый цикл запущен - аварийные ситуации есть?
D 2940 00518 GOTO CLR_SOS
E 21F5 00519 CALL SOS ;да, запускаем сигнал SOS
013F 294D 00520 GOTO TIM_50MS
00521 CLR_SOS
01B5 00522 CLRF BIT_SOS
1435 00523 BSF SHORT_PI
0142 1AB4 00524 BTFSC Z_R_PI
294D 00525 GOTO TIM_50MS
0144 1B34 00526 BTFSC END_PI
294D 00527 GOTO TIM_50MS
01BE 00528 CLRF COUNT_PI
01BB 00529 CLRF TMR_PI
0148 13B4 00530 BCF PAUSE_PI
1EB4 00531 BTFSS Z_R_PI ;было окончание 1 заряда или разряда?
A 0197 00532 CLRF CCP1CON ;и выключаем пищалку
B 1F34 00533 BTFSS END_PI ;было окончание всех циклов?
C 0197 00534 CLRF CCP1CON ;и выключаем пищалку
D 00535 TIM_50MS
D 225B 00536 CALL IND_EMK ;подготовка данных к выводу на индикатор
E 2198 00537 CALL TIM_MIG ;проверяем прогу мигания (вкл/выкл цифру)
F 1C34 00538 BTFSS T_DREBEZG ;проверка можно нажим. кнопки?
2168 00539 CALL DREBEZG ;обработка дребезга кнопок
1AB4 00540 BTFSC Z_R_PI ;было окончание 1 заряда или разряда?
21C4 00541 CALL ALARM_4 ;надо издать 4 коротких пика
1B34 00542 BTFSC END_PI ;было окончание всех циклов?
21DC 00543 CALL ALARM_5 ;надо издать 5 длинных пика
19AA 00544 BTFSC ADC_AVAR ;
21BA 00545 CALL TIM_AVAR ;
1C2A 00546 BTFSS NEW_ZAR ;новый цикл запущен?
0008 00547 RETURN
2110 00548 CALL CONTR_AKK ;контроль напряжения на аккумуляторе
A 1B2A 00549 BTFSC ZAR_END ;весь цикл пройден?
B 0008 00550 RETURN
C 19AA 00551 BTFSC ADC_AVAR ;напряжение вышло за допустимые рамки 2,5В и 4,5В ?
D 0008 00552 RETURN
E 1AAA 00553 BTFSC ZAR_RAZ ;зарядка идёт или разрядка?
F 28B1 00554 GOTO CONTR_RAZ ;переод к контролю разрядного цикла
1A2A 00555 BTFSC ZAR_1_2 ;идёт 1 зарядка или последняя?
28C8 00556 GOTO CONTR_Z2 ;переходим к последней зарядке
289B 00557 GOTO CONTR_Z1 ;переходим к 1 зарядке
0163 00558 COUNT_EMK5.03 ZY_LIT.ASM 11-12-2006 19:18:31 PAGE 12OBJECT CODE LINE SOURCE TEXT
VALUE
1AAA 00559 BTFSC ZAR_RAZ ;и подiёт ёмкостей заряда или разряда
29A4 00560 GOTO IZM_EMK_RAZ ;в зависимости от того что щас идёт - зар/разр.
0165 1A2A 00561 BTFSC ZAR_1_2
29AF 00562 GOTO IZM_EMK_ZAR
0008 00563 RETURN
00564 ;--------------------------------------------------------------------
00565 DREBEZG ;устранение дребезга кнопок
0AB9 00566 INCF TMR_CLR_KN,F ;увел время прошедшее после отпускания кнопки
3028 00567 MOVLW O_CLR_KN ;проверяем может хватит блокировать кнопки?
016A 0239 00568 SUBWF TMR_CLR_KN,W
016B 1D03 00569 SKPZ
C 2974 00570 GOTO T_KN ;нет, рано разблокировать
016D 10B4 00571 BCF ON_KN
E 1134 00572 BCF OFF_KN
F 11B4 00573 BCF DR_PUSK
1434 00574 BSF T_DREBEZG ;хватит блокировать включаем кнопки
0171 01B8 00575 CLRF TMR_DREBEZG ;очищаем рабочие ячейки для след раза
01B9 00576 CLRF TMR_CLR_KN ;очищаем рабочие ячейки для след раза
0173 0008 00577 RETURN
00578 T_KN
18B4 00579 BTFSC ON_KN
2986 00580 GOTO T_KN_OFF
00581 T_KN_ON
1F86 00582 BTFSS KN_PUSK ;если кнопка ещё нажата
297A 00583 GOTO $+3
01B8 00584 CLRF TMR_DREBEZG ;срабатывание кнопки, начать отiёт заново
0008 00585 RETURN
A 180B 00586 BTFSC INTCON,0
017B 01B8 00587 CLRF TMR_DREBEZG ;срабатывание кнопки, начать отiёт заново
C 100B 00588 BCF INTCON,0
D 0AB8 00589 INCF TMR_DREBEZG,F ;увел время прошедшее после отпускания кнопки
E 3002 00590 MOVLW O_ON_KN ;проверяем может хватит блокиро?/p>