diff options
author | brett <brett@bretts-windows-laptop> | 2024-04-23 20:51:02 -0500 |
---|---|---|
committer | brett <brett@bretts-windows-laptop> | 2024-04-23 20:51:02 -0500 |
commit | 2bd45f076ea7eb429bfee54fe1de240ff4b284e6 (patch) | |
tree | f37034113ad3aec380062d0998e1cf94b65424f5 /final_project/serial.c |
should be finished, backing up
Diffstat (limited to 'final_project/serial.c')
-rw-r--r-- | final_project/serial.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/final_project/serial.c b/final_project/serial.c new file mode 100644 index 0000000..bb5b58f --- /dev/null +++ b/final_project/serial.c @@ -0,0 +1,39 @@ +/*
+ * CFile1.c
+ *
+ * Created: 4/3/2024 10:21:26 AM
+ * Author: bsw9xd
+ */
+#include "serial.h" + +void usart_init() { + volatile int ubrr = (F_CPU / (16UL * BAUD)) - 1; //TODO: why is this volatile int??? + UCSR1A = 0; //async normal communication + UCSR1B = (1 << TXEN) | (1 << RXEN); + UCSR1C = (1 << UCSZ0) | (1 << UCSZ1); + + + UBRR1H = (unsigned char)(ubrr << 8); + UBRR1L = (unsigned char)ubrr; +} +void usart_txt(char data) { //transmit data + UDR1 = data; //buffer the data + while(~UCSR1A & (1 << TXC)); //wait until the transmission is complete + UCSR1A |= (1 << TXC); + +} +char usart_rxt() { + if(UCSR1A & (1 << RXC)) { + return UDR1; + } + return '\0'; +} + +char usart_rxt_blocking() { //TODO maybe replace usart_txt + while(!(UCSR1A & (1 << RXC))); //TODO simplify + return UDR1; +} + +void usart_txstr(char *str) { + for(int i = 0; str[i] != '\0'; i++) usart_txt(str[i]); +} |