基本的PIC编程问题

时间:2014-04-29 02:05:45

标签: microcontroller pic

我在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;
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

有一些问题:

  • 假设您使用的是PIC24或dsPIC,则需要包含libpic30.h
  • 在包含libpic30.h之前,您需要#define FCY作为您的指令速率,以便延迟采用正确的周期数。有关详细信息,请参阅libpic30.h文件中的注释。
  • 该功能为__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次迭代都应有效。