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

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

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

p>F 1434 00277 BSF T_DREBEZG ;разрешаем кнопки

1435 00278 BSF SHORT_PI

00279 ;==========================================================

00280 ;чтение из еепромки данных до запуска

00281 BANK2

1703 M BSF STATUS,RP1

1283 M BCF STATUS,RP0

0073 018D 00282 CLRF EEADR ;читаем 1 ячейку для определения предыдущего

00283 BANK3 ;состояния - был ли прерван рабочий цикл

0074 1703 M BSF STATUS,RP1

1683 M BSF STATUS,RP0

140C 00284 BSF EECON1,RD

00285 BANK2

1703 M BSF STATUS,RP1

1283 M BCF STATUS,RP0

080C 00286 MOVFW EEDATA

00287 BANK0

A 1303 M BCF STATUS,RP1

007B 1283 M BCF STATUS,RP0

C 00AA 00288 MOVWF AKK_Z_R ;запись iитанного значения в выбранный регистр

D 1C2A 00289 BTFSS NEW_ZAR ; при откл питания прервали цикл зарядки?

E 2894 00290 GOTO PUSK ;нет, начинаем сначала

00291

F 302A 00292 MOVLW AKK_Z_R ;да, восстанавливаем остальные регистры

0084 00293 MOVWF FSR

00294 READ_EEPR

1103 00295 CLRZ

302E 00296 MOVLW EMK_Z_H ;проверяем все цифры высветили?

0204 00297 SUBWF FSR,W

1903 00298 SKPNZ

2894 00299 GOTO PUSK

0086 0A84 00300 INCF FSR,F

00301 BANK25.03 ZY_LIT.ASM 11-12-2006 19:18:31 PAGE 7OBJECT CODE LINE SOURCE TEXT

VALUE

1703 M BSF STATUS,RP1

1283 M BCF STATUS,RP0

0089 0A8D 00302 INCF EEADR,F ;переход к след ячейки еепромки

00303 BANK3

A 1703 M BSF STATUS,RP1

B 1683 M BSF STATUS,RP0

C 140C 00304 BSF EECON1,RD

00305 BANK2

D 1703 M BSF STATUS,RP1

E 1283 M BCF STATUS,RP0

F 080C 00306 MOVFW EEDATA

00307 BANK0

1303 M BCF STATUS,RP1

1283 M BCF STATUS,RP0

0080 00308 MOVWF INDF

2881 00309 GOTO READ_EEPR ;нет ещё, продолжаем

00310 ;==========================================================

00311 ;==================== ГЛАВНЫЙ ЦИКЛ ПРОГРАММЫ

00312 ;==========================================================

00313 PUSK

20DE 00314 CALL PRER_KLAVA ;проверка кнопок

2128 00315 CALL TIMERS ;проверка таймеров

1C2A 00316 BTFSS NEW_ZAR ;новый цикл запущен?

2894 00317 GOTO PUSK ;нет, возврат в начало

1E86 00318 BTFSS V_PIT ;проверяем питание есть?

22DE 00319 CALL SAVE_MEM ;пропало, сохраняем текущие параметры

A 2894 00320 GOTO PUSK

00321 ;==========================================================

00322 ;============ КОНТРОЛЬ ЗАРЯДНО-РАЗРЯДНЫХ ПРОЦЕССОВ =================

00323 ;==========================================================

B 00324 CONTR_Z1 ;контроль 1 зарядки

B 142F 00325 BSF SEG1_MIG ;восстановление инфы если пропадало питание

C 16B3 00326 BSF ZARAD ;включение заряда

D 22CF 00327 CALL COPY_A ;если он был прерван аварийной ситуацией

E 1003 00328 CLRC

F 30DB 00329 MOVLW O_V_ZARAD ;проверка окончания заряда

00A0 0223 00330 SUBWF V_AKK,W ;

A1 1C03 00331 SKPC

A2 01BD 00332 CLRF TMR_NEXT

A3 0ABD 00333 INCF TMR_NEXT,F ;

00A4 3028 00334 MOVLW O_NEXT ;проверяем может хватит ?

00A5 023D 00335 SUBWF TMR_NEXT,W

A6 1D03 00336 SKPZ

A7 2963 00337 GOTO COUNT_EMK

00A8 01BD 00338 CLRF TMR_NEXT ;очищаем рабочие ячейки для след. раза

A9 16AA 00339 BSF ZAR_RAZ ;напряжение достигло 4,3В, запускаем разрядку

AA 102F 00340 BCF SEG1_MIG ;выкл. мигание 1 сегмента

AB 14AF 00341 BSF SEG2_MIG ;вкл. мигание 2 сегмента

AC 12B3 00342 BCF ZARAD ;выключаем заряд

00AD 1633 00343 BSF RAZRAD ;включаем разряд

AE 22CF 00344 CALL COPY_A

00AF 16B4 00345 BSF Z_R_PI ;уст. бит что надо 4 раза пикнуть

00B0 2963 00346 GOTO COUNT_EMK5.03 ZY_LIT.ASM 11-12-2006 19:18:31 PAGE 8OBJECT CODE LINE SOURCE TEXT

VALUE

;--------------------------------------

B1 00348 CONTR_RAZ ;контроль разрядки

B1 14AF 00349 BSF SEG2_MIG ;восстановление инфы если пропадало питание

B2 1633 00350 BSF RAZRAD ;включение разрядки

B3 22CF 00351 CALL COPY_A ;если он был прерван аварийной ситуацией

B4 1003 00352 CLRC

B5 308A 00353 MOVLW O_V_RAZRAD ;проверка окончания разрядки

B6 0223 00354 SUBWF V_AKK,W

B7 1803 00355 SKPNC

00B8 01BD 00356 CLRF TMR_NEXT

B9 0ABD 00357 INCF TMR_NEXT,F ;

00BA 3028 00358 MOVLW O_NEXT ;проверяем может хватит ?

00BB 023D 00359 SUBWF TMR_NEXT,W

BC 1D03 00360 SKPZ

BD 2963 00361 GOTO COUNT_EMK

00BE 01BD 00362 CLRF TMR_NEXT ;очищаем рабочие ячейки для след. раза

BF 12AA 00363 BCF ZAR_RAZ ;напряжение упало до 2,7В, запускаем посл. зарядку

C0 162A 00364 BSF ZAR_1_2 ;вкл. последний заряд

C1 10AF 00365 BCF SEG2_MIG ;выкл. мигание 2 сегмента

C2 152F 00366 BSF SEG3_MIG ;вкл. мигание 3 сегмента

C3 16B3 00367 BSF ZARAD ;выключаем разряд

C4 1233 00368 BCF RAZRAD ;включаем заряд

C5 22CF 00369 CALL COPY_A

C6 16B4 00370 BSF Z_R_PI ;уст. бит что надо 4 раза пикнуть

00C7 2963 00371 GOTO COUNT_EMK

00372 ;--------------------------------------

C8 00373 CONTR_Z2 ;контроль 2 зарядки

00C8 152F 00374 BSF SEG3_MIG ;восстановление инфы если пропадало питание

C9 16B3 00375 BSF ZARAD ;включение заряда

CA 22CF 00376 CALL COPY_A ;если он был прерван аварийной ситуацией

CB 1003 00377 CLRC

CC 30DB 00378 MOVLW O_V_ZARAD ;проверка окончания заряда

00CD 0223 00379 SUBWF V_AKK,W ;

CE 1C03 00380 SKPC

CF 01BD 00381 CLRF TMR_NEXT

D0 0ABD 00382 INCF TMR_NEXT,F ;

00D1 3028 00383 MOVLW O_NEXT ;проверяем может хватит ?

00D2 023D 00384 SUBWF TMR_NEXT,W

D3 1D03 00385 SKPZ

D4 2963 00386 GOTO COUNT_EMK

00D5 01BD 00387 CLRF TMR_NEXT ;очищаем рабочие ячейки для след. раза

D6 122A 00388 BCF ZAR_1_2 ;отключаем последний заряд

D7 112F 00389 BCF SEG3_MIG

D8 172A 00390 BSF ZAR_END ;уст. бит окончания всего цикла

D9 12B3 00391 BCF ZARAD ;выключаем зарядку и разрядку

00DA 1233 00392 BCF RAZRAD

DB 22CF 00393 CALL COPY_A

00DC 1734 00394 BSF END_PI ;уст. бит что надо 5 раз пикнуть

00DD 2963 00395 GOTO COUNT_EMK

00396 ;==========================================================

00397 ;======================== ОБРАБОТКА КНОПОК

00398 ;==========================================================

DE 00399 PRER_KLAVA ;проверка - какие кнопки нажали?

MPASM 5.03 ZY_LIT.ASM 11-12-2006 19:18:31 PAGE 9OBJECT CODE LINE SOURCE TEXT

VALUE

DE 0806 00400 MOVFW PORTB

DF 1C34 00401 BTFSS T_DREBEZG

E0 0008 00402 RETURN

00E1 1DB4 00403 BTFSS DR_PUSK

E2 28E8 00404 GOTO CTRL_KN

00E3 18B4 00405 BTFSC ON_KN

E4 0008 00406 RETURN

E5 1934 00407 BTFSC OFF_KN

E6 20EE 00408 CALL NEW_PUSK

E7 0008 00409 RETURN

E8 00410 CTRL_KN

E8 1C0B 00411 BTFSS INTCON,0 ;проверяем было прерывание от клавы?

00E9 0008 00412 RETURN ;нет, возвращаемся

EA 1F86 00413 BTFSS KN_PUSK ;проверяем какая кнопка

00EB 15B4 00414 BSF DR_PUSK ;

EC 1034 00415 BCF T_DREBEZG

ED 0008 00416 RETURN

00417 ;-----------------------

EE 00418 NEW_PUSK ;запуск нового цикла (нажали пуск)

00EE 11B4 00419 BCF DR_PUSK

EF 1134 00420 BCF OFF_KN

00F0 18AA 00421 BTFSC CTRL_PUSK ;а может новый цикл уже запущен?

F1 28FB 00422 GOTO ZAR_STOP ;значит надо остановить цикл

F2 14AA 00423 BSF CTRL_PUSK ;нажали пуск можно контролировать аварии

F3 2110 00424 CALL CONTR_AKK

F4 19AA 00425 BTFSC ADC_AVAR ;а может аккумулятор переполюсован или не вставлен?

F5 0008 00426 RETURN ;да, выход

F6 142A 00427 BSF NEW_ZAR ;запуск нового цикла

F7 16B3 00428 BSF ZARAD ;запускем зарядку

F8 22CF 00429 CALL COPY_A

F9 142F 00430 BSF SEG1_MIG ;включаем мигание 1 сегмента

FA 0008 00431 RETURN