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

why this code going infinity loop

why his code going infinity.......
/////////////////////////////////////
// Generated Initialization File //
/////////////////////////////////////

#include "C8051F120.h"
#include<stdio.h>

sfr16 ADC0 = 0xbe; // ADC0 data

#define BAUDRATE 9600 // Baud rate of UART in bps
#define SYSCLK 24500000 // Output of PLL derived from (INTCLK*2)
#define SAMPLE_RATE 25000 // Sample frequency in Hz
#define INT_DEC 256 // Integrate and decimate ratio
#define SAR_CLK 2500000 // Desired SAR clock speed

#define SAMPLE_DELAY 50 // Delay in ms before taking sample

means ON
void Oscillator_Init(void);
void PORT_Init (void);
void UART1_Init (void);
void ADC0_Init (void);
void ADC0_ISR (void);
long Result;
bit ADC_Conversion = 1; // Bit to set in ADC ISR
void main(void)
{ long temp; char s; WDTCN = 0xde; // Disable watchdog timer WDTCN = 0xad; Oscillator_Init(); PORT_Init (); UART1_Init (); ADC0_Init (); s=SFRPAGE; SFRPAGE=ADC0_PAGE; EA=1;
AD0EN = 1;
AD0BUSY = 1; while (ADC_Conversion != 0);

temp=Result;
s=SFRPAGE;
SFRPAGE = UART1_PAGE;
printf (" \n sanjeev= %ld", temp);
printf("\n result = %ld",Result);
SFRPAGE=s;

}

// Peripheral specific initialization functions,
void UART1_Init (void)
{ char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page

SFRPAGE = UART1_PAGE; SCON1 = 0x10; // SCON1: mode 0, 8-bit UART, enable RX

SFRPAGE = TIMER01_PAGE; TMOD &= ~0xF0; TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit reload

TH1 = 0x96; TL1 = TH1; // Initialize Timer1 TR1 = 1; // Start Timer1

SFRPAGE = UART1_PAGE; TI1 = 1; // Indicate TX1 ready

SFRPAGE = SFRPAGE_SAVE; // Restore SFR page

}
void ADC0_Init (void)
{ char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page

SFRPAGE = ADC0_PAGE;

ADC0CN = 0x80; // ADC0 disabled; normal tracking // mode; ADC0 conversions are initiated // on overflow of Timer3; ADC0 data is // right-justified

REF0CN = 0x07; // Enable temp sensor, on-chip VREF, // and VREF output buffer

AMX0CF = 0x00; // AIN inputs are single-ended (default)

AMX0SL = 0x08; // Select AIN0.1 pin as ADC mux input

ADC0CF = (SYSCLK/SAR_CLK) << 3; // ADC conversion clock = 2.5MHz ADC0CF |= 0x00; // PGA gain = 1 (default)

EIE2 |= 0x02; // enable ADC interrupts

SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
}

void PORT_Init (void)

{ char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page

SFRPAGE = CONFIG_PAGE; // set SFR page

XBR0 = 0x00; XBR1 = 0x00; XBR2 = 0x44; // Enable crossbar and weak pull-up // Enable UART1
P0MDOUT |= 0x01; // Set TX1 pin to push-pull P1MDOUT |= 0x40; // Set P1.6(LED) to push-pull

SFRPAGE = SFRPAGE_SAVE; // Restore SFR page

}

void Oscillator_Init()
{ char SFRPAGE_SAVE = SFRPAGE; SFRPAGE = CONFIG_PAGE; OSCICN = 0x83; SFRPAGE = SFRPAGE_SAVE;
} //------------------------------------------------------
// **********************ADC0 ISR***********************
//------------------------------------------------------
void ADC0_ISR (void) interrupt 15
{

char s; s=SFRPAGE; SFRPAGE=ADC0_PAGE; // ADC samples AD0INT = 0; Result = ADC0L + (ADC0H << 8);
ADC_Conversion=0;
EIE2 &= ~0x02;
SFRPAGE=s;
s=SFRPAGE;
SFRPAGE=UART1_PAGE;
printf(" temp= %ld",Result);
SFRPAGE=s;
}

//-----------------------------------------------------------------------------
// End Of File
//-----------------------------------------------------------------------------

0