Iar Embedded Workbench For 8051 High Quality Site
void uart_init(u32 baud) SCON = 0x50; // mode 1, 8-bit UART, receive enable TMOD
void uart_putchar(char c) while(!TI); // wait for transmit buffer empty TI = 0; SBUF = c; iar embedded workbench for 8051
-D_DATA_START=0x0000 -D_DATA_END=0x007F
__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; void uart_init(u32 baud) SCON = 0x50; // mode
| Model | Default pointers | Data memory use | Best for | |-------|----------------|----------------|----------| | | data | Directly addressable IDATA (0–0x7F) | Tiny projects, speed critical | | Medium | idata | Indirect IDATA (0–0xFF) | Medium apps with stack > 256B | | Compact | pdata | External XDATA paged (256B window) | Large data, but slower | | Large | xdata | Full 64KB XDATA | Most modern 8051 apps | | Huge | xdata + banked | >64KB XDATA | Rare, external memory expanders | Example memory type specifiers: __data u8 fast_counter; // direct RAM (fast, 0x00–0x7F) __idata u8 indirect_buffer[128]; // indirect RAM (0x80–0xFF) __xdata u16 large_table[1024]; // external RAM (slow, up to 64KB) __code const char* msg = "Hello"; // ROM __sfr P1 = 0x90; // special function register 4. Compiler Extensions for 8051 IAR adds keywords to handle 8051 specifics: void uart_init(u32 baud) SCON = 0x50
// Bit definitions #define TR0 (TCON & 0x10) #define TF0 (TCON & 0x20) #define RI (SCON & 0x01) #define TI (SCON & 0x02)