我在C中编写PIC代码并遇到以下问题:
当我将延迟写为_delay_ms(500)
时,我的代码没有编译,它说它没有认识到这条指令。我正在使用MPLAB。
我想编写一个程序来计算按下按钮的时间,然后返回该值并使用LED显示它。我知道如何显示它,但不知道如何使程序等待按下pickit上的按钮。
main()
{
TRISA=0;//Sets all ports on A to be outputs
TRISB=1;//Sets all ports on B to be inputs
for(;;){
if(PORTBbits.RB0==1){//When the button is pressed the LED is off
PORTAbits.RA1 =0;
count=count+1;
}
else{
PORTAbits.RA1=1;
count = count +1;
}
if (count > 20){//if count =20 aka 20 button presses the LED turns on
PORTAbits.RA0=1;
}
else{
PORTAbits.RA0=0;
}
}
}
答案 0 :(得分:0)
有一些问题:
__delay_ms
而非_delay_ms
。请注意,开头有两个下划线。Delay_ms
。答案 1 :(得分:0)
当您检测到按键时,您需要在代码中添加延迟。正如您所说_delay_ms(500)无法识别,您可以尝试以下内容:
unsigned char x;
// Just waste a few cycles to create delay
for (x = 0; x < 100; x++)
{
// No operation instruction
Nop();
}
您可以使用此for循环的特定迭代次数创建自己的延迟函数。如果需要,使用分析器测量此功能创建的确切延迟。 IMO任意延迟,如上述100次迭代都应有效。