?? uart.c
字號:
#include <pic.h>
#include "..\inc\include.h"
#define MAX_ADDR 210 //定義最大的需發(fā)送數(shù)據(jù)次數(shù)
#define TXD RC6
extern void Delay10us(uchar t);
void UART_Init(void)
{
//Fosc = 4MHz
SPEN = 1; //Serial Port Enable
SYNC = 0; //0:Asynchronous mode; 1:Synchronous mode
BRGH = 1; //0:Low speed,Baud Rate = FOSC/(64*(SPBRG + 1)); 1:High speed,Baud Rate = FOSC/(16*(SPBRG + 1))
//SPBRG= 12; //4MHz:19200bps
//TX9 = 0; //0:8-bit transmission; 1:9-bit
//SPBRG= 0; //4MHz:250kbps
SPBRG= 1; //8MHz:250kbps
TX9 = 1; //0:8-bit transmission; 1:9-bit
RX9 = 0; //0:8-bit reception; 1:9-bit
CREN = 0; //continuous receive disable
ADDEN= 0; //Address Detect disable
//TRISC6 = 0; // RC6/TxD output
TXEN = 1; //Transmit enable
}
void UART_SendByte(unsigned char TxBuf)
{
//SPBRG= 12; //4MHz:19200bps
//TX9 = 0; //0:8-bit transmission; 1:9-bit
if(TRMT){ //1:TSR(Transmit Shift Register) empty
;
}
if(TXIF){ //1:Transmit Buffer empty
TXREG = TxBuf;
}
while(!TRMT); //wait
//SPBRG= 0; //4MHz:250kbps
//TX9 = 1; //0:8-bit transmission; 1:9-bit
}
void DMX512_SendData(uchar TxBuf)
{
uchar i;
SPEN = 0;
TXD = 0; // Break
Delay10us(10); // Delay 100us instead 88us
TXD = 1; // Mark-after-break
Delay10us(1);
SPEN = 1; //Serial Port Enable,
TX9D = 1; // the tenth bit or the first stop bit
for(i = 0; i<MAX_ADDR; i++){
while(!TXIF); //Transmit Buffer full, wait
//if(TXIF){ //TXIF=1:Transmit Buffer empty
TXREG = TxBuf;
//}
while(!TRMT); //wait
}
SPEN = 0; // 必須關(guān)閉串口配置,用以切換到GPIO模式
TXD = 1; // 置數(shù)據(jù)空閑位
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -