Retro-ingénerie d'une carte Z80 : partie 6 - PIOs en entrée

Bonsoir amis Maker,

Ce fût décidément un Week-end bien productif avec un double article sur les PIOs de ma carte Z80.
Après "Retro-ingenierie d'une carte Z80 : partie 5 - test des PIOs", j'ai décidé -cette fois- de tester le PIO (Parallèle IO, Z0842004PSC) en entrée.

Tester les PIO en entrée

Tester les PIO en entrée

La rétro-ingénierie de la carte CPU nous a appris que la plupart des entrées/sorties des modules PIO sont disponibles sur le connecteur P1. C'est pour cela que j'y ai branché un bouton poussoir avec une résistance pull-up.


Cette fois, j'utilise le port B (7ieme broche) du PIO1 pour y brancher une bouton poussoir. 

  • SI le bouton est relâché ALORS la broche p1.PB7 est HIGH
  • SI le bouton est enfoncé ALORS la broche p1.PB7 est LOW (puisque raccordée directement à la masse) 

L'adressage du PIO et le fichier io.asm se fait de la même façon que dans le dernier article

Code assembleur pour PIO en entrée

Le programme 04_pio_read.asm effectue l'opération de lecture pour activer/désactiver la LED D7 de la carte RCIO en fonction de l'état de l'entrée p1.PB7.

Voici le code assembleur commenté:

include 'io.asm'

org     0x0000               ; Redemarrage a froid du Z80.

    ld a, $00                ; Eteindre toutes LEDs sur carte d'extension
    out (RCIO_OUTPUT), a

main:
    ld a,$4F                 ; fixer mode 1 (input/entrée)
    out (PIO1_BASE+PIO_PORTB+PIO_CMD),a

read_portb:
    in a,(PIO1_BASE+PIO_PORTB+PIO_DATA) ; lecture portB du PIO1

    bit 7,a                  ; Bit 7 actif dans reg. a ? donc PB7
    jp z,input_is_zero
    ld a, $01                ; Allumer LED D0
    jp set_user_led

input_is_zero:
    ld a, $00                ; Eteindre LED D0

set_user_led:
    out (RCIO_OUTPUT),a      ; Appliquer etat LED D0
    jp read_portb            ; Nouvelle Lecture


Ressource

Manuels Z80-PIO

Faites une recherche Google autour des termes suivants:

  • z80 pio technical manual (36 pages)
  • z80 pio user=s manual (22 pages)



Aucun commentaire