0

我正在尝试在 MikroC 中为 PIC16F882 MCU 编写自定义延迟函数。

我想在整个延迟功能中不断检查 MCU 的特定引脚以查看它是否发生了变化。

但问题是,我不能将引脚作为参数传递给函数。有没有其他方法可以做同样的事情?

flag 的目的是确定延迟应该多长时间。Timer0 溢出后会自动变为0。我没有在代码中包含该部分以使事情更易于理解。

我的功能是:

int flag = 0;

void delay(bit pin_to_check){
     while(flag == 1){
        if(flag == 0 || pin_to_check == 0) {
             break;
        }
     }
}

void main(){
     flag = 1;
     delay(RA3_bit);
}

我得到的编译时错误是:

Parameter 'pin_to_check' must not be of bit or sbit type
4

2 回答 2

1

看看http://download.mikroe.com/documents/compilers/mikroc/pic/help/accessing_individual_bits.htm#bit

它说位不能用于参数列表。您需要传入注册名称。

于 2016-09-02T12:18:00.860 回答
0

由于您不能将bitorsbit作为参数传递,您可以:

  1. 完全避免使用该功能(显然),
  2. 使用预处理器宏而不是函数,
  3. 将整个寄存器连同位号一起传递给函数。

案例 3. 在此线程中进行了解释,类似于:

void delay(unsigned char *PORT, unsigned char bitNo) {
    unsigned char bitMask = 0x01 << bitNo;
    while (flag == 1 && ((*PORT) & bitMask) != 0)
    { }
}

// delay until bit 3 is set
delay(&PORTA, 3)
于 2016-09-02T14:33:47.623 回答