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

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

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

M_07S EQU D'15' ;для мигания цифр 0,7с и пауза м/у словами

00000002 00108 O_TIM_01S EQU D'2' ;время короткого пика и пробела м/у точками или тире SOS

00000014 00109 O_TIM_1S EQU D'20' ;

00110

00000008 00111 O_PI_4 EQU D'8' ;кол-во пиков и пауз м/у ними в сумме м/у циклами

0000000A 00112 O_PI_5 EQU D'10' ;кол-во пиков и пауз м/у ними в сумме в конце всего цикла

00000003 00113 O_PI_SOS EQU D'3' ;кол-во пиков в любой букве SOS = 3

00114

00115 ;константы для напр. из раiёта что ИОН = 5В и используется 8 бит АЦП

00000080 00116 O_MIN_V EQU D'128' ;минимальное напряжение на канале (2,5В)

000000E6 00117 O_MAX_V EQU D'230' ;максимальное напряжение на канале (4,5В)

0000008A 00118 O_V_RAZRAD EQU D'138' ;минимальное напр. до которого надо разряжать 2,7В

000000DB 00119 O_V_ZARAD EQU D'219' ;максимальное напр. до которого надо заряжать 4,3В

00120

00121 ;==========================================================

00122

00123 BANK0 MACRO

00124 BCF STATUS,RP1

00125 BCF STATUS,RP0

00126 ENDM

00127 ;

00128 BANK1 MACRO

00129 BSF STATUS,RP0

00130 BCF STATUS,RP1

00131 ENDM

00132 ;

00133 BANK2 MACRO

00134 BSF STATUS,RP1

00135 BCF STATUS,RP0

00136 ENDM

00137 ;

00138 BANK3 MACRO

00139 BSF STATUS,RP1

00140 BSF STATUS,RP0

00141 ENDM

00142 ;

00143 ORG 0

0000 283E 00144 GOTO START ;ссылка на основную программу

00145 ;====================================================================

00146 ORG 5

00147 ;==========================================================================

00148 ;====================== ДИНАМИЧЕСКАЯ ИНДИКАЦИЯ ============================

00149 ;==========================================================================

00150 INDIK ;прогр. вывода на индикатор

0AB0 00151 INCF FSR_2,F ;переходим к след выводимому элементу

0830 00152 MOVFW FSR_2

0084 00153 MOVWF FSR

00154

300B 00155 MOVLW B'00001011' ;гасим все аноды

0009 04B1 00156 IORWF P_C_COPY,F5.03 ZY_LIT.ASM 11-12-2006 19:18:31 PAGE 4OBJECT CODE LINE SOURCE TEXT

VALUE

000A 22D5 00157 CALL COPY_C ;выводим всё это

B 1A34 00158 BTFSC SAVE_YES ;если питание пропало, то оставляем всё погасшим

C 2933 00159 GOTO INDIK_OUT ;выходим

D 3020 00160 MOVLW IND_SEG1 ;выбираем на какой индикатор выводить цифру

E 0204 00161 SUBWF FSR,W

F 2026 00162 CALL ALL_AN ;согласно таблицы включаем активный анод

0010 05B1 00163 ANDWF P_C_COPY,F

00164

0800 00165 MOVFW INDF ;читаем какую нужно вывести цифру

202B 00166 CALL IND_TABL ;и в зависимости от цифры выбираем код

00BF 00167 MOVWF TEMP ;и разбиваем индикацию на 2 порта (В и С)

00168

1C31 00169 BTFSS P_C_COPY,0 ;проверяем на каком элементе находимся

2038 00170 CALL DES_POINT ;если на 1, то проверяем надо ли зажечь точку

00171 IND_CAT

301F 00172 MOVLW B'00011111' ;переносим 3 старших бита в порт С

0017 05B1 00173 ANDWF P_C_COPY,F

1ABF 00174 BTFSC TEMP,5

16B1 00175 BSF P_C_COPY,5

A 1B3F 00176 BTFSC TEMP,6

B 1731 00177 BSF P_C_COPY,6

C 1BBF 00178 BTFSC TEMP,7

D 17B1 00179 BSF P_C_COPY,7

00180

E 30E0 00181 MOVLW B'11100000' ;переносим 5 младших бита в порт B

001F 05B2 00182 ANDWF P_B_COPY,F

301F 00183 MOVLW B'00011111'

053F 00184 ANDWF TEMP,W

04B2 00185 IORWF P_B_COPY,F

00186

22D2 00187 CALL COPY_B ;на индикатор

22D5 00188 CALL COPY_C ;на индикатор

2933 00189 GOTO INDIK_OUT ;выходим

00190

00191 ALL_AN ;таблица выбора порядкового номера вывод. цифры

0026 018A 00192 CLRF PCLATH

0782 00193 ADDWF PCL,F

34FE 00194 RETLW B'11111110'

34FD 00195 RETLW B'11111101'

002A 34F7 00196 RETLW B'11110111'

00197

B 00198 IND_TABL ;таблица перевода цифры с семиэлементный код

002B 018A 00199 CLRF PCLATH

C 0782 00200 ADDWF PCL,F

D 3403 00201 retlw B'00000011' ; Цифра 0

E 349F 00202 retlw B'10011111' ; Цифра 1

F 3425 00203 retlw B'00100101' ; Цифра 2

340D 00204 retlw B'00001101' ; Цифра 3

3499 00205 retlw B'10011001' ; Цифра 4

3449 00206 retlw B'01001001' ; Цифра 5

3441 00207 retlw B'01000001' ; Цифра 6

341F 00208 retlw B'00011111' ; Цифра 7

3401 00209 retlw B'00000001' ; Цифра 85.03 ZY_LIT.ASM 11-12-2006 19:18:31 PAGE 5OBJECT CODE LINE SOURCE TEXT

VALUE

3409 00210 retlw B'00001001' ; Цифра 9

34FF 00211 retlw B'11111111' ; Пустое место (код Ah)

00212

00213 DES_POINT ;управление точкой после 1 цифры

103F 00214 BCF TEMP,0 ;вкл. диод

182A 00215 BTFSC NEW_ZAR ;цикл зарядки идёт?

A 0008 00216 RETURN ;да, значит точка не мигает

B 1DAF 00217 BTFSS SEG_MIG ;проверяем бит мигания горит или нет?

003C 143F 00218 BSF TEMP,0 ;потушить

D 0008 00219 RETURN

00220

00221 ;==========================================================

00222 ;==========================================================

E 00223 START ;инициализация всех регистров

00224 BANK1

003E 1683 M BSF STATUS,RP0

F 1303 M BCF STATUS,RP1

0040 3001 00225 MOVLW B'00000001' ;включаем подтягивающие резисторы,

0081 00226 MOVWF OPTION_REG ;делитель таймера0 (1)

0042 300F 00227 MOVLW B'00001111' ;

0085 00228 MOVWF TRISA ;

30E0 00229 MOVLW B'11100000' ;

0086 00230 MOVWF TRISB ;

0187 00231 CLRF TRISC ;

018C 00232 CLRF PIE1 ;запрещаем прерывания от периферии

0048 018D 00233 CLRF PIE2 ;запрещаем прерывания от периферии

3005 00234 MOVLW B'00000101' ;выбор тактового сигнала

A 009F 00235 MOVWF ADCON1

B 018B 00236 CLRF INTCON ;запрещаем все прерывания

C 307D 00237 MOVLW D'125' ;уст. частоту ШИМа 20кГц

004D 0092 00238 MOVWF PR2

00239 BANK3

E 1703 M BSF STATUS,RP1

F 1683 M BSF STATUS,RP0

0050 018C 00240 CLRF EECON1 ;запрет записи в программную память

00241 BANK0

1303 M BCF STATUS,RP1

1283 M BCF STATUS,RP0

0053 3041 00242 MOVLW B'01000001' ;вкл. внешнего ИОНа, выравнивание результата

009F 00243 MOVWF ADCON0 ;выбор 1 канала, вкл. модуля АЦП

0185 00244 CLRF PORTA ;установка в начальное состояние

0186 00245 CLRF PORTB ;портов А, В

0187 00246 CLRF PORTC ;порта С

0058 018C 00247 CLRF PIR1

018D 00248 CLRF PIR2

005A 0190 00249 CLRF T1CON

B 018E 00250 CLRF TMR1L

005C 018F 00251 CLRF TMR1H

D 0195 00252 CLRF CCPR1L

E 0196 00253 CLRF CCPR1H

F 0197 00254 CLRF CCP1CON ;выключение модуля ШИМ

0060 3005 00255 MOVLW B'00000101' ;включение таймера для ШИМа

0061 0092 00256 MOVWF T2CON5.03 ZY_LIT.ASM 11-12-2006 19:18:31 PAGE 6OBJECT CODE LINE SOURCE TEXT

0191 00257 CLRF TMR2

303F 00258 MOVLW D'63'

0064 0095 00259 MOVWF CCPR1L

;очищаем ячейки памяти и порты от мусора

;сначала в нулевом банке

1383 00262 BCF STATUS,IRP ;установить банк 0,1

3020 00263 MOVLW 0X20 ;указать первый регистр в ОЗУ

0084 00264 MOVWF FSR

00265 NEXT

0180 00266 CLRF INDF ;очистить регистр

0A84 00267 INCF FSR,F ;увеличить адрес

A 1F84 00268 BTFSS FSR,7 ;всё очистили?

B 2868 00269 GOTO NEXT ;нет, продолжить очистку

00270

00271 ;==========================================================

00272 ;========= ПРЕДВАРИТЕЛЬНАЯ УСТАНОВКА РЕГИСТРОВ

00273 ;==========================================================

C 3020 00274 MOVLW IND_SEG1 ;устанавливаем адрес 1 вывод. на индик. цифры

D 00B0 00275 MOVWF FSR_2

E 03B0 00276 DECF FSR_2,F ;коррекция, чтобы при увел на 1 иметь адрес 1 сегмента

<