We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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>
Avoid cross-posting.
And if you do cross-post: Always (!) inform that your question is cross-posted and supply the links to the other posts.
Do not create multiple threads for the same problem.
One thread can contain multiple posts, so go back to the previous thread and post your code there.
http://www.keil.com/forum/docs/thread13515.asp