PICで出力を動作させることができ、さまざまな出力ラッチをハイ/ローに設定すると、LEDの束をオンとオフで踊らせることができます。しかし、ピンの状態で読むのが大変です。
以下のコードを参照してください。構成を設定し、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とMPLABv8.43、およびHiTechANSICコンパイラを使用しています。
私の接続は、VDD(ピン1)への+ 5V、アースへのVSS(ピン20)です。+ 5VからC6(ピン8)まで、100Kの抵抗とB7(ピン10)からグランドまでのLEDがあります。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 │-
└────────┘