0

それで、私はPIC 16F88を持っていて、それでいくつかのことを行うことができましたが、今、アナログからデジタルへの変換をどのように行うのか疑問に思っていましたか?

インターネットで多くの例を試しましたが、成功しませんでした:(誰かがADCON0/1などの使用方法に光を当てることができれば、感謝します。

どうもありがとう。

編集:これは私のコードです:

START
    banksel TRISA
    clrf    TRISB
    movlw   0xff
    movwf   TRISA
    movlw   b'11000111'
    movwf   OPTION_REG
    movlw   b'00000001'
    movwf   ADCON1
    banksel PORTB
    clrf    PORTB   
LOOP
    btfss   PIR1,ADIF
    goto    LOOP
    bsf ADCON0,GO   
WAIT
    btfsc   ADCON0,GO
    goto    WAIT
    movf    ADRESH,W
    movwf   PORTB,W
END
4

1 に答える 1

0

PICデータシートから:

ADRESH:ADRESLレジスタには、A/D変換の10ビットの結果が含まれています。A / D変換が完了すると、結果がこのA / D結果レジスタペアにロードされ、GO / DONEビット(ADCON0 <2>)がクリアされ、A/D割り込みフラグビットADIFがセットされます。A/Dモジュールのブロック図を図11-1に示します。

A / Dモジュールを必要に応じて構成した後、変換を開始する前に、選択したチャネルを取得する必要があります。 アナログ入力チャネルでは、対応するTRISビットを入力として選択する必要があります。サンプル時間を決定するには、セクション11.1を参照してください。この取得時間が経過すると、A/D変換を開始できます。A / D変換を行うには、次の手順に従う必要があります。

  1. A/Dモジュールを構成します。•アナログピン/電圧リファレンス/およびデジタルI/O(ADCON1)を構成します。•A / D入力チャネル(ADCON0)を選択します。•A / D変換クロック(ADCON0)を選択します。•A/Dモジュールをオンにします。 (ADCON0)
  2. A / D割り込みを設定します(必要な場合)。•ADIFビットをクリアします。•ADIEビットを設定します。•GIEビットを設定 します。3 。必要な取得時間を待ちます。
  3. 変換を開始します。•GO/DONEビット(ADCON0)を設定します。
  4. 次のいずれかの方法で、A/D変換が完了するのを待ちます。•GO/DONEビットがクリアされるかどうかのポーリングまたは•A/D割り込みの待機
  5. A / D結果レジスタペア(ADRESH:ADRESL)を読み取り、必要に応じてビットADIFをクリアします。
  6. 次の変換では、必要に応じて手順1または手順2に進みます。ビットあたりのA/D変換時間はTADとして定義されます。次の取得を開始する前に、最低2TADの待機が必要です。

変換を開始する前に取得時間を待っているわけではありません。他のすべては正しいようです。

于 2012-05-22T17:06:38.070 に答える