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
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 //-----------------------------------------------------------------------------