AngoLinux

Manuale d'uso del programma PCMon

- A cura del Prof. Stefano Salvi -


Sistema di cross-sviluppo ed emulatore per 8051:

Hardware e mappa di memoria della scheda

La scheda GPC-F2 della Grifo, nella versione utilizzata, monta una EPROM da 32 KB ed una RAM da 64 KB. La mappa di memoria utilizzata è la seguente:
 XDATACODE
FFFFh I/O Mappato  
FA00h
F9FFh RAM
8000h
7FFFh RAM ROM
0000h
Come si può vedere, la RAM dall'indirizzo 8000h all'indirizzo F9FFh (la h stà per hexadecimal, esadecimale) può essere sia letta e scritta nello spazio XDATA, sia letta ed eseguita nello spazio CODE.
Un monitor è allora in grado di caricare in quest'area un programma, ricevuto tramite la seriale, e di mandarlo in esecuzione, magari modificandolo per inserirvi dei breackpoint.
Nel nostro caso, il monitor Mo52 utilizza i primi 80 byte, da 8000h ad 804Fh, per le sue variabili. Il programma verrà quindi caricato all'inidirizzo 8050h. Per consentire di scrivere programmi che utilizzino interrupt, i vettori di interruzione vengono rilocati nell'area del programma:
VettoreNormaleReindirizzato da Mo52
External Interrupt 0 0003h 8053h
Timer Interrupt 0 000Bh 8053h
External Interrupt 1 0013h 8063h
Timer Interrupt 1 001Bh 806Bh
Serial Interrupt 0003h 8053h
Per quanto riguarda l'I/O incorporato nell'8051, solo due dei piedini del Port 1 sono connessi esternamente:
PortBitI/O
P12LED Giallo + Beeper
P15LED Verde
Il resto dell'I/O è mappato nello spazio XDATA, dall'indirizzo FA00h all'indirizzo FFFFh. I dispositivi di I/O installati sono i seguenti:
IndirizzoDispositivo 
FA00h ... FA3FhPPI 8255Emulato
FA40h ... FA7FhTimer 82c54 (Primo)Non Emulato
FA80h ... FABFhTimer 82c54 (Secondo)Non Emulato
FAC0h ... FAFFhRTC 6242bNon Emulato
FB00h ... FFFFhBus di sistema GrifoNon Emulato
Veniamo ora al PPI 8255 (l'unica periferica esterna che tratteremo, perchè è l'unica emulata). I suoi registri sono:
IndirizzoRegistroDescrizione
FA00hPDARegistro dati del port A
FA01hPDBRegistro dati del port B
FA02hPDCRegistro dati del port C
FA03hCNTRegistro di controllo
Scrivendo nei registri PDA, PDB o PDC i dati scritti vanno nel relativo port (A, B o C), se il port è configurato come uscita. Leggendo dai registri PDA, PDB o PDC si ottiene il dato in ingresso (se il relativo port è configurato come ingresso) o il dato scritto in precedenza (se il port è configurato come uscita).
Per i port A e B la direzione (ingresso o uscita) viene programmata per l'intero port. Nel port C invece la direzione può essere programmata indipendentemente per i bit da 0 a 3 (metà bassa) ed i bit da 4 a 7 (metà alta). Vediamo ora il significato dei bit del registro di configurazione CNT:
76 54 32 10
Direzione Port C 0..30 = Uscita
1 = Ingresso
Direzione Port B0 = Uscita
 1 = Ingresso
Modo Port B 0 = Modo 0 - I/O di base
 1 = Modo 1 - Monodirezionale con handshake
Direzione Port C 4..70 = Uscita
 1 = Ingresso
Direzione Port A0 = Uscita
 1 = Ingresso
Modo Port A00 = Modo 0 - I/O di base
01 = Modo 1 - Monodirezionale con handshake
 10 = Modo 2 - Bidirezionale con handshake
11 = Modo 2 - Bidirezionale con handshake
Programmazione0 = Accende o spegne i singoli bit del port C
1 = programma il modo dei port
Il port B è connesso al banco di DIP Switch, quindi và sempre programmato in ingresso (bit 1 ad 1) e, dato che non utilizza l'handshake (segnali di controllo) và anche impostato in modo 0 (bit 2 a 0).
Per il resto, i port possono essere programmati come si vuole. Per approfondimenti rimando alla documentazione originale (Datasheet originale Intel 82C55A CHMOS Programmable Peripheral Interface)

NOTA: L'emulatore emula esclusivamente il PPI 8255, connesso ad una scheda TIO-16 che monta 16 LED e 16 pulsanti connessi alle porte A e C. Viene emulato anche il banco di dip switch connesso alla porta B.
L'emulatore non implementa nè i timer nè il meccanismo di interruzione e non emula i tempi di esecuzione delle istruzioni.

Prof. Stefano Salvi


[Home Page dell'ITIS "Fermi"] [Indice Manuale PCMon] [Successivo]

© Ing. Stefano Salvi - Released under GPL licence