PIC18f4550:为双向数据配置RB4

时间:2014-03-05 20:28:38

标签: pic

我希望配置我的PIC,这样我就可以使用端口RB4并向设备发送脉冲,然后在同一端口上接收数据。为此,我需要将RB4配置为数字I / O端口然后;

设置为输出 lowsignal 1毫秒延迟 highsignal 1毫秒延迟 设置为输入 读取输入

然后这段代码循环。所以我有;

for(i=0;i<10;i++) // There are 10 bits of data to read
{
            ADCON0bits.ADON = 0;
    TRISBbits.TRISB4 = 0; // set to output
            ADCON0bits.ADON = 1;

            LATBbits.LATB4 = 0; // output low
            LATBbits.LATB4 = 1; // output high

    delay(1);

            ADCON0bits.ADON = 0;
    TRISBbits.TRISB4 = 1;   // configure for input
            ADCON0bits.ADON = 1;

    inData = inData<<1;
            delay(1);
    if (PORTBbits.RB4==1)
        inData++;
}

但我似乎没有得到输入。我是PIC世界的新手。谁能指出我正确的方向?这样可以在输入和输出之间切换吗?我正在做正确的事情,我正在配置的方式吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

我参加派对有点晚了。 建议您在等待接收数据的代码部分中使用中断。轮询通常不是一种好方法,您将面临更复杂的实现,而不是在中断服务程序中使用简单的计数器。

因此,您应该为PORTB的第4个引脚启用电平变化中断。