Iar Embedded Workbench For 8051 [extra Quality] -
void uart_init(u32 baud) = 0x20; // Timer1, mode 2 (8-bit auto-reload) TH1 = BAUDRATE_9600; TL1 = BAUDRATE_9600; TR1 = 1; // start timer1 ES = 1; // enable UART interrupt
// Bit definitions #define TR0 (TCON & 0x10) #define TF0 (TCON & 0x20) #define RI (SCON & 0x01) #define TI (SCON & 0x02) iar embedded workbench for 8051
typedef unsigned char u8; typedef unsigned int u16; void uart_init(u32 baud) = 0x20; // Timer1, mode
int main(void) init_system(); uart_puts("System Ready\r\n"); void uart_init(u32 baud) = 0x20
void init_system(void) // Configure Timer0 as 16-bit timer TMOD = 0x01; // Timer0, mode 1 TH0 = 0xFC; // 1ms reload value TL0 = 0x66; TR0 = 1; // start timer ET0 = 1; // enable Timer0 interrupt EA = 1; // global interrupt enable
#pragma vector=1 __interrupt void timer0_isr(void) TF0 = 0; tick_count++; if(tick_count >= 10000) LED_PIN = ~LED_PIN; tick_count = 0;
// Memory regions for AT89S52 // CODE: 0x0000 - 0x1FFF (8KB) // DATA: 0x0000 - 0x007F (direct) // IDATA: 0x0080 - 0x00FF (indirect) // XDATA: 0x0000 - 0x07FF (2KB external) -D_CODE_START=0x0000 -D_CODE_END=0x1FFF