Android Pic16F688通过buletooth没有稳定的读数

Android Pic16F688通过buletooth没有稳定的读数,android,bluetooth,pic,android-bluetooth,Android,Bluetooth,Pic,Android Bluetooth,我花了很多时间试图找出哪里是我的错误,而我闪烁的PIC16F688。Pic已使用PicKit2成功闪烁。我使用Pic将模拟压力传感器转换为数字输出,并通过蓝牙发送数据,但蓝牙无法接收稳定数量的数据。数据由0到1023之间的4个字符的十进制数组成。 问题是蓝牙不能在特定的数字上等待并持续读取,而是随机读取4位数字 我认为我的错误在于内部振荡器的配置。 我附上了我的代码,该代码是用来配置FlexForce传感器电路的,该电路输出的模拟电压高达5v,然后pic任务是将其转换为数字,正如我前面提到的那样

我花了很多时间试图找出哪里是我的错误,而我闪烁的PIC16F688。Pic已使用PicKit2成功闪烁。我使用Pic将模拟压力传感器转换为数字输出,并通过蓝牙发送数据,但蓝牙无法接收稳定数量的数据。数据由0到1023之间的4个字符的十进制数组成。 问题是蓝牙不能在特定的数字上等待并持续读取,而是随机读取4位数字

我认为我的错误在于内部振荡器的配置。 我附上了我的代码,该代码是用来配置FlexForce传感器电路的,该电路输出的模拟电压高达5v,然后pic任务是将其转换为数字,正如我前面提到的那样

可能是我的接线不正确,请你帮我解决一下 我需要为Mikro PRO软件选择什么“编辑项目”配置? 我使用“蓝牙终端”应用程序从蓝牙异步查看我的数据。 多谢各位


char*temp=“0000”;
无符号整数adc_值;
查乌拉尔路;int i;
void main()
{
OSCCON=0x77;
ANSEL=0B000000100;
CMCON0=0X07;
TRISA=0b00001100;
UART1_Init(9600);
延迟μms(100);
而(1)
{
adc_值=adc_读取(2);
温度[0]=adc_值/1000+48;
温度[1]=(adc_值/100)%10+48;
温度[2]=(adc_值/10)%10+48;
温度[3]=adc_值%10+48;

对于(i=0;i您可以使用
itoa
函数将ADC整数值转换为字符,以便通过
UART
发送。如果计算中存在错误,则无法获得适当的值。以下代码段供您参考:

while (1)
{
    adc_value = ADC_Read(2);
    itoa(adc_value, temp, 10);  
    for (i=0;i<4; i++)
        UART1_Write(temp[i]);
    UART1_Write(13);
    Delay_ms(1000);
}
while(1)
{
adc_值=adc_读取(2);
itoa(adc_值,温度,10);

对于(i=0;i我的建议,如果你有一个逻辑分析仪,连接它。如果你不使用数据表重新计算你的振荡器速度。可能只是内部振荡器不够精确。同样有效的是,在汇编中编写一个等待已知时间的函数(通过复制粘贴大量的
NOP
s,并使用它闪烁led。然后启动秒表并计数,比如说,100次闪烁。这是我在拥有逻辑分析仪之前经常做的事情。(在易趣上它们非常便宜).

这是一个很好的观点,但听起来不像是解决问题的办法problem@Davidvanrijn:编辑答案!!非常感谢,我发现我给蓝牙和pic提供了一个单独的3.3v电源。但是当我将它们与我的Flexiforce传感器(带有opm的模拟电路)、电池(5V)连接时,我得到了稳定的读数。我不知道为什么,但它有效,
while (1)
{
    adc_value = ADC_Read(2);
    itoa(adc_value, temp, 10);  
    for (i=0;i<4; i++)
        UART1_Write(temp[i]);
    UART1_Write(13);
    Delay_ms(1000);
}