xman_di
Joined: 24 Mar 2011 Posts: 2 Location: Newport, RI
|
Loop problem |
Posted: Thu Mar 24, 2011 8:33 am |
|
|
I have a PIC18F6585 in use for many things. With the following code, the read works fine. If I try to make it a for loop (in comments), it doesn't work. What is up?
Code: | #INT_TIMER1
void adc_interrupt (void) //setup interrupt
{
int16 i;
i = 15;
adc_value = 0;
output_low(ADC_convert); //ADC track and hold on falling edge
while(input(ADC_busy)){} //wait for conversion complete
output_high(ADC_convert);
/*
for(i=15;i>=0;i--){
output_high(ADC_clock);
output_low(ADC_clock);
if(input(ADC_data))
bit_set(adc_value,i);
}
*/
output_high(ADC_clock);
output_low(ADC_clock);
if(input(ADC_data))
bit_set(adc_value,15);
else
bit_clear(adc_value,15);
output_high(ADC_clock);
output_low(ADC_clock);
if(input(ADC_data))
bit_set(adc_value,14);
else
bit_clear(adc_value,14);
output_high(ADC_clock);
output_low(ADC_clock);
if(input(ADC_data))
bit_set(adc_value,13);
else
bit_clear(adc_value,13);
output_high(ADC_clock);
output_low(ADC_clock);
if(input(ADC_data))
bit_set(adc_value,12);
else
bit_clear(adc_value,12);
output_high(ADC_clock);
output_low(ADC_clock);
if(input(ADC_data))
bit_set(adc_value,11);
else
bit_clear(adc_value,11);
output_high(ADC_clock);
output_low(ADC_clock);
if(input(ADC_data))
bit_set(adc_value,10);
else
bit_clear(adc_value,10);
output_high(ADC_clock);
output_low(ADC_clock);
if(input(ADC_data))
bit_set(adc_value,9);
else
bit_clear(adc_value,9);
output_high(ADC_clock);
output_low(ADC_clock);
if(input(ADC_data))
bit_set(adc_value,8);
else
bit_clear(adc_value,8);
output_high(ADC_clock);
output_low(ADC_clock);
if(input(ADC_data))
bit_set(adc_value,7);
else
bit_clear(adc_value,7);
output_high(ADC_clock);
output_low(ADC_clock);
if(input(ADC_data))
bit_set(adc_value,6);
else
bit_clear(adc_value,6);
output_high(ADC_clock);
output_low(ADC_clock);
if(input(ADC_data))
bit_set(adc_value,5);
else
bit_clear(adc_value,5);
output_high(ADC_clock);
output_low(ADC_clock);
if(input(ADC_data))
bit_set(adc_value,4);
else
bit_clear(adc_value,4);
output_high(ADC_clock);
output_low(ADC_clock);
if(input(ADC_data))
bit_set(adc_value,3);
else
bit_clear(adc_value,3);
output_high(ADC_clock);
output_low(ADC_clock);
if(input(ADC_data))
bit_set(adc_value,2);
else
bit_clear(adc_value,2);
output_high(ADC_clock);
output_low(ADC_clock);
if(input(ADC_data))
bit_set(adc_value,1);
else
bit_clear(adc_value,1);
output_high(ADC_clock);
output_low(ADC_clock);
if(input(ADC_data))
bit_set(adc_value,0);
else
bit_clear(adc_value,0);
} |
|
|