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