extern void pause(void); //externe funktion pause wird verwendet extern void lcdinit(void); //externe funktion lcd initialisieren wird verwendet #include "iom16c62p.h" //#include #include #include "iodriver.h" #define time 0x0FFF #define wait2ms 0x4268 #define rdwr P3_2//P3_bit.P3_2 //Seuersignal (LCD-)Umschalten Read/write auf P3.5 (T1) #define regs P3_1//P3_bit.P3_1 // Steuersignal (LCD-)Registerauswahl auf P3.4 (T0) #define en P3_3//P3_bit.P3_3 // Steuersignal (LCD-)Enable auf P3.3 (INT1) #define maske 0xc7 // Maske zum Löschen von rdwr, regs, en //******************************************************************* //serielle schnittstelle lesen extern void pause(void); extern void entscheidung(void); #include "serial.h" char rxchar; int result; int u; char rxbuffer[10]; char x; char size; //UART0 initialisieren void se_initialize_port( void ) { flag_TI = 1; /* initialize serial port registers */ U0BRG = 0x67; /* baudrate 9600 */ //67 //U0MR = 0x5; /* no parity, 8 data-bits, 1 stop-bit, internal clock */ U0MR = 0x25; U0C0 = 0x10; /* no cts/rts, prescaler = F1 */ U0C1 = 0x95; /* enable receiver and transmitter 0x5*/ U0SMR = 0x00; //oli U0IRS = 1; /* TX complete */ U0RRM = 1; //UART0 continous mode oli U0SMR3 = 0xA0; //special mode register - delay S0TIC = 0x6; /* Set UART0 transmit interrupt priority */ S0RIC = 0x6; /* Set UART0 transmit interrupt priority */ PD6_3 = 1; PD6_2 = 0; } _interrupt(17) void se_int_transmit( void ) { if ( flag_send_xoff ) { /* we have to send XOFF */ flag_send_xoff = 0; U0TBL = XOFF; flag_xoff_sent = 1; /* remember that we sent XOFF */ } else { flag_TI = 1; } } /***************************************************************************** |* |* FUNCTION: se_int_receive |* |* DESCRIPTION: |* |* receive interrupt: store character in circular input buffer |* */ _interrupt(18) void se_int_receive( void ) { x = U0RBL; switch ( x ) { case INTR: flag_ctrlC = 1; /* set flag for handler */ break; case XOFF: flag_stopped = 1; break; case XON: flag_stopped = 0; break; case startbit: //startbit u = 0; //zähler auf 0 setzten result = 0; //alle rxbuffer auf 0 setzten rxbuffer[0] = 0; rxbuffer[1] = 0; rxbuffer[2] = 0; rxbuffer[3] = 0; break; case stoppbit: //Auswertroutine starten result = rxbuffer[0]+ rxbuffer[1]+ rxbuffer[2]+ rxbuffer[3]; default: rxbuffer[u] = x; //buffer füllen u++; //U0RBL nach rxbuffer schreiben //zähler um 1 erhöhen für nächste stelle in rxbuffer //U0RBL nach rxbuffer schreiben } }