#define USE_AND_OR /* To enable AND_OR mask setting */ #include "include/gpio.h" #include "include/board.h" #include <PIC24F_periph_features.h> // from XC16 comfiler : LEEBS 2014_1209 #include <PIC24F_plib.h> // from XC16 comfiler : LEEBS 2014_1209 void Initial_UART_1(void) { #if defined(PIC24FJ256GB206) //********************** Assign UART 1 signals onto pins using PPS ************* mPORTFOutputConfig(RF_5); mPORTFInputConfig(RF_4); ANSF = 0x0000; iPPSInput(IN_FN_PPS_U1RX, IN_PIN_PPS_RP10); //Assing U1RX to pin RP10 iPPSOutput(OUT_PIN_PPS_RP17, OUT_FN_PPS_U1TX); //Assing U1TX to pin RP17 // Output for TX : SCL2/RP17/PMA8/CN18/RF5 // Input for RX : SDA2/RP10/PMA9/CN17/RF4 CloseUART1(); //dsiable UART if enabled previously //********************** UART 1 Configuration ********************************** // 9600 baudrate / Low baud rate / 8 bit transmission/reception // No parity bit / 1 stop bit /*Enable UART intrrupts*/ //ConfigIntUART1(UART_RX_INT_EN |UART_RX_INT_PR6 | UART_TX_INT_EN |UART_TX_INT_PR6); ConfigIntUART1(UART_RX_INT_EN |UART_RX_INT_PR1 | UART_TX_INT_EN |UART_TX_INT_PR2); OpenUART1(UART_EN, UART_TX_ENABLE, 25); //configure UART and enable it IFS0bits.U1TXIF = 1; // UART1 TX interrupt Enable. #endif } void UART1PutChar(uint8_t data) { while(BusyUART1()) // 1 is busy ; // wait for TX finish U1TXREG = data;// WriteUART1(character); while(!(U1STA && 0x0100)) // TRMT: Transmit Shift Register Empty bit (read-only) ; EnableIntU1TX; } uint8_t UART_rx; void __attribute__ ((interrupt, no_auto_psv)) _U1RXInterrupt(void) { UART_rx = U1RXREG; IFS0bits.U1RXIF = 0; EnableIntU1RX; } void __attribute__ ((interrupt, no_auto_psv)) _U1TXInterrupt(void) { IFS0bits.U1TXIF = 0; } void UART1PrintString( uint8_t *str ) { uint8_t c; while( (c = *str++) ) UART1PutChar(c); } void main(void) { Initial_UART_1(); while(1) { // Tx send same string for test only. UART1PrintString("Hello\r\n"); MY_delay_1ms(100); } } // 8MHz clock ( 4 MIPS ) case... void MY_delay_1ms(uint16_t delay) { uint32_t temp, i; temp = delay*312; for(i=0; i<temp; i++) ; }