我附上了我的代碼(我正在閃爍LED以便能夠看到環路正在發生)。我沒有收到通過UART發送的任何數據,我有Pic 16F913,並且引腳17是我試圖獲得的輸出,我把它連接到一個RF-42N藍牙模塊,我知道該模塊工作,因爲如果我連接rx到TX,我得到一個回聲。然後我嘗試了以下設置,將字母「z」發送到藍牙模塊(並希望使用blueterm在手機上閱讀)。 我沒有收到任何數據,我不知道默認的FOSC設置爲什麼,所以我嘗試了SPBRG的各種值,希望我能夠「猜出」正確的一個,但沒有一個看起來像上班。圖16F913 UART通信設置
我正在使用高科技C編譯器(免費版)。
我希望這是足夠的信息給大家,我只是不知道什麼,我缺少的,我「一直在幾個小時的戰鬥這一點。
//主文件
#include <uart.h>
__CONFIG(INTIO & WDTDIS & PWRTEN & MCLRDIS & UNPROTECT & UNPROTECT & BORDIS & IESODIS & FCMDIS);
int i, j;
void wait(int z);
int main()
{
PORTA = 0x0;
CMCON0 = 7;
// Turn off Comparators
ANSEL = 0;
// Turn off ADC
// Trisa4/5 0's mean output, 1's mean input
TRISA4 = 0;
// Make RA4/RA5 Outputs
TRISA5 = 0;
setupAsyncUart();
while (1==1)
{
RA4 = 0;
send('Z');
wait(100);
RA4 = 1;
wait(100);
}
}
// Wait routine.
void wait(int z)
{
for (int a=0; a<z; a++)
{
for (int b=0; b<z; b++)
{
}
}
}
// UART .H
void send(char string)
{
TXREG = string;
}
void setupAsyncUart(int BAUDRATE)
{
SPBRG = 10;
BRGH = 1; //Low speed = 0 high speed = 1
SYNC = 0;
SPEN = 1;
TXEN = 1;
}
我不知道如何去這樣做,我想FOSC2(在配置線),但沒有工作,我想FOSC <2:0> = 100在配置行,你能澄清「如何」做它?比如Config行應該是什麼樣子? (也許我可以自己想出這一個也不錯) – onaclov2000
好吧,我已經添加了在哪裏可以找到聲明...... :) –
原來我需要使用外部振盪器,我得到了一個來自朋友的16Mhz水晶,我只需要弄清楚我打算如何實際連接它,一旦完成,我可以驗證你的建議,並且實際上將它標記爲正確,如果它解決了我的問題.... :)對不起很長的延遲 – onaclov2000