我希望配置我的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世界的新手。谁能指出我正确的方向?这样可以在输入和输出之间切换吗?我正在做正确的事情,我正在配置的方式吗?
非常感谢!
答案 0 :(得分:0)
我参加派对有点晚了。 建议您在等待接收数据的代码部分中使用中断。轮询通常不是一种好方法,您将面临更复杂的实现,而不是在中断服务程序中使用简单的计数器。
因此,您应该为PORTB的第4个引脚启用电平变化中断。