Устройства для тестирования аккумуляторов
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
к 6 - 46 с.
.Трудовой кодекс Российской Федерации. Изд.12-е - Ростов н/Д: Феникс, 2006. -256с.
.М. Г. Паничев, С. В. Мурадян, Организация и технология отрасли - Ростов н/Д; Феникс, 2001 - 448 с.
MPASM 5.03 ZY_LIT.ASM 11-12-2006 19:18:31 PAGE 1OBJECT CODE LINE SOURCE TEXT
VALUE
;==========================================================================
00002 ;программа зарядного устройства для восстановления литиевых аккумуляторов
00003 ;зарядка и разрядка стабильным током 300мА
00004 ;весь цикл состоит из 3-х этапов:
00005 ;- первичная зарядка
00006 ;- разряд с подiётом ёмкости аккумулятора
00007 ;- окончательный заряд для последующего использования
00008 ;индикация ёмкости на с/д семисегментном индикаторе (3 цифры)
00009 ;==========================================================================
00010
00011 #include
00001 LIST
00002 ; P16F870.INC Standard Header File, Version 1.00 Microchip Technology, Inc.
00290 LIST
00012 errorlevel -302 ; no bank warnings
00013 CBLOCK 0x20 ;размещаем регистры ОЗУ с ячейки 0х20 по порядку
00000020 00014 IND_SEG1 ;1 сегмент на индикаторе
00000021 00015 IND_SEG2 ;2 сегмент на индикаторе
00000022 00016 IND_SEG3 ;3 сегмент на индикаторе
00000023 00017 V_AKK ;ячейка напр канала (на аккумуляторе)
00000024 00018 EMK_R_1K ;единицы ёмкости в А/ч при разряде
00000025 00019 EMK_R_100 ;десятые доли ёмкости в А/ч при разряде
00000026 00020 EMK_R_10 ;сотые доли ёмкости в А/ч при разряде
00000027 00021 EMK_Z_1K ;единицы ёмкости в А/ч при заряде
00000028 00022 EMK_Z_100 ;десятые доли ёмкости в А/ч при заряде
00000029 00023 EMK_Z_10 ;сотые доли ёмкости в А/ч при заряде
0000002A 00024 AKK_Z_R ;состояние ячейки аккумулятора (биты)
0000002B 00025 EMK_R_L ;младший байт ёмкости в мА/ч при разряде
0000002C 00026 EMK_R_H ;старший байт ёмкости в мА/ч при разряде
0000002D 00027 EMK_Z_L ;младший байт ёмкости в мА/ч при последнем заряде
0000002E 00028 EMK_Z_H ;старший байт ёмкости в мА/ч при последнем заряде
0000002F 00029 IND_MIG ;информация о мигании индикатора (биты)
00000030 00030 FSR_2 ;дополнительный переменный регистр для индикатора
00000031 00031 P_C_COPY ;копия порта С
00000032 00032 P_B_COPY ;копия порта B
00000033 00033 P_A_COPY ;копия порта A
00000034 00034 FLAG_ALL ;общие флаги
00000035 00035 BIT_SOS ;биты при воспроизведении сигнала SOS
00000036 00036 TMR_TIM_DEL ;таймер общего времени
00000037 00037 TMR_DIOD ;таймер для мигания
00000038 00038 TMR_DREBEZG ;таймер дребезга
00000039 00039 TMR_CLR_KN ;таймер времени отведённого на срабатывание кнопки
0000003A 00040 TMR_ZAR ;таймер при подiёте ёмкости
0000003B 00041 TMR_PI ;таймер при пикании
0000003C 00042 TMR_AVAR ;таймер, при пропадании контакта с акк. след. изм.
00043 ;будет через 2с после возобновления контакта (для устранения помех)
0000003D 00044 TMR_NEXT ;iётчик АЦП для чёткого переключения м/у режимами
00045 ;ждёт когда АЦП даст сигнал на переключение режима опреденное кол-во раз подряд
0000003E 00046 COUNT_PI ;iётчик кол-ва пропиканных сигналов (при смене режима)
0000003F 00047 TEMP ;временная переменная
00000040 00048 fCOUNTER ;iётчик для маленьких задержек
00000041 00049 BIT_H ;регистры для программы преобразования BC > BCD
00000042 00050 BIT_L5.03 ZY_LIT.ASM 11-12-2006 19:18:31 PAGE 2OBJECT CODE LINE SOURCE TEXT
00051 SEG_1
00000044 00052 SEG_10
00000045 00053 SEG_100
00000046 00054 SEG_1K
00000047 00055 SEG_10K
00056 ENDC ;заканчиваем размещение регистров
00057
00058 #define T_DREBEZG FLAG_ALL,0 ;блокировка кнопок(1 - разрешены кнопки)
00059 #define ON_KN FLAG_ALL,1 ;сработал таймер чёткого нажатия кнопки
00060 #define OFF_KN FLAG_ALL,2 ;сработал таймер чёткого отпускания кнопки
00061 #define DR_PUSK FLAG_ALL,3 ;бит, что была попытка нажатия кнопки ПУСК
00062 #define SAVE_YES FLAG_ALL,4 ;было сохранение ОЗУ
00063 #define Z_R_PI FLAG_ALL,5 ;сигнал об окончании 1 заряда и разряда (4 пика)
00064 #define END_PI FLAG_ALL,6 ;сигнал об окончании всего цикла (5 длин пика)
00065 #define PAUSE_PI FLAG_ALL,7 ;пищит ли в данный момент пищалка? (1=да)
00066
00067 #define SHORT_PI BIT_SOS,0 ;точка при сигн. SOS
00068 #define SHORT_PS BIT_SOS,1 ;пробел м/у точками и тире при сигн. SOS
00069 #define LONG_PS BIT_SOS,2 ;пробел м/у буквами при сигн. SOS
00070 #define LONG_PI BIT_SOS,3 ;тире при сигн. SOS
00071 #define PAUSE_SL BIT_SOS,4 ;пробел м/у словами при сигн. SOS
00072 #define SIMVOL_S1 BIT_SOS,5 ;первый символ пропикали
00073 #define SIMVOL_O BIT_SOS,6 ;второй символ пропикали
00074 #define SIMVOL_S2 BIT_SOS,7 ;третий символ пропикали
00075
00076 #define NEW_ZAR AKK_Z_R,0 ;новый цикл
00077 #define CTRL_PUSK AKK_Z_R,1 ;надо контролировать аварийные ситуации
00078 #define AKK_ERR AKK_Z_R,2 ;напряжение выше 4,5В или ниже 2,5В
00079 ;мигает все цифры
00080 #define ADC_AVAR AKK_Z_R,3 ;было пропадание контакта, остановить измерение
00081 #define ZAR_1_2 AKK_Z_R,4 ;1 зарядка или последняя (0 = 1 зар.)
00082 #define ZAR_RAZ AKK_Z_R,5 ;канал заряжается =0 или разряжается =1
00083 #define ZAR_END AKK_Z_R,6 ;полное окончание цикла (1=конец)
00084
00085 #define SEG1_MIG IND_MIG,0 ;мигает 1 сегмент (1 этап - зарядка)
00086 #define SEG2_MIG IND_MIG,1 ;мигает 2 сегмент (2 этап - разрядка)
00087 #define SEG3_MIG IND_MIG,2 ;мигает 3 сегмент (3 этап - зарядка)
00088 ;аварийная ситуация - напряжение превысило 4,5В или понизилось ниже 2,5В
00089 #define SEG_MIG IND_MIG,3 ;мигание цифры (горит/не горит)
00090
00091 #define ZARAD P_A_COPY,5 ;вывод включения зарядки
00092 #define RAZRAD P_A_COPY,4 ;вывод включения разрядки
00093 #define V_PIT PORTB,5 ;контроль сети
00094 #define KN_PUSK PORTB,7 ;кнопка пуск
00095 #define KN_Z_R PORTB,6 ;кнопка переключения показаний ёмкости
00096 ;------------------------------------------------------------------
00097 ;Временные константы: конст.= (T / 50,17) + 1, где Т нужное время в "мс"
00000028 00098 O_CLR_KN EQU D'40' ;макс. время на нажатие кнопки 1с
00000002 00099 O_ON_KN EQU D'2' ;мин. время в нажатом состоянии кнопки 0,1с
00000004 00100 O_OFF_KN EQU D'4' ;мин. время после которого кнопка iитается отпущен 0,2с
00000031 00101 O_TIM_DEL EQU D'49' ;дополнительный делитель таймера
000000F0 00102 O_EMK EQU D'240' ;увеличение ёмкости на 1мА/ч каждые 12с
00000014 00103 O_AVAR EQU D'20' ;
MPASM 5.03 ZY_LIT.ASM 11-12-2006 19:18:31 PAGE 3OBJECT CODE LINE SOURCE TEXT
VALUE
00104 O_NEXT EQU D'40'
00105
00000007 00106 O_TIM_03S EQU D'7' ;время тире и паузы м/у буквами при сигнале SOS
0000000F 00107 O_TI