This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

ADC0808 output is not stable

Dear All,
following is the code is not working..can any please guide me where is the problem..
#include<reg51.h>
sbit ale=P1^0; //address latch enable
sbit oe=P1^3; //output enable
sbit sc=P1^1; //start conversion
sbit eoc=P1^2; //end of conversion
sbit clk=P1^7; // clock

sbit ADD_A=P1^4; // Address pins for selecting input channels.
sbit ADD_B=P1^5;
sbit ADD_C=P1^6;
sfr input_port=0x80;
sfr output_port=0xA0;

void timer0() interrupt 1 // Function to generate clock of frequency 500KHZ using Timer 0 interrupt.
{ clk=~clk;
}

void delay(unsigned int count) // Function to provide time delay in msec.
{ int i,j;
for(i=0;i<count;i++) for(j=0;j<1275;j++);
}

void main()
{ eoc=1;
input_port=0xFF;
ale=0;
oe=0;
sc=0;
TMOD=0x22; //timer0 setting for generating clock of 500KHz using interrupt enable mode.
TH0=0xFD;
IE=0x82;
TR0=1;
while(1)
{ ADD_C=0; // Selecting input channel 2 using address lines ADD_B=0; ADD_A=1; delay(2); ale=1; delay(2); sc=1; delay(1); ale=0; delay(1); sc=0; while(eoc==1); while(eoc==0); oe=1; output_port=input_port; delay(2); oe=0;
} }

Parents
  • You have an interrrupt that is intended to run with 500kHz frequency. Is your processor even fast enough to manage 0.5 million interrupts / second - remember that every interrupt consumes several instructions.

    Why don't you use a timer to create the 1ms delay? Don't you realize that the delay time of a software loop is affected by the percentage of CPU capacity that is consumed by interrupts?

    By the way - where is the source code? You don't have anything tagged as code in your post - didn't you notice the information about how to post source code?

    What is wrong? You haven't exactly spent much time explaining your troubles. Just a subject line "ADC0808 output is not stable". Nothing about exactly what happens and what things you have done to try to figure out what is wrong.

Reply
  • You have an interrrupt that is intended to run with 500kHz frequency. Is your processor even fast enough to manage 0.5 million interrupts / second - remember that every interrupt consumes several instructions.

    Why don't you use a timer to create the 1ms delay? Don't you realize that the delay time of a software loop is affected by the percentage of CPU capacity that is consumed by interrupts?

    By the way - where is the source code? You don't have anything tagged as code in your post - didn't you notice the information about how to post source code?

    What is wrong? You haven't exactly spent much time explaining your troubles. Just a subject line "ADC0808 output is not stable". Nothing about exactly what happens and what things you have done to try to figure out what is wrong.

Children