#ifndef _UART0_H_ #define _UART0_H_ #define UART0_TX_BUFFER_SIZE 0x80 #define UART0_RX_BUFFER_SIZE 0x80 #include "c8051f930.h" #include "fifo.h" void uart0_bauding(unsigned long baudrate); void uart0_init(); FIFO_SIZE_T uart0_write(char *buf, FIFO_SIZE_T size); FIFO_SIZE_T uart0_read(char *buf, FIFO_SIZE_T size); FIFO_SIZE_T uart0_tx_size(); FIFO_SIZE_T uart0_rx_size(); void putchar(char c); char getchar(); #ifdef MAIN_C extern xdata fifo_char_t fifo_tx0; extern xdata fifo_char_t fifo_rx0; /* Interrupt(TI0 / RI0) */ void interrupt_uart0 () interrupt INTERRUPT_UART0 { unsigned char c; if(RI0){ RI0 = 0; /* リングバッファに1バイト書き出し */ c = SBUF0; //if(fifo_char_write(&fifo_rx0, (char *)&c, 1) > 0){ fifo_char_put(&fifo_rx0, (char *)&c); } if(TI0){ TI0 = 0; /* 書き込むデータがあるか確認 */ if(fifo_char_get(&fifo_tx0, (char *)&c) > 0){ TB80 = 1; // TB80は書込み中フラグとして使う、1(書込み中)に SBUF0 = c; }else{ TB80 = 0; // TB80は書込み中フラグとして使う、0(書込みしていない)に } } } #endif #endif