summaryrefslogtreecommitdiffstats
path: root/src/rs232.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/rs232.c')
-rw-r--r--src/rs232.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/rs232.c b/src/rs232.c
new file mode 100644
index 0000000..f4cf404
--- /dev/null
+++ b/src/rs232.c
@@ -0,0 +1,40 @@
+#include "rs232.h"
+#include <xc.h>
+
+void eusart_init(void) {
+
+ // set Async and 8 bits frame
+ TXSTAbits.SYNC = 0;
+ TXSTAbits.TX9 = 0;
+
+ // 9600 baud prescaler
+ RCSTAbits.SPEN = 1;
+ SPBRG = 129;
+ TXSTAbits.BRGH = 1;
+ BAUDCONbits.BRG16 = 0;
+
+ // set up TX / RX pins
+ TRISC7 = 1;
+ TRISC6 = 1;
+ RCSTAbits.CREN = 1; // enable continuous reception
+ TXSTAbits.TXEN = 1;
+}
+
+void putch(char c) {
+
+ while (!TXIF);
+ TXREG = c;
+}
+
+char getch(void) {
+
+ while (!RCIF);
+ return RCREG;
+}
+
+char getche(void) {
+ char c = getch();
+ putch(c); // echo
+
+ return c;
+}