?? sci.c
字號:
#include <pic.h>#include "sci.h"/* Routines for initialisation and use of the SCI * for the PIC processor. *//* other options: * frame errors */unsigned charsci_Init(unsigned long int baud, unsigned char ninebits){ int X; unsigned long tmp; /* calculate and set baud rate register */ /* for asynchronous mode */ tmp = 16UL * baud; X = (int)(FOSC/tmp) - 1; if((X>255) || (X<0)) { tmp = 64UL * baud; X = (int)(FOSC/tmp) - 1; if((X>255) || (X<0)) { return 1; /* panic - baud rate unobtainable */ } else BRGH = 0; /* low baud rate */ } else BRGH = 1; /* high baud rate */ SPBRG = X; /* set the baud rate */ SYNC = 0; /* asynchronous */ SPEN = 1; /* enable serial port pins */ CREN = 1; /* enable reception */ SREN = 0; /* no effect */ TXIE = 0; /* disable tx interrupts */ RCIE = 0; /* disable rx interrupts */ TX9 = ninebits?1:0; /* 8- or 9-bit transmission */ RX9 = ninebits?1:0; /* 8- or 9-bit reception */ TXEN = 1; /* enable the transmitter */ return 0;}voidsci_PutByte(unsigned char byte){ while(!TXIF) /* set when register is empty */ continue; TXREG = byte; return;}unsigned charsci_GetByte(void){ while(!RCIF) /* set when register is not empty */ continue; return RCREG; /* RXD9 and FERR are gone now */}unsigned charsci_CheckOERR(void){ if(OERR) /* re-enable after overrun error */ { CREN = 0; CREN = 1; return 1; } return 0;}#define sci_PutNinth(bitnine) (TX9D = bitnine?1:0;)unsigned charsci_GetNinth(void){ while(!RCIF) continue; return RX9D; /* RCIF is not cleared until RCREG is read */}unsigned charsci_GetFERR(void){ while(!RCIF) continue; return FERR; /* RCIF is not cleared until RCREG is read */}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -