출력을 내 PIC에서 작동시킬 수 있었고 다양한 출력 래치를 높게/낮게 설정하면 여러 LED를 켜고 끌 수 있습니다. 그러나 핀 상태에서 읽기가 어려워요.PIC18에서 입력 핀의 상태 읽기
아래 코드를 참조하십시오. 내 config를 설정하고 TRISC를 입력으로, TRISB를 출력으로 정의합니다. 무한 루프에서 RC6이 하이인지 로우인지 확인하고 결과에 따라 전체 B 래치를 높게 또는 낮게 설정합니다.
#include <htc.h>
__CONFIG(1, FOSC_IRC & FCMEN_OFF & IESO_OFF);
__CONFIG(2, PWRTEN_OFF & BOREN_OFF & WDTEN_OFF);
__CONFIG(3, MCLRE_OFF);
__CONFIG(4, STVREN_ON & LVP_OFF & DEBUG_OFF);
__CONFIG(5, 0xFFFF);
__CONFIG(6, 0xFFFF);
__CONFIG(7, 0xFFFF);
void main(void)
{
TRISC = 0xFF; // input
TRISB = 0x00; // output
while (1)
{
if (PORTCbits.RC6 == 0)
LATB = 0b00000000;
else
LATB = 0b11111111;
}
return;
}
경고 또는 오류없이 코드가 정상적으로 컴파일됩니다. 내 코드 논리 단순히 래치 높은 및 낮은 설정할 경우 잘 작동하지만 난 성공적으로 핀 상태를 읽을 수 없습니다.
아이디어가 있으십니까?
저는 PIC18F14K50 및 MPLAB v8.43과 HiTech ANSI C 컴파일러를 사용하고 있습니다.
내 연결은 VDD (핀 1)에 + 5V, 접지에 VSS (핀 20)입니다. 나는 + 5V에서 C6 (핀 8), 그리고 100K 저항과 LED를 B7 (핀 10)에서 접지까지 가지고있다. RC6을 토글하려면 C6에 와이어를 연결/분리합니다.
┌────────┐
+5v -│ 01 20 │- gnd
-│ 02 19 │-
-│ 03 18 │-
-│ 04 17 │-
-│ 05 16 │-
-│ 06 15 │-
-│ 07 14 │-
+5v -│ 08 13 │-
-│ 09 12 │-
led -│ 10 11 │-
└────────┘
감사합니다. 실제 코드에서는 RC6뿐 아니라 모든 핀을 사용합니다. 모든 핀을 디지털이 아닌 아날로그로 설정하려면'ANSEL = 0; ANSELH = 0;'main() 메소드의 처음에? – Ozzah
또는 ADCON1을 사용하여 작업해야합니까? – Ozzah
예, ANSEL과 ANSELH를 0으로 설정하면 모든 아날로그 기능이 지워집니다. –