Re: i am doing ADC
i know that to measure is t use oscillograph but the problem is that i don't know how to write code.. reading datasheet is very big different compare to write a programming code and i don't know how to write. i facing problem is that i don't know how to generate PWM i have a code with mi.. take a look and give mi some guide. thank
#include <C8051F200.h> // SFR declarations
//-----------------------------------------------------------------------------
// Global Constants
//-----------------------------------------------------------------------------
#define SYSCLK 16000000/8 // SYSCLK in Hz (16 MHz internal
// oscillator / 8)
// the internal oscillator has a
// tolerance of +/- 20%
#define TIMER_PRESCALER 12 // Based on Timer CKCON settings
// There are SYSCLK/TIMER_PRESCALER timer ticks per second, so
// SYSCLK/TIMER_PRESCALER/1000 timer ticks per millisecond.
#define TIMER_TICKS_PER_MS SYSCLK/TIMER_PRESCALER/1000
// Note: TIMER_TICKS_PER_MS should not exceed 255 (0xFF) for the 8-bit timer
#define AUX1 TIMER_TICKS_PER_MS
#define AUX2 -AUX1
#define LED_TOGGLE_RATE 100 // LED toggle rate in milliseconds
// if LED_TOGGLE_RATE = 1, the LED will
// be on for 1 millisecond and off for
// 1 millisecond
#define TIMER0_RELOAD_HIGH AUX2 // Reload value for Timer0 high byte
sbit LED = P2^4; // LED='1' means ON
sbit pwm = P1^3;
//-----------------------------------------------------------------------------
// Function Prototypes
//-----------------------------------------------------------------------------
void Port_Init (void); // Port initialization routine
void Timer0_Init (void); // Timer0 initialization routine
//-----------------------------------------------------------------------------
// main() Routine
//-----------------------------------------------------------------------------
unsigned int value;
void main (void)
{
WDTCN = 0xDE; // Disable watchdog timer
WDTCN = 0xAD;
Timer0_Init (); // Initialize the Timer0
Port_Init (); // Init Ports
EA = 1; // Enable global interrupts
while (1); // Loop forever
}
void Port_Init (void)
{
PRT2CF = 0x10; // Set LED to push-pull
}
void Timer0_Init(void)
{
TH0 = TIMER0_RELOAD_HIGH; // Reinit Timer0 High register
TL0 = TH0; // Set the intial Timer0 value
ET0 = 1; // Timer0 interrupt enabled
TMOD = 0x02; // 16-bit Mode Timer0
TCON = 0x10; // Timer0 ON
}
--
void Timer0_ISR (void) interrupt 1
{
static int counter = 0;
if((counter++) == LED_TOGGLE_RATE)
{
LED = ~LED; // Toggle the LED
pwm = ~pwm;
counter = 0;
}
}
//-----------------------------------------------------------------------------
// End Of File
//-----------------------------------------------------------------------------