Устройства для тестирования аккумуляторов

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

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>