Serial port 通过uart接收pic16F788:mikroC的数据
我已经编写了java代码,通过串行端口将数据发送到pic,现在我需要对微控制器进行编程以读取数据,如果接收到1,则使PortD.RD6=1,如果接收到0,则使PortD.RD6=0。我已经尝试过这个代码,但我得到了很多错误。 这是我的第一个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
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”
我已经试过了,但仍然不起作用