在16f84a上编程8255

问题描述 投票:0回答:1

我正在尝试通过16f84a写入8255 ppi(可编程外设接口)的控制字节。 Proteus一切都很好,但我无法在电路上写任何内容到8255。输入从16f84a(PORTB)输出,并连接到8255的数据总线。有人说写入8255一定有延迟。这是我编写的一个测试程序,用于通过8255获得输出。所有端口均设置为输出(A,B,C)。但这是行不通的。变形蛋白屏幕截图的链接http://i.stack.imgur.com/UQbfG.jpg

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
pic
1个回答
4
投票

[最有可能的是,您吹掉了8255。您的电路有效地将8255的输出短路到地。您没有提供正在使用的8255的确切部件号,但是对于单个端口上的所有位,它们通常具有大约4mA total]的最大输出电流。数据表上还应注意提供了电流限制,并且必须由外部电路提供。您没有电流限制。LED非常接近接地短路。 8255根本无法驱动它。

断开LED的连接,看看8255的输出是否仍然有效。如果不是,请更换8255,并在每个端口输出和LED之间使用适当的输出驱动器或至少330欧姆的电阻。

© www.soinside.com 2019 - 2024. All rights reserved.