#include "p24fxxxx.h" #include "lcd.h" _CONFIG1(JTAGEN_OFF) void __attribute__((__interrupt__)) _U2RXInterrupt(void); unsigned char ad_asc_in[3]; char ADin[] = "ADin: 0x/0"; unsigned char empfangspuffer, sendepuffer, stx_wurde_empfangen; int i, sende_zaehler, empfangs_zaehler; void init (void) { // Disable Watch Dog Timer RCONbits.SWDTEN=0; LCDInit(); LCDclear(); PORTFbits.RF5 = 0; //Tx TRISF = 0x31DF; //TxD auf Ausgang einstellen PORTA = 0; //Tx TRISA = 0x1100; /************** serielle Schnittstelle initialisieren *************/ U2BRG = 25; // BAUD Rate Setting for 9600 / 4 Mhz U2MODEbits.STSEL = 0; // 1-stop bit U2MODEbits.PDSEL = 0; // No Parity, 8-data bits U2MODEbits.ABAUD = 0; // Autobaud Disabled //******************************************************************************** // STEP 1: // Configure UART for DMA transfers //********************************************************************************/ U2STAbits.UTXISEL1 = 0; // Interrupt after one Tx character is transmitted U2STAbits.UTXISEL0 = 0; U2STAbits.URXISEL = 0; // Interrupt after one RX character is received //******************************************************************************** // STEP 2: // Enable UART Rx and Tx //********************************************************************************/ U2STAbits.UTXEN = 1; // Enable UART Tx U2MODEbits.UARTEN = 1; // Enable UART //**************Interrupt Serielle Schnittstelle initialisieren*************/ IEC1bits.U2RXIE = 1; IPC7bits.U2RXIP = 1; IFS1bits.U2RXIF = 0; } void __attribute__((interrupt, no_auto_psv)) _U2RXInterrupt(void) { int a; if (IFS1bits.U2RXIF==1) // Wait and Receive One Character { a = U2RXREG; PORTA = a; IFS1bits.U2RXIF = 0; } } int main (void) { init (); empfangs_zaehler = 3; sende_zaehler = 3; stx_wurde_empfangen = 1; U2STAbits.UTXEN = 1; // Enable UART Tx while (1) { LCDgotoxy(LCD_LINE1,0); LCDwriteLine(ADin); } return 0; }