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:

Mappa della memoria della scheda GPC F2
 XDATACODE
FFFFh I/O Mappato Vuoto
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:

Vettori di interruzione
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:

LED sulla scheda GPC F2
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:

Periferiche mappate in XDATA della scheda GPC F2
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:

Registri del PPI
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:

Registro di controllo PPI
76 54 32 10
  Direzione Port C 0..30 = Uscita
1 = Ingresso
Direzione Port B0 = Uscita
1 = Ingresso
Modo Port B0 = 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.

Prof. Stefano Salvi