使用 MIKROC 读取 pic 微控制器的输入引脚

Reading input pin of pic microcontroller with MIKROC

我需要编写一个程序来检查 PIC 的输入引脚是否有电压。如果存在电压,它将向选定的输出引脚提供电压,如 PORTB.RB1=1;。否则它会给其他选定的输出引脚提供电压,如 PORTC.RC1=1;

可能吗?我试过这样做,但它不起作用。

void main() {

    TRISB=0;
    TRISA=1;
    TRISC=0;

    while(1){
        delay_ms(500);
        // PORTB=0;
        if(PORTA==1){
            PORTB.RB1 =1;
        }
        else{
            PORTC.RC1 =1;
        }
    }
}

你没有关闭其他端口输出,也没有隔离PORTA的输入引脚。如果是 0 位掩码是 1,如果是 1 位掩码是 2,等等

void main() {

    TRISB=0;
    TRISA=1;
    TRISC=0;

    while(1){
        delay_ms(500);
        if(PORTA & 1){
            PORTB.RB1 =1;
            PORTC.RC1 =0;
        }
        else{
            PORTB.RB1 =0;
            PORTC.RC1 =1;
        }
    }
}

PORTA和PORTE是模拟端口。如果要将它们用作数字输入,则必须防止 PIC 将它们用作模拟输入。 您必须添加此说明: ADCON1=0x06; 在将 PORTA 或 PORTE 设置为输入之前。

此代码成功运行:

void main()
{
    ADCON1=0x06;
    TrisA=1;
    TrisE=1;
    TrisC=0;
    PortC=0;
    while (1)
    {
        if (PortA.B0==1)
            PortC.B0=1;
        else
            PortC.B0=0;

        if (PortA.B1==1)
            PortC.B1=1;
        else
            PortC.B1=0;

        if (PortA.B2==1)
            PortC.B2=1;
        else
            PortC.B2=0;

        if (PortA.B3==1)
            PortC.B3=1;
        else
            PortC.B3=0;

        if (PortA.B5==1)
            PortC.B4=1;
        else
            PortC.B4=0;

        if (PortE.B0==1)
            PortC.B5=1;
        else
            PortC.B5=0;

        if (PortE.B1==1)
            PortC.B6=1;
        else
            PortC.B6=0;

        if (PortE.B2==1)
            PortC.B7=1;
        else
            PortC.B7=0;
    }
}

硬件连接:用 5v 电源和开关连接输入端口的位。 之后将其与下拉电阻连接。

void main(){
TRISB = 1;     //set portB as input       
TRISC = 0;     //set portC as output
while(1){

 if(PORTB.B0 == 0){           //if RB0 == 0 ?
          PORTC.F0 = 1;       //set RC0 = 1 ,(high)
          }else PORTC.F0 = 0; //set RC0 = 0 ,(low)
 if(PORTB.B1 == 0){           //if RB1 == 0 ?
          PORTC.F1 = 1;       //set RC1 = 1 ,(high)
          }else PORTC.F1 = 0; //set RC1 = 0 ,(low)

  //set if else block for numbers of bit as you want.....
       }
}

请注意,pic 端口 A 默认为模拟输入,如果您想将此端口用作数字端口,请更改 ADCON 寄存器并遵循数据表。