Устройства для тестирования аккумуляторов
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
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