我在下面附上了我的代码(我正在闪烁一个 LED 以便能够看到循环正在发生 BTW)。
我没有通过 UART 发送任何数据,我有 Pic 16F913,引脚 17 是我想要获得的输出,我将它连接到 RF-42N 蓝牙模块,我知道该模块可以工作,因为如果我将 rx 连接到 tx,我会得到一个回声。然后我尝试了以下设置将字母“z”发送到蓝牙模块(并希望在我的手机上阅读,使用 blueterm)。我没有得到任何数据,我不知道默认的 FOSC 设置为什么,所以我尝试了 SPBRG 的各种值,希望我能够“猜出”正确的值,但似乎都没有工作。
我正在使用 Hi-Tech 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;
}