2012-03-30 15 views
1

次のコードはPIC18F14K50のピンをハイに設定しませんが、それは簡単にできません!このPICコードでLEDが点灯しないのはなぜですか?

#include <pic18.h> 
#include <htc.h> 

void main(void) 
{ 
    // Set ALL pins to output: 
    TRISA = 0; 
    TRISB = 0; 
    TRISC = 0; 

    // Set ALL pins to high: 
    LATA = 0b11111111; 
    LATB = 0b11111111; 
    LATC = 0b11111111; 

    // Leave pins high and wait forever: 
    while (1); 
} 

私はMPLAB v8.43とハイテクANSI Cコンパイラを使用しています。

ロジックプローブは、VUSBとMCLRを除くすべてのピンがハイではないことを示します。

アイデア?

+0

プログラムはOKに見えますが、それはロードされた?それが本当に実行されていますか?あなたの問題には他の理由があるかもしれません。 – chrmue

+0

単純なカウンタ(符号なしのcharカウンタなど)を作成してゼロに初期化し、whileループでインクリメントして出力をカウンタ変数の値に設定します。何かが実際に起こっていることを確認するために、静的出力よりもデバッグするのがずっと簡単です。 – sonicwave

+0

コードスニペットには、あなたのプロセッサショーの_CONFIGはありません。どのクロックソースを使用しようとしていますか?チップ内部にあるか、チップに接続されたXtalを持っていますか? – user957902

答えて

1

少なくとも一部のピンはアナログ入力として設定できます。このデバイスのデータシートから

アナログは パワーオンリセット後のデフォルト設定であるレジスタANSELにANS3 ビットをセットすることによって選択されるように、ピンRA4の動作を制御します。

ANSELレジスタを設定しないと、ピンはアナログ入力として設定されているため、出力として使用できません。

これは、A/D入力になり得るすべてのピンに適用され、すべてのピンをカバーしません。

もう一度、コードに設定ビットの設定が表示されません。そのデバイス。 2つの異なる命令セットを持ち、コンフィギュレーションビットでどの命令セットを使用しているかを少なくとも指定しなければなりません。

あなたは、直後に自分のコードの先頭にこれを追加してみてください可能性があります

// Configuration BITS setup 
__CONFIG(1, FOSC_INTIO2 & XINST_OFF); 
__CONFIG(2, WDTEN_OFF & PWRTEN_ON); 
__CONFIG(3, MCLRE_OFF); 
+0

'ANSEL'と' ANSELH'を '0'に設定すると、そのトリックが実行されました。私は余分な命令セットも無効にしました。何か影響があるかどうかはわかりませんが、必要がない場合は無効にすることをお勧めします。ご協力いただきありがとうございます :) – Ozzah

0

私は定義しよう、あなたはMCPU発振器を構成していないこととします

; Oscillator: 
    config FOSC = INTIO2   ;Internal RC oscillator 
; 
; PLL x4 Enable bit: 
    config PLLCFG = OFF 

;Define oscillator frequency 
;{ 
    movlw b'01100000' 
    movwf OSCCON 
    movlw b'01000000' 
    movwf OSCTUNE 
;}; 

このディレクティブは、MPLABのASMのためではなくハイテクのためのものであるが、ファイルレジスタは同じ名前でなければなりません。

関連する問題