2011-12-09 51 views
0

Iam嘗試通過16f84a寫入8255 ppi(可編程外設接口)的控制字節。在Proteus上一切都很好,但我不能在我的電路上寫任何8255。輸入從16f84a(PORTB)輸出並連接到8255的數據總線。有些人說必須有8255的延遲。我試過但沒有工作。這是我寫的一個測試程序,通過8255輸出。所有端口都設置爲輸出(A,B,C)。但它不起作用。 鏈接,變形桿菌屏幕截圖 http://i.stack.imgur.com/UQbfG.jpg通過16f84a編程8255

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你的電路有效地短路了8255的輸出地。您沒有給出您使用的8255的準確部件號,但是它們通常具有大約4mA的最大輸出電流總計對於單個端口上的所有位。數據表中還應該有一個註釋,提供限流,並且必須由外部電路提供。你沒有限流。

一個LED非常接近對地短路。 8255根本無法驅動它。

斷開LED,看看8255的輸出是否仍然工作。如果沒有,請更換8255,並在每個端口輸出和LED之間使用合適的輸出驅動器或至少330歐姆的電阻器。

+0

我從先前的硬件中取下1位7seg顯示器。有效。正如你所說的4位7seg顯示有問題。我已經嘗試了另一個4digit 7seg顯示器。仍然沒有光。我應該怎麼做才能使用4位7seg顯示屏? – loki

+2

您必須遵守顯示屏和8255的規格。您可能需要輸出驅動程序。你可能需要降壓電阻。如果你有一個鏈接到你正在使用的顯示器的規格表,並給出你正在使用的8255的確切型號,我可以告訴你完成工作的最簡單方法。 (也許有內置的下拉電阻或限流器?也許有一個內置LED驅動器?) –

+0

8255AC-2 iam使用和4位數7段顯示我不知道模型。但是這個代碼寫在它上面「JYFD056ASR-20」 – loki