125307575 发表于 2016-8-24 18:37:32

PIC 16F1937 PB口作输入高 读回来一直是低

PIC 16F1937 PB口作输入高 读回来一直是低

是不是还没别的地方没有配置好


#include         "pic.h"
#include         "pic16f1937.h"

        __CONFIG(0x0464); //配置字:CONFIG1 0x8007
        __CONFIG(0x1233); //配置字:CONFIG2 0x8008

#defineLED_BACK_control            RC5

int main(void)
{       
        OSCCON = 0x6b ;//01101011
        OPTION_REG &=0x7f ;
        LCDCON = 0x00 ;        //关闭LCD
        ADCON0 = 0x00 ;
       
        LCDCON = 0x00 ;        //关闭LCD
       
        LCDSE0 =0x00 ;//0b11111111 ;                // Seg 0~7
           LCDSE1 =0x00 ;//0b11111111 ;                // Seg 8~15
            LCDSE2 =0x00 ;
       
        OPTION_REG &=0x7f ;
       
        ANSELB = 0X00;
        PORTB= 0x1c ;
        WPUB|= 0X1c;
            TRISB = 0X1c;
   
            TRISC = 0X00 ;
       
        while(1)
        {
                #if1
               
                if(RB2 == 0)
                {
                        LED_BACK_control = 0 ;       
                }
                else if(RB3 == 0)
                {
                        LED_BACK_control = 0 ;
                }
                else if(RB4 == 0)
                {
                        LED_BACK_control = 0 ;
                }
                else
                {
                        LED_BACK_control = 1 ;
                }
                
          #else
                
                        LED_BACK_control = 0 ;       

                #endif
        }
        return 0 ;
}

含笑半步颠 发表于 2016-8-24 20:16:02

读每个port的特定位时,别直接用RB2 == 0 这样的语句去试,读RB2的输入值,通过如下这种方式:POTRB & RB2MASK, 其中RB2MASK = 0b0000 0100. 你试试这样可不可以~

125307575 发表于 2016-8-25 10:07:17

含笑半步颠 发表于 2016-8-24 20:16
读每个port的特定位时,别直接用RB2 == 0 这样的语句去试,读RB2的输入值,通过如下这种方式:POTRB & RB ...

试过了还是不行

yanzhiwei 发表于 2016-8-26 21:45:30

PORTBbits.RB2==0;这样呢

125307575 发表于 2016-8-28 23:22:58

谢谢 大家 是电路的问题
页: [1]
查看完整版本: PIC 16F1937 PB口作输入高 读回来一直是低