hello,
code second part
thanks
//----------------------------------------------------------------------------- // Subroutines //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // SYSCLK_Init //----------------------------------------------------------------------------- // // This routine initializes the system clock to use an 22.1184 MHz crystal // as its clock source. // void SYSCLK_Init (void) { int i; // delay counter OSCXCN = 0x67; // start external oscillator with // 22.1184 MHz crystal for (i=0; i < 256; i++) ; // Wait for osc. to start up while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle OSCICN = 0x88; // select external oscillator as SYSCLK // source and enable missing clock // detector } //----------------------------------------------------------------------------- // PORT_Init //----------------------------------------------------------------------------- // // Configure the Crossbar and GPIO ports // void PORT_Init (void) { XBR0 |= 0x06; // Enable SPI0 and UART0 XBR1 = 0x00; XBR2 = 0x40; // Enable crossbar and weak pull-ups P0MDOUT |= 0x15; // enable P0.0 (TX), P0.2 (SCK), and // P0.4 (MOSI) as push-pull outputs P1MDOUT |= 0x40; // enable P1.6 (LED) as push-pull outputs //P74OUT |= 0x01; //pins 4.0 and 4.1 as push-pull outputs }
//----------------------------------------------------------------------------- // UART0_Init //----------------------------------------------------------------------------- // // Configure the UART0 using Timer1, for <baudrate> and 8-N-1. // void UART0_Init (void) { SCON0 = 0x50; // SCON0: mode 1, 8-bit UART, enable RX TMOD = 0x20; // TMOD: timer 1, mode 2, 8-bit reload TH1 = -(SYSCLK/BAUDRATE/16); // set Timer1 reload value for baudrate TR1 = 1; // start Timer1 CKCON |= 0x10; // Timer1 uses SYSCLK as time base PCON |= 0x80; // SMOD00 = 1 (disable baud rate // divide-by-two) TI0 = 1; // Indicate TX0 ready } //----------------------------------------------------------------------------- // Timer0_ms //----------------------------------------------------------------------------- // // Configure Timer0 to delay <ms> milliseconds before returning. // void Timer0_ms (unsigned ms) { unsigned i; // millisecond counter TCON &= ~0x30; // STOP Timer0 and clear overflow flag TMOD &= ~0x0f; // configure Timer0 to 16-bit mode TMOD |= 0x01; CKCON |= 0x08; // Timer0 counts SYSCLKs for (i = 0; i < ms; i++) { // count milliseconds TR0 = 0; // STOP Timer0 TH0 = (-SYSCLK/1000) >> 8; // set Timer0 to overflow in 1ms TL0 = -SYSCLK/1000; TR0 = 1; // START Timer0 while (TF0 == 0); // wait for overflow TF0 = 0; // clear overflow indicator } } <\pre>
View all questions in Keil forum