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

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

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

к 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