Hi all, I am learning microprocessor programming. I need some sample code for interrupt routine for C167CS. It should be as simple as e.g. every second print time on display. Thanks for help regards /M
But I didn't need such a initialization of ASCO when I run the code on real target. Well. ASC0 is NOT initialized to work when the C16x resets, so something initialized it. Are you using MON166 or another target monitor to download and run your code? If so, the monitor already initialized the serial port. Jon
There is an example called hello in the \keil\c166\examples\hello folder. This example appears as follows:
#include <stdio.h> /* standard I/O .h-file */ #include <reg167.h> /* special function register 80C167 */ /****************/ /* main program */ /****************/ void main (void) { /* execution starts here */ /* initialize the serial interface */ #ifndef MCB167 /* do not initialize if you use Monitor-166 */ P3 |= 0x0400; /* SET PORT 3.10 OUTPUT LATCH (TXD) */ DP3 |= 0x0400; /* SET PORT 3.10 DIRECTION CONTROL (TXD OUTPUT) */ DP3 &= 0xF7FF; /* RESET PORT 3.11 DIRECTION CONTROL (RXD INPUT) */ S0TIC = 0x80; /* SET TRANSMIT INTERRUPT FLAG */ S0RIC = 0x00; /* DELETE RECEIVE INTERRUPT FLAG */ S0BG = 0x40; /* SET BAUDRATE TO 9600 BAUD */ S0CON = 0x8011; /* SET SERIAL MODE */ #endif printf ("Hello World\n"); /* the 'printf' function call */ while (1) { /* An embedded program does not stop and */ ; /* ... */ /* never returns. We've used an endless */ } /* loop. You may wish to put in your own */ } /* code were we've printed the dots (...). */