2011-12-09 8 views
0

Iamは、16f84aを介して8255ppi(プログラマブルペリフェラルインターフェイス)の制御バイトを書き込もうとしています。プロテウスと一緒に全部うまくいったけど、私の回路には何も書き込めません。入力は16f84a(PORTB)から出て8255のデータバスに接続されています。8255を書き込むには遅延があると言われます。 8255を通して出力を得るために書いたテストプログラムです。すべてのポートは出力(A、B、C)に設定されています。しかし、それは動作しません。プロテウス画面用 のリンクは、あなたはあなたの回路が効果的にグランドに8255の出力を短絡8255.を吹いた、ほとんどのhttp://i.stack.imgur.com/UQbfG.jpgプログラミング8255以上16f84a

bsf  PORTA,3     ; activate 8255's reset pin 
      call jDelay 

      bcf  PORTA,3     ; deactivate 8255's reset pin 

      movlw b'00000001'     ; Control byte for 8255 (B0->D7....B7->D0) /reverse of 10000000 (all set to output) 
      movwf PORTB 
      movlw b'00000011'     ; mode 11 to write control register and also PortA.3-> 8255.WR (activate with 0 ,WR pin active-low) 
      movf PORTA       ;portA.0->8255.A0&& portA.1->8255.A1 

      call jDelay      ; Delay to write control byte 

      bsf  PORTA,2      ; Deactive Write pin of 8255 (Active-low , 1 deactivates) 

main 


    movlw  B'10110110'  ; Digit value for 5 
    movwf  PORTB 
     movlw b'00000000'  ; mode 00 and activate WR pin 
     movwf PORTA    ; write to portA so -> 8255 
     call jDelay    ; Delay to write byte 
     bsf  PORTA,2   ; Deactivate 8255's WR pin(active-low) 

     Delay     ;endless loop 
     goto Delay 

     jDelay     ; Delay loop 
     Loop3    decfsz    COUNT1,1 
         goto Loop3 
          decfsz    COUNT3,1 
         goto Loop3 

    return 
end 
+0

症状は何ですか? –

+0

症状はデータバスからの入力です8255の出力ポートに到着しません。私はledとマルチメーターでチェックしてテストしました – loki

+0

出力ポートのピンは正しく設定されていますか?あなたは一時的に遅延を巨額増加させたいかもしれません。 –

答えて

4

を撃ちました。使用している8255の部品番号は正確ではありませんが、通常、最大出力電流は約4mAです。合計はです。また、データシートには、電流制限が提供されており、外部回路によって提供されている必要があることに注意する必要があります。電流制限はありません。

LEDは地面にかなり近いところにあります。 8255は単にそれを運転することはできません。

LEDを取り外し、8255の出力がまだ機能しているかどうかを確認します。そうでない場合は、8255を交換し、各ポート出力とLEDの間に適切な出力ドライバまたは少なくとも330オームの抵抗を使用してください。

+0

私は以前のHWから1桁の7segディスプレイを取り外しました。出来た。あなたが言ったように、4桁の7segディスプレイには問題があります。私は別の4digit 7segディスプレイを試しました。まだ光はない。 4桁の7segディスプレイを使用するにはどうすればよいですか? – loki

+2

ディスプレイと8255の両方の仕様に従わなければなりません。出力ドライバが必要な場合があります。抵抗を落とす必要があるかもしれません。使用しているディスプレイの仕様シートへのリンクがあり、あなたが使用している8255の正確なモデルを教えてくれれば、私はあなたに仕事をやり遂げる最も簡単な方法を教えてくれます。 (たぶん1つは、抵抗または電流リミッタを落としていますか?おそらく1つのLEDドライバを内蔵していますか?) –

+0

8255AC-2私はモデルを知っていません。しかし、このコードは "JYFD056ASR-20"と​​書いています。 – loki