Устройства для тестирования аккумуляторов
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
-----------------------
C 00767 T_SHORT_PS
C 0ABB 00768 INCF TMR_PI,F ;увел время паузы
021D 3002 00769 MOVLW O_TIM_01S ;проверяем может хватит?
E 023B 00770 SUBWF TMR_PI,W
MPASM 5.03 ZY_LIT.ASM 11-12-2006 19:18:31 PAGE 16OBJECT CODE LINE SOURCE TEXT
VALUE
F 1D03 00771 SKPZ
0008 00772 RETURN
01BB 00773 CLRF TMR_PI ;очищаем рабочие ячейки для след. раза
300C 00774 MOVLW B'00001100'
0097 00775 MOVWF CCP1CON
10B5 00776 BCF SHORT_PS
15B5 00777 BSF LONG_PI
1AB5 00778 BTFSC SIMVOL_S1
2A2B 00779 GOTO $+4
1435 00780 BSF SHORT_PI
11B5 00781 BCF LONG_PI
A 0008 00782 RETURN
B 1F35 00783 BTFSS SIMVOL_O
C 0008 00784 RETURN
D 2A28 00785 GOTO $-5
00786 ;--------------------------------
E 00787 T_LONG_PI
E 0ABB 00788 INCF TMR_PI,F ;увел время
022F 3007 00789 MOVLW O_TIM_03S ;проверяем может хватит?
0230 023B 00790 SUBWF TMR_PI,W
1D03 00791 SKPZ
0232 0008 00792 RETURN
01BB 00793 CLRF TMR_PI ;очищаем рабочие ячейки для след. раза
0234 0197 00794 CLRF CCP1CON
11B5 00795 BCF LONG_PI
14B5 00796 BSF SHORT_PS
0ABE 00797 INCF COUNT_PI,F ;iитаем сколько было пиков
3003 00798 MOVLW O_PI_SOS ;
023E 00799 SUBWF COUNT_PI,W
A 1D03 00800 SKPZ
B 0008 00801 RETURN
023C 10B5 00802 BCF SHORT_PS
D 01BE 00803 CLRF COUNT_PI ;сбрасываем задействованные регистры
023E 1535 00804 BSF LONG_PS
F 1735 00805 BSF SIMVOL_O
0008 00806 RETURN
00807 ;-------------------------------
00808 T_LONG_PS
0ABB 00809 INCF TMR_PI,F ;увел время паузы
0242 3007 00810 MOVLW O_TIM_03S ;проверяем может хватит?
0243 023B 00811 SUBWF TMR_PI,W
1D03 00812 SKPZ
0245 0008 00813 RETURN
01BB 00814 CLRF TMR_PI ;очищаем рабочие ячейки для след. раза
0247 300C 00815 MOVLW B'00001100'
0097 00816 MOVWF CCP1CON
1135 00817 BCF LONG_PS
A 1435 00818 BSF SHORT_PI
B 1B35 00819 BTFSC SIMVOL_O
C 0008 00820 RETURN
D 1035 00821 BCF SHORT_PI
E 15B5 00822 BSF LONG_PI
F 0008 00823 RETURN5.03 ZY_LIT.ASM 11-12-2006 19:18:31 PAGE 17OBJECT CODE LINE SOURCE TEXT
VALUE
;-------------------------------
00825 T_PAUSE_SL
0ABB 00826 INCF TMR_PI,F ;увел время паузы
0251 300F 00827 MOVLW O_TIM_07S ;проверяем может хватит?
0252 023B 00828 SUBWF TMR_PI,W
1D03 00829 SKPZ
0254 0008 00830 RETURN
01BB 00831 CLRF TMR_PI ;очищаем рабочие ячейки для след. раза
300C 00832 MOVLW B'00001100'
0097 00833 MOVWF CCP1CON
1235 00834 BCF PAUSE_SL
0259 1435 00835 BSF SHORT_PI
A 0008 00836 RETURN
00837
00838 ;==========================================================
00839 ;======== ПОДГОТОВКА К ВЫВОДУ ВЫБРАННОЙ ИНФЫ НА ИНДИКАТОР =========
00840 ;==========================================================
B 00841 IND_EMK
B 082B 00842 MOVFW EMK_R_L ;преобразование ёмкости разряда из
C 00C2 00843 MOVWF BIT_L ;двоичной формы в десятичную для вывода на
D 082C 00844 MOVFW EMK_R_H ;индикатор
025E 00C1 00845 MOVWF BIT_H
F 229E 00846 CALL BC2_BCD
3024 00847 MOVLW EMK_R_1K
0084 00848 MOVWF FSR
0262 2290 00849 CALL VX_BCD
00850 ;-----------------------
082D 00851 MOVFW EMK_Z_L ;преобразование ёмкости заряда из
00C2 00852 MOVWF BIT_L ;двоичной формы в десятичную для вывода на
082E 00853 MOVFW EMK_Z_H ;индикатор
0266 00C1 00854 MOVWF BIT_H
229E 00855 CALL BC2_BCD
3027 00856 MOVLW EMK_Z_1K
0084 00857 MOVWF FSR
A 2290 00858 CALL VX_BCD
00859 ;==========================================================
026B 1F06 00860 BTFSS KN_Z_R ;нажата ли кнопка заряда?
C 2A71 00861 GOTO $+5 ;если да, то показываем ёмкость заряда
D 3024 00862 MOVLW EMK_R_1K ;запоминаем первую выводимую цифру
E 0084 00863 MOVWF FSR
F 2287 00864 CALL V_SEG ;запуск прогу распредел. цифр по сегментам
2A75 00865 GOTO KOD_MIG
3027 00866 MOVLW EMK_Z_1K ;запоминаем первую выводимую цифру
0084 00867 MOVWF FSR
2287 00868 CALL V_SEG ;запуск прогу распредел. цифр по сегментам
2A75 00869 GOTO KOD_MIG
00870
00871 KOD_MIG ;проверка какие сегменты мигают
300A 00872 MOVLW 0XA ;код тушения цифры во время мигания
19AF 00873 BTFSC SEG_MIG ;должны ли щас гореть мигающие сегменты?
0008 00874 RETURN ;да, всё должно гореть
182F 00875 BTFSC SEG1_MIG ;нет, проверяем какой сегмент не должен гореть?
00A0 00876 MOVWF IND_SEG1 ;и гасим его.
MPASM 5.03 ZY_LIT.ASM 11-12-2006 19:18:31 PAGE 18OBJECT CODE LINE SOURCE TEXT
VALUE
A 18AF 00877 BTFSC SEG2_MIG
B 00A1 00878 MOVWF IND_SEG2
C 192F 00879 BTFSC SEG3_MIG
D 00A2 00880 MOVWF IND_SEG3
E 1CAA 00881 BTFSS CTRL_PUSK
F 0008 00882 RETURN
0280 192A 00883 BTFSC AKK_ERR ;проверяем сработала 1 аварийная ситуация?
0281 2A83 00884 GOTO GASHEN_IND
0008 00885 RETURN ;просто выходим
0283 00886 GASHEN_IND ;гашение всех цифр
00A0 00887 MOVWF IND_SEG1 ;и гасим его.
00A1 00888 MOVWF IND_SEG2 ;и гасим его.
00A2 00889 MOVWF IND_SEG3 ;и гасим его.
0008 00890 RETURN
00891 ;--------------------------------------------------------------------------
00892 V_SEG ;перенос выбранной ёмкости в сегменты индикатора
0287 0800 00893 MOVFW INDF
00A0 00894 MOVWF IND_SEG1
0A84 00895 INCF FSR,F
A 0800 00896 MOVFW INDF
B 00A1 00897 MOVWF IND_SEG2
C 0A84 00898 INCF FSR,F
D 0800 00899 MOVFW INDF
E 00A2 00900 MOVWF IND_SEG3
028F 0008 00901 RETURN
00902 ;-------------------------
00903 VX_BCD ;перенос результата преобразования
0846 00904 MOVFW SEG_1K ;из временных ячеек в выбранные
0291 0080 00905 MOVWF INDF
0A84 00906 INCF FSR,F
0845 00907 MOVFW SEG_100
0080 00908 MOVWF INDF
0A84 00909 INCF FSR,F
0844 00910 MOVFW SEG_10
0080 00911 MOVWF INDF
0008 00912 RETURN
00913 ;==========================================================
00914 ;============ СЛУЖЕБНЫЕ ПОДПРОГРАММЫ =========================
00915 ;==========================================================
00916 DELAY_10 ;задержка на 10мкс
0299 3006 00917 MOVLW D'6'
A 00C0 00918 MOVWF fCOUNTER
B 00919 D_LOOP10
B 0BC0 00920 decfsz fCOUNTER,F
C 2A9B 00921 goto D_LOOP10
D 0008 00922 RETURN
00923 ;========================================================================
00924 ;Программа преобразования bc в bcd. 16-разрядные данные
029E 00925 BC2_BCD ; Takes number in BIT_H:BIT_L
00926 ; Returns decimal in
00927 ; SEG_1K0:SEG_1K:SEG_100:SEG_10:SEG_1
00928
E 0E41 00929 swapf BIT_H,w
MPASM 5.03 ZY_LIT.ASM 11-12-2006 19:18:31 PAGE 19OBJECT CODE LINE SOURCE TEXT
F 38F0 00930 IORLW b'11110000'
A0 00C6 00931 movwf SEG_1K
A1 07C6 00932 addwf SEG_1K,f
A2 3EE2 00933 addlw 0xE2
A3 00C5 00934 movwf SEG_100
A4 3E32 00935 addlw 0x32
A5 00C3 00936 movwf SEG_1
00937
A6 0841 00938 movf BIT_H,w
A7 390F 00939 andlw 0x0F
A8 07C5 00940 addwf SEG_100,f
A9 07C5 00941 addwf SEG_100,f
AA 07C3 00942 addwf SEG_1,f
AB 3EE9 00943 addlw 0xE9
AC 00C4 00944 movwf SEG_10
AD 07C4 00945 addwf SEG_10,f
AE 07C4 00946 addwf SEG_10,f
00947
AF 0E42 00948 swapf BIT_L,w
02B0 390F 00949 andlw 0x0F
B1 07C4 00950 addwf SEG_10,f
B2 07C3 00951 addwf SEG_1,f
00952
B3 0DC4 00953 rlf SEG_10,f
B4 0DC3 00954 rlf SEG_1,f
B5 09C3 00955 comf SEG_1,f
B6 0DC3 00956 rlf SEG_1,f
00957
B7 0842 00958 movf BIT_L,w
B8 390F 00959 andlw 0x0F
B9 07C3 00960 addwf SEG_1,f
BA 0DC6 00961 rlf SEG_1K,f
00962
BB 3007 00963 movlw 0x07
BC 00C7 00964 movwf SEG_10K
00965
BD 300A 00966 movlw 0x0A ; Ten
BE 00967 Lb1:
BE 07C3 00968 addwf SEG_1,f
BF 03C4 00969 decf SEG_10,f
C0 1C03 00970 btfss 3,0
C1 2ABE 00971 goto Lb1
C2 00972 Lb2:
C2 07C4 00973 addwf SEG_10,f
C3 03C5 00974 decf SEG_100,f
C4 1C03 00975 bt