Friends I built this site russian ESR PIC16F873 x 3 display 7 sec.
Works but has problems of mixing the digits.
Example
By measuring 1 ohm.
it shows 009 ---- 010 ---- repeatedly fast.
The display shows 01.9
For values in the middle of the range is better.
Does anyone have an idea where I could modify the source code for better viewing.
Scale from 0 to 25.5 (points race open).

Stock resistor 1.0 ohm with digit jump in .9 and 1.0.

Stock high ESR capacitor measuring right

schematic:
http://radio-konst.narod.ru/moi_konstrukcii/izm_ESR/izm_ESR.htmlhttp://radio-konst.narod.ru/moi_konstrukcii/izm_ESR/ris1.gif
Source Code
****************************************************************************************
; Ч стот КВАРЦА=20,0
#include<p16f873.inc>
list p=16f873
__CONFIG _CP_ALL & _DEBUG_OFF & _WRT_ENABLE_ON & _CPD_OFF & _LVP_OFF & _BODEN_ON & _PWRTE_ON & _WDT_ON & _HS_OSC ;Конфигур ция контроллер _CP_ALL-З щит з писи всех б нков ; _CP_HALF ;_CP_UPPER_256
errorlevel -302 ;не выводить ошибки переключения б нков
;============================================================================================
;КОНСТАНТЫ
K_ZAD equ D'60' ;Конст нт з держки перед преобр зов нием =37мкс
;РЕГИСТРЫ
cblock H'21'
RF ; регистр Фл г RF=1--0р зряд- индик ция 1 р зряд ,1р зряд- индик ци 2 р зрд.,2р зряд- индик ция 3 р зряд
; UI ;временный регистр для индик ции
UI1 ; Регистр- десятичное зн чение мл дшего 1 р зр н индик цию
UI2 ; Регистр- десятичное зн чение 2 р зр н индик цию
UI3 ; Регистр- десятичное зн чение ст ршего 3 р зр н индик цию
r_zad ; Регистр з держки АЦП
cnt1 ; Регистр временного хр нения з держки
cnt2 ; Регистр временного хр нения з держки
cnt3 ; Регистр временного хр нения з держки
endc
;==============================================================================================
org 0 ;Вектор сброс
goto START
;-----------------------------------------------------------------------
org 4 ;Вектор прерыв ния
retfie
;-----------------------------------------------------------------------
org H'10'
segment clrf PCLATH ; Т блиц преобр зов ния DEC -> семисегментный код.
addwf PCL, F
dt 03F, 06, 05B, 04F, 066, 06D, 07D, 07, 07F, 06F
;-----------------------------------------------------------------------
START ;Иници лиз ция регистров процессор
bcf STATUS,RP0 ;Перекл. н б нк0
bcf STATUS,RP1
clrf PORTA ;Обнуляем порт A
clrf PORTB ;Обнуляем порт B
clrf PORTC ;Обнуляем порт C
clrf CCP1CON ;Выключить модуль CCP
clrf TMR2 ;Очистить TMR2
bsf STATUS,RP0 ;Перекл. н б нк1
movlw D'49' ; Уст новк Период ШИМ
movwf PR2
bcf STATUS,RP0 ;Перекл. н б нк0
movlw D'24' ;Ст ршие биты скв жности
movwf CCPR1L ;
clrf INTCON ;Выключить прерыв ния
bsf STATUS,RP0 ;Перекл. н б нк1
movlw B'00001011' ;Порты RА0,RА1,RA3 н ввод,RA2,RA4,RA5-вывод
movwf TRISA
movlw B'00000000' ;Порты RB0-RB7, н вывод
movwf TRISB
movlw B'00000001' ;Порты RC1-RC7, н вывод RC0 н ввод
movwf TRISC
clrf PIE1
clrf PIE2
movlw B'10000000' ;Н груз.рез.порт B выкл,т кт генер.н вход WDT,предд.перед TMR0,коэф.дел=1:1
movwf OPTION_REG
movlw B'00000101' ;Левое выр внив ние,RA0/AN0,RA1/AN1,RA3/Vref, RA2,RA4,RA5-Цифровые
movwf ADCON1
bcf STATUS,RP0 ;Перекл. н б нк0
clrf PIR1 ;Сбросить все фл ги периферийных прерыв ний
movlw B'00001100' ;мл дшие биты скв жности=00, Уст новлен режим ШИМ
movwf CCP1CON
movlw B'00000100' ;Коэф предделителя TMR2 1:1; TMR2-включен
movwf T2CON
movlw B'00000000' ;Коэф предделителя TMR1- 1:1,от внутр Fosc/4,TMR1- выключить
movwf T1CON
movlw b'00000001' ;З груж ем призн к индик ции 1р зряд в W
movwf RF ;W з груж ем в RF- Регистр фл гов
;==============================================================================================
CIKL clrwdt
call ZAD_ADC ;З держк
movlw B'10000001' ;Уст н влив Fosc-32, включ. к н л по RA0/AN0, преобр зов ние для UN1
movwf ADCON0
call ZAD_ADC ;З держк
bsf ADCON0,2 ;З пуск ем АЦП-р зреш ем прерыв ние,
R1 clrwdt
btfsc ADCON0,2 ;Ожид ем оконч ние преобр зов ния от АЦП. Д -переск кив ем через ш г
goto R1
movf ADRESH,w ;Преобр зов нное н пряжение с AN0 з пишем в W
call napr_sopr ;Перекодируем т бличным способом н пряжение в сопротивление
clrf PCLATH ;Обнуление ст ршего регистр дрес
call B_D ;ПРЕОБРАЗОВАНИЕ ДВОИЧНОГО В ДВОИЧНО-ДЕСЯТИЧНОЕ
;Вывод н индик цию и уст новк порядк индик ции
btfss RF,0 ;проверяем был 1 в 0 р зряде регистр RF
goto EX_UI1 ;НЕТ-индик цию UI1 не выводим
bcf PORTC,5 ;ДА-г сим UI3
movf UI1,w ;з груж ем регистр UI1 ->W
call segment ;Преобр зов ние DEC--> в семисегментный код
andlw b'01111111' ;уст новк м ски для порт B
movwf PORTB ;Выводим д нные в порт B н индик цию
bsf PORTC,7 ;З жиг ем UI1
bcf RF,0 ;Сбр сыв ем призн к индик ции 1 р зряд
bsf RF,1 ;уст н влив ем призн к индик ции 2 р зряд
goto EX
EX_UI1 btfss RF,1 ;проверяем был 1 в 1 р зряде регистр RF
goto EX_UI2 ;НЕТ-индик цию UI2 не выводим
bcf PORTC,7 ;ДА-г сим UI1
movf UI2,w ;з груж ем регистр UI2 ->W
call segment ;Преобр зов ние DEC--> в семисегментный код
andlw b'01111111' ;уст новк м ски для порт B
movwf PORTB ;Выводим д нные в порт B н индик цию
bsf PORTB ,7 ;Уст н влив ем з пятую
bsf PORTC,6 ;З жиг ем UI2
bcf RF,1 ;Сбр сыв ем призн к индик ции 2 р зряд
bsf RF,2 ;уст н влив ем призн к индик ции 3 р зряд
goto EX
EX_UI2 btfss RF,2 ;проверяем был 1 во 2 р зряде регистр RF
goto EX ;НЕТ-индик цию UI3 не выводим
bcf PORTC,6 ;ДА-г сим UI2
movf UI3,w ;з груж ем регистр UI3 ->W
call segment ;Преобр зов ние DEC--> в семисегментный код
andlw b'01111111' ;уст новк м ски для порт B
movwf PORTB ;Выводим д нные в порт B н индик цию
bcf PORTB ,7 ;Убир ем з пятую
bsf PORTC,5 ;З жиг ем UI3
bcf RF,2 ;Сбр сыв ем призн к индик ции 3 р зряд
bsf RF,0 ;уст н влив ем призн к индик ции 1 р зряд
call zad_cikl
EX goto CIKL
;==============================================================================================
ZAD_ADC movlw K_ZAD ;З держк 37 мкс
movwf r_zad
ZAD decfsz r_zad,f
goto ZAD
return
;==============================================================================================
B_D ;подпрогр мм ПРЕОБРАЗОВАНИЕ ДВОИЧНОГО В ДВОИЧНО-ДЕСЯТИЧНОЕ
movwf UI1 ;bin из w поместить в UI1
;прогр мм преобр зов ния
B_D_UI clrf UI2 ;обнулить UI2
clrf UI3 ;обнулить UI3
gtenth movlw .10 ;dec=10 поместить в w
subwf UI1,W ;р зность содерж регист UI1 и w з носится в w(если w=1)или в UI1(если w=0)
btfss STATUS,C ;если C в регистре STATUS=1 то перепрыгнуть STATUS=0 то безусл переход
goto gtenth1 ;
movwf UI1 ;w з нести в UI1
incf UI2,F ;содерж регистр UI2+1 з носится в UI2
goto gtenth ;
gtenth1 movlw .10 ;dec=10 поместить в w
subwf UI2,W ;р зность содерж регист UI2 и w з носится в w(если w=1)или в UI2(если w=0)
btfss STATUS,C ;если C в регистре STATUS=1 то перепрыгнуть STATUS=0 то безусл переход
goto over ;
movwf UI2 ;w з нести в UI2
incf UI3,F ;содерж регистр UI3+1 з носится в UI3
goto gtenth1
over return
;==============================================================================================
zad_cikl
return
;==============================================================================================
org H'1FE' ; Т блиц преобр зов ния н пряжение в сопротивление
napr_sopr
bsf PCLATH,1
addwf PCL,F
dt 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF
dt 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF
dt 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF
dt 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF
dt 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF
dt 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF
dt 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF
dt 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF
dt 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF
dt 0FF, 0FF, 0FD, 0FA, 0F5, 0F0, 0EB, 0E6, 0E1, 0DC, 0D7, 0D2, 0CD, 0C8, 0C5, 0C2
dt 0BE, 0BB, 0B8, 0B4, 0B1, 0AF, 0AD, 0AA, 0A7, 0A5, 0A3, 0A0, 9D, 9B, 99, 96, 93
dt 91, 8F, 8C, 89, 87, 85, 82, 7F, 7D, 7B, 78, 75, 73, 71, 6E, 6C
dt 6A, 68, 66, 64, 61, 5F, 5D, 5A, 58, 56, 54, 52, 50, 4E, 4C, 4A
dt 48, 46, 45, 43, 41, 40, 3E, 3C, 3B, 39, 37, 35, 34, 32, 30, 2E
dt 2C, 2A, 28, 26, 25, 23, 22, 20, 1F, 1E, 1D, 1C, 1A, 19, 17, 15
dt 14, 13, 12, 10, 0F, 0E, 0D, 0B, 0A, 09, 08, 07, 06, 05, 03, 00
;==============================================================================================
end
************************************************************************************************
sds
silvanoservitec