led_counter++; if(led_counter >= 500) P1 ^= 0x01; // toggle LED on P1.0 led_counter = 0;
__sfr __no_init volatile unsigned char TMOD @ 0x89; __sfr __no_init volatile unsigned char TCON @ 0x88; __sfr __no_init volatile unsigned char TH0 @ 0x8C; __sfr __no_init volatile unsigned char TL0 @ 0x8A; __sfr __no_init volatile unsigned char SCON @ 0x98; __sfr __no_init volatile unsigned char SBUF @ 0x99; iar embedded workbench for 8051
#pragma location = "MY_SEGMENT" __xdata int my_var; // Interrupt service routine #pragma vector = 0x23 // UART interrupt vector (address 0x23) __interrupt void uart_isr(void) // no prologue/epilogue overhead if __irq led_counter++; if(led_counter >= 500) P1 ^= 0x01; //
void main(void) // Configure Timer0 TMOD = 0x01; // Mode 1 (16-bit) TH0 = 0xFC; TL0 = 0x66; TR0 = 1; ET0 = 1; EA = 1; = 500) P1 ^= 0x01
// Bit definitions #define TR0 (TCON & 0x10) #define TF0 (TCON & 0x20) #define RI (SCON & 0x01) #define TI (SCON & 0x02)