Serial port 通过uart接收pic16F788:mikroC的数据

Serial port 通过uart接收pic16F788:mikroC的数据,serial-port,pic,mikroc,Serial Port,Pic,Mikroc,我已经编写了java代码,通过串行端口将数据发送到pic,现在我需要对微控制器进行编程以读取数据,如果接收到1,则使PortD.RD6=1,如果接收到0,则使PortD.RD6=0。我已经尝试过这个代码,但我得到了很多错误。 这是我的第一个mikroC程序,所以我真的不知道如何管理这些错误 char output[1]; unsigned short i; void main(){ TRISD = 0x01; i = 0; UART1_Init(9600); while (1) { if

我已经编写了java代码,通过串行端口将数据发送到pic,现在我需要对微控制器进行编程以读取数据,如果接收到1,则使PortD.RD6=1,如果接收到0,则使PortD.RD6=0。我已经尝试过这个代码,但我得到了很多错误。 这是我的第一个mikroC程序,所以我真的不知道如何管理这些错误

char output[1];
unsigned short i;
 void main(){
 TRISD = 0x01;
 i = 0;
UART1_Init(9600);
while (1) {
if (UART1_Data_Ready()==1) {
i = UART1_Read(); // read the received data
ByteToStr(i, output);
if (output = "1" ) // this is where I get the error 
{PortD.RD6=1;}
else {  PortD.RD6=0;}

}}}

我能发现的一个错误是,
ByteToStr
返回三个字符,因此它可能会覆盖其他内存区域,并给出一个未定义的结果。您不需要进行这种转换,只需将一个字节读入
char
,然后直接对其进行比较,如下所示:

void main()
{
    char c;

    TRISD = 0x01;
    UART1_Init(9600);
    while (1) {
        if (UART1_Data_Ready()) {
            c = UART1_Read();
            if (c == '1')
                PortD.RD6=1;
            else 
                PortD.RD6=0;
        }
    }
}

您使用的是
output=“1”
而不是
output==“1”
我已经试过了,但仍然不起作用