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