00001
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #ifndef __pic_serial_h
00043 #define __pic_serial_h
00044
00045 #include "pic_utils.h"
00046 #include "config.h"
00047
00048
00049
00051 #define serial_handle_tx_isr() \
00052 if (pir1.TXIF) { serial_tx_isr(); }
00053
00054 #define serial_handle_rx_isr() \
00055 if (pir1.RCIF) { serial_rx_isr(); clear_bit( pir1, RCIF ); }
00056
00057
00067 void serial_tx_isr();
00068
00076 void serial_rx_isr();
00077
00091 void serial_setup(bit req_brgh, uns8 req_spbrg);
00092
00109 void serial_putc(uns8 c);
00110
00124 uns8 serial_getc(void);
00125
00133 void serial_print_str(char *str);
00134
00143 void serial_print_str(rom char *str);
00144
00152 void serial_print_int(uns16 i);
00153
00161 void serial_print_int_hex(uns8 i);
00162
00171 void serial_print_int_hex_16bit(uns16 i);
00172
00179 void serial_print_nl();
00180
00188 void serial_print_spc();
00189
00197 void serial_tx_full();
00198
00206 uns8 serial_tx_empty();
00207
00217 uns8 serial_rx_avail();
00218
00219 #if PLATFORM_CLOCK == 40000000
00220 #define SPBRG_9600 255
00221 #define SPBRG_19200 129
00222 #define SPBRG_57600 42
00223 #define SPBRG_115200 21
00224 #endif
00225
00226 #if PLATFORM_CLOCK == 20000000
00227 #define SPBRG_9600 129
00228 #define SPBRG_19200 64
00229 #define SPBRG_57600 21
00230 #define SPBRG_115200 10
00231 #endif
00232
00233 #if PLATFORM_CLOCK == 12000000
00234 #define SPBRG_9600 77
00235 #define SPBRG_19200 38
00236 #define SPBRG_57600 12
00237 #define SPBRG_115200 6
00238 #endif
00239
00240 #if PLATFORM_CLOCK == 8000000
00241 #define SPBRG_9600 51
00242 #define SPBRG_19200 25
00243 #define SPBRG_57600 8
00244 #define SPBRG_115200 3
00245 #endif
00246
00247 #if PLATFORM_CLOCK == 4000000
00248 #define SPBRG_9600 129
00249 #define SPBRG_19200 64
00250 #define SPBRG_57600 21
00251 #define SPBRG_115200 10
00252 #endif
00253
00254 #ifndef SPBRG_9600
00255 #warning "Don't know the SPBRG value for your clock speed."
00256 #warning "Did you set your PLATFORM_CLOCK etc in your config.h?"
00257 #endif
00258
00259 #define BRGH_HIGH_SPEED 1
00260 #define BRGH_LOW_SPEED 0
00261
00262 #ifndef SERIAL_TX_BUFFER_SIZE
00263 #error "pic_serial: SERIAL_TX_BUFFER_SIZE not defined in config.h"
00264 #endif
00265 #ifndef SERIAL_RX_BUFFER_SIZE
00266 #error "pic_serial: SERIAL_RX_BUFFER_SIZE not defined in config.h"
00267 #endif
00268
00269 #endif