#include #define BAUDRATE 115200 #define SYSCLK 22118400 //PROTOTYPES //----------------------------------------------------------------------------- _sfrbit LED _atbit( P1,6 ); void PORT_Init (void); void oscillator_Init (void); void Init_Device (void); void Timer_Init (void); void Interrups_Init (void); void UART_Init (void); _regparm int _iowrite( int c, FILE *stream ) { /* when using the serial port as output */ while( !TI0 ); /* wait for TI */ TI0 = 0; /* reset TI */ SBUF0 = c; /* write character */ return( c ); /* return written character on success */ } unsigned int Z; unsigned int A; unsigned int TimerVal; void main (void){ WDTCN = 0xde; // Watchdogtimer ausschalten WDTCN = 0xad; Init_Device(); EA=1; While (1) { if (TF2){ A++; } TR2=0; printf("\n\rTimer2: %u",A); }; } void PORT_Init (void){ XBR0 = 0x0C; XBR1 = 0x14; // ist die Belegung für /InT0 und /Int1 XBR2 = 0x40; P0MDOUT = 0x05; P1MDOUT = 0x40; } void UART_Init(){ PCON = 0x80; SCON0 = 0x50; TI0 = 1; } void oscillator_Init (void){ int i = 0; OSCXCN = 0x67; for (i = 0; i < 3000; i++); // Wait 1ms for initialization while ((OSCXCN & 0x80) == 0); OSCICN = 0x88; } void Interrupts_Init(){ IE = 0x85; } void Timer_Init (void){ CKCON = 0x10; TCON = 0x05; TMOD = 0xA9; TH1 = -(SYSCLK/BAUDRATE/16); TR1 = 1; TR2 = 1; } void Init_Device (void) { oscillator_Init(); PORT_Init(); Timer_Init(); UART_Init(); Interrupts_Init(); }