Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PIC打印垃圾字符而不是预期字符_C_Bluetooth_Printf_Pic - Fatal编程技术网

PIC打印垃圾字符而不是预期字符

PIC打印垃圾字符而不是预期字符,c,bluetooth,printf,pic,C,Bluetooth,Printf,Pic,我想用我的PIC18F4550、蓝牙模块HC-06和电脑做一个简单的测试。 我的意思是,我想用蓝牙模块将一个简单的字符从PIC发送到PC 本应在终端中显示“A”,但显示的是十六进制的F8(ASCII:看起来像一个“o”,内部有一个斜杠)。我尝试了一个printf、一个put或一个fputs,但是F8仍然加上这个符号“€” 接下来是我的代码和示意图…有人能帮我找到我的错误吗 (我正在使用RCom串行或CoolTerminal) #包括 #包括 #保险丝XT、NOWDT、NOPROTECT、PUT、

我想用我的PIC18F4550、蓝牙模块HC-06和电脑做一个简单的测试。 我的意思是,我想用蓝牙模块将一个简单的字符从PIC发送到PC

本应在终端中显示“A”,但显示的是十六进制的F8(ASCII:看起来像一个“o”,内部有一个斜杠)。我尝试了一个
printf
、一个
put
或一个
fputs
,但是F8仍然加上这个符号“€”

接下来是我的代码和示意图…有人能帮我找到我的错误吗

(我正在使用RCom串行或CoolTerminal)

#包括
#包括
#保险丝XT、NOWDT、NOPROTECT、PUT、断电、NOLVP、NOCPD、NOWRT
#使用延迟(时钟=4000000)
#使用rs232(波特率=9600,xmit=PIN_C6,rcv=PIN_C7,位=8,奇偶校验=N)
void main(){
而(1){
printf(“A”);
}
}

这是在UART端口上打印调试消息的通用代码。 注:

#包括
//使用uC头文件
#包括
#包括
#包括
#定义频率20000000
#定义频率
#定义波特率9600
#定义spbrg_值((FREQ/64)/baud)-1)
无符号字符UARTdata;
void serial_init()
{
SPBRG=SPBRG_值;
//SPBRG=31;
//TXSTAbits.TXEN=1;
//时钟源选择位0
//TX9:9位传输启用位0
//TXEN:传输启用0
//同步:EUSART模式选择位0
//SENDB:发送中断字符位0
//BRGH:高波特率选择位0
//TRMT:传输移位寄存器状态位1
//TX9D:传输数据0的第九位
TXSTA=0x20;
//RCSTAbits.SPEN=1;
//RCSTAbits.CREN=1
//位7 SPEN:串行端口启用位1
//位6 RX9:9位接收启用位0
//位5 SREN:单接收启用位0
//第4位CREN:连续接收启用第1位
//位3加法:地址检测启用位0
//位2 FERR:帧错误位0
//位1 OERR:溢出错误位0
//位0 RX9D:接收数据0的第9位
RCSTA=0x90;
//背景
TRISCbits.TRISC6=0;
TRISCbits.TRISC7=1;
}
无效putch(无符号字符UARTdata)
{
而(!TXIF)
持续
TXREG=UARTdata;
}
//配置
#pragma config FOSC=HS//振荡器选择位(HS振荡器)
#pragma config WDTE=OFF//看门狗定时器启用位(WDT禁用)
#pragma config PWRTE=OFF//通电定时器启用位(PWRT禁用)
#pragma config BOREN=ON//Brown out重置启用位(BOR禁用)
#pragma config LVP=OFF//低压(单电源)电路内串行编程启用位(RB3为数字I/O,MCLR上的高压必须用于编程)
#pragma config CPD=OFF//数据EEPROM存储器代码保护位(数据EEPROM代码保护关闭)
#pragma config WRT=OFF//Flash程序存储器写启用位(写保护关闭;所有程序存储器可由EECON控制写入)
#pragma config CP=OFF//闪存程序存储器代码保护位(代码保护关闭)
void main()
{
串行_init();
printf(“驾驶员享受直接打印方法!”);
而(1)
{
__延迟μms(1000);
printf(“A”);
__延迟μms(1000);
}                    
}

这是哪种类型的代码?什么是
18f4550.h
#保险丝
#使用延迟
#使用rs232
?它甚至没有编译。请提供一个最小的、自包含的、可编译的例子,说明你想要达到的目标和具体的问题。这可能无法解决你的问题,但是你可能要考虑每次打印后调用FLASH STUDUT。可疑信号被颠倒(或者可能是不匹配的波特)。代码>'A'是0b0100_0001(一行中有5位
0位)。0xF8一行有5个。
#include <18f4550.h>
#include <stdio.h> 

#fuses XT, NOWDT, NOPROTECT, PUT, BROWNOUT, NOLVP, NOCPD, NOWRT

#use delay (clock=4000000)

#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, bits=8, parity=N)

void main() {
    while (1) {
        printf("A");
    }
}
#include <xc.h>
// Use your uC header file
#include <pic16f877a.h>
#include <stdio.h>
#include <string.h>

#define _XTAL_FREQ 20000000
#define FREQ _XTAL_FREQ
#define baud 9600
#define spbrg_value (((FREQ/64)/baud)-1)

unsigned char UARTdata;

void serial_init()
{
    SPBRG=spbrg_value;
    //SPBRG=31;
    //TXSTAbits.TXEN = 1;
    //CSRC: Clock Source Select bit            0
    //TX9 : 9-bit Transmit Enable bit          0
    //TXEN: Transmit Enable                    0  
    //SYNC: EUSART Mode Select bit             0
    //SENDB: Send Break Character bit          0
    //BRGH: High Baud Rate Select bit          0
    //TRMT: Transmit Shift Register Status bit 1
    //TX9D: Ninth bit of Transmit Data         0
    TXSTA=0x20;

    //RCSTAbits.SPEN = 1;
    //RCSTAbits.CREN = 1    
    //bit 7 SPEN: Serial Port Enable bit        1
    //bit 6 RX9: 9-bit Receive Enable bit       0
    //bit 5 SREN: Single Receive Enable bit     0
    //bit 4 CREN: Continuous Receive Enable bit 1
    //bit 3 ADDEN: Address Detect Enable bit    0
    //bit 2 FERR: Framing Error bit             0
    //bit 1 OERR: Overrun Error bit             0
    //bit 0 RX9D: 9th bit of Received Data      0
    RCSTA=0x90;
    //Setting 
    TRISCbits.TRISC6=0;
    TRISCbits.TRISC7=1;
}

void putch(unsigned char UARTdata)
{
    while( ! TXIF)
        continue;
    TXREG = UARTdata;
}



// CONFIG
#pragma config FOSC  = HS      // Oscillator Selection bits (HS oscillator)
#pragma config WDTE  = OFF     // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF    // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON    // Brown-out Reset Enable bit (BOR disabled)
#pragma config LVP   = OFF      // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD   = OFF      // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT   = OFF      // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP    = OFF       // Flash Program Memory Code Protection bit (Code protection off)


void main()
{
  serial_init();

  printf("DRIVER Enjoy Direct print method!");

  while(1)
  {

    __delay_ms(1000);
    printf("A");
    __delay_ms(1000);     

  }                    
}