PIC单片机串口通信读取IO状态失败的问题

2020-02-10 08:50发布

老大让写个网络切换的程序,就是控制几个继电器同时动作。写了1天了,已经可以根据接收的命令进行网络切换了,但是,由于在接收上位机命令后,要返回本身的状态,这个地方出错了,怎么都读不到自己的状态!不知道是怎么回事!希望有人指点下!
  功能是这样的,上位机发送的指令是8个字节,格式是:68,16,16,68,05,XX,AA,16
  其中XX有3种,为01,10,11;其中01是内部网络,10是外部网络,11是无线网络。
  我接收了命令后进行了切换,成功了。然后读取自己的IO口状态,用了3个if来判断是那种状态,然后发回上位机。但是,发送的状态全部都是else里面的。也就是说,读取全部失败。

下面,把发送数据的函数发上来,希望有人能指点下。
如下程序,我是想通过读取RA1,RA2,RA3的值,然后根据他们的状态来修改一个数组里的固定的2个值,接着把他们发送倒上位机!但是,全部失败了,希望有人能说说

void send_data()
{
        uchar i,temp1,temp2,temp3,data[8]={0x68,0x16,0x16,0x68,0x00,0x00,0x00,0x16};
        temp1=RA1;
        temp2=RA2;
        temp3=RA3;
        if(temp1==0&&temp2==1&&temp3==1)
        {
                data[5]=0x10;
                data[6]=0x10;       
        }
        if(temp1==1&&temp2==0&&temp3==1)
        {
                data[5]=0x01;
                data[6]=0x01;       
        }
        else
        {
                data[5]=0xaa;
                data[6]=0xaa;       
        }

        for(i=0;i<8;i++)
        {
                while(!TXIF);
                TXIF=0;
                TXREG=data;       
        }       
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
honami520
1楼-- · 2020-02-10 12:29
对了,我的RA1,RA2,RA3都是输出!TRISA1=0;TRISA2=0;TRISA3=0;
chuyu111
2楼-- · 2020-02-10 14:54
 精彩回答 2  元偷偷看……
honami520
3楼-- · 2020-02-10 15:04
果然是ADCON1的问题!多谢楼上!

一周热门 更多>