PIC18f452端口监听问题

时间:2012-05-08 23:05:27

标签: microcontroller microchip mikroc

为什么这段代码不起作用?当我按下按钮时,我想要的只是portb切换。

main
trisb=0
trisa=0xff
while true
if ra0<>0 then
portb = not portb
end if
wend .end

1 个答案:

答案 0 :(得分:0)

我不确定那是什么;它是伪代码吗?

无论如何,你需要触发从RA0 == 0到RA0 == 1的CHANGE。如上所述,只要RA0 == 1,那么你的PORTB将在每次循环时切换。

这是C中的一个例子:

int main(void)
{
    unsigned char bButtonValue = 0;

    TRISA = 0xFF;
    TRISB = 0x00;

    while (1)
    {
        if (RA0 != bButtonValue) 
        {
            bButtonValue = RA0;
            if (bButtonValue == 1)
            {
                 PORTB= ~PORTB;
            }
         }
     }
}

请记住,对于真正的应用,您可能需要对开关输入进行去抖(在触发更改事件之前确保它对于一些样本是稳定的。