sixty9sandals
New Member
10bits adc problem
hi..
im very new..n i need someone guides to help me solving this problem. i try 2 display digital values in a row of 10leds by injecting 1.5V as an analog value with 5V as Vref..but the values displayed is 0100010010 instead of 100110011...why is this happen? any suggestion to solve it?my codes are as below..is there possibly caused by my wrong codes?
define ADIN_RES 10
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
MEASURED_VALUE VAR word
REMAINDER0 VAR word
MEASURED0 VAR word
REMAINDER1 VAR word
MEASURED1 VAR word
REMAINDER2 VAR word
MEASURED2 VAR word
REMAINDER3 VAR word
MEASURED3 VAR word
REMAINDER4 VAR word
MEASURED4 VAR word
REMAINDER5 VAR word
MEASURED5 VAR word
REMAINDER6 VAR word
MEASURED6 VAR word
REMAINDER7 VAR word
MEASURED7 VAR word
REMAINDER8 VAR word
MEASURED8 VAR word
REMAINDER9 VAR word
MEASURED9 VAR word
TRISA = %00000001
TRISB = %00000000
TRISD.0 = %0
TRISD.1 = %0
ADCON0 = %11000101
ADCON1 = %10000000
pause 500
START:
ADCIN 0 , MEASURED_VALUE
REMAINDER0 = MEASURED_VALUE // 2
PORTB.0 = ~REMAINDER0
MEASURED0 = ( MEASURED_VALUE / 2 )
REMAINDER1 = MEASURED0 // 2
PORTB.1 = ~REMAINDER1
MEASURED1 = ( MEASURED0 / 2 )
REMAINDER2 = MEASURED1 // 2
PORTB.2 = ~REMAINDER2
MEASURED2 = ( MEASURED1 / 2 )
REMAINDER3 = MEASURED2 // 2
PORTB.3 = ~REMAINDER3
MEASURED3 = ( MEASURED2 / 2 )
REMAINDER4 = MEASURED3 // 2
PORTB.4 = ~REMAINDER4
MEASURED4 = ( MEASURED3 / 2 )
REMAINDER5 = MEASURED4 // 2
PORTB.5 = ~REMAINDER5
MEASURED5 = ( MEASURED4 / 2 )
REMAINDER6 = MEASURED5 // 2
PORTB.6 = ~REMAINDER6
MEASURED6 = ( MEASURED5 / 2 )
REMAINDER7 = MEASURED6 // 2
PORTB.7 = ~REMAINDER7
MEASURED7 = ( MEASURED6 / 2 )
REMAINDER8 = MEASURED7 // 2
PORTD.0 = ~REMAINDER8
MEASURED8 = ( MEASURED7 / 2 )
REMAINDER9 = MEASURED8 // 2
PORTD.1 = ~REMAINDER9
pause 100
GOTO START
END
hope somebody willing to lend me help
thank you..
hi..
im very new..n i need someone guides to help me solving this problem. i try 2 display digital values in a row of 10leds by injecting 1.5V as an analog value with 5V as Vref..but the values displayed is 0100010010 instead of 100110011...why is this happen? any suggestion to solve it?my codes are as below..is there possibly caused by my wrong codes?
define ADIN_RES 10
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
MEASURED_VALUE VAR word
REMAINDER0 VAR word
MEASURED0 VAR word
REMAINDER1 VAR word
MEASURED1 VAR word
REMAINDER2 VAR word
MEASURED2 VAR word
REMAINDER3 VAR word
MEASURED3 VAR word
REMAINDER4 VAR word
MEASURED4 VAR word
REMAINDER5 VAR word
MEASURED5 VAR word
REMAINDER6 VAR word
MEASURED6 VAR word
REMAINDER7 VAR word
MEASURED7 VAR word
REMAINDER8 VAR word
MEASURED8 VAR word
REMAINDER9 VAR word
MEASURED9 VAR word
TRISA = %00000001
TRISB = %00000000
TRISD.0 = %0
TRISD.1 = %0
ADCON0 = %11000101
ADCON1 = %10000000
pause 500
START:
ADCIN 0 , MEASURED_VALUE
REMAINDER0 = MEASURED_VALUE // 2
PORTB.0 = ~REMAINDER0
MEASURED0 = ( MEASURED_VALUE / 2 )
REMAINDER1 = MEASURED0 // 2
PORTB.1 = ~REMAINDER1
MEASURED1 = ( MEASURED0 / 2 )
REMAINDER2 = MEASURED1 // 2
PORTB.2 = ~REMAINDER2
MEASURED2 = ( MEASURED1 / 2 )
REMAINDER3 = MEASURED2 // 2
PORTB.3 = ~REMAINDER3
MEASURED3 = ( MEASURED2 / 2 )
REMAINDER4 = MEASURED3 // 2
PORTB.4 = ~REMAINDER4
MEASURED4 = ( MEASURED3 / 2 )
REMAINDER5 = MEASURED4 // 2
PORTB.5 = ~REMAINDER5
MEASURED5 = ( MEASURED4 / 2 )
REMAINDER6 = MEASURED5 // 2
PORTB.6 = ~REMAINDER6
MEASURED6 = ( MEASURED5 / 2 )
REMAINDER7 = MEASURED6 // 2
PORTB.7 = ~REMAINDER7
MEASURED7 = ( MEASURED6 / 2 )
REMAINDER8 = MEASURED7 // 2
PORTD.0 = ~REMAINDER8
MEASURED8 = ( MEASURED7 / 2 )
REMAINDER9 = MEASURED8 // 2
PORTD.1 = ~REMAINDER9
pause 100
GOTO START
END
hope somebody willing to lend me help
thank you..
Attachments
Last edited: