Sei sulla pagina 1di 400

.

PREMESSA

A coronamento del corso sulla programmazione con linguaggio Assembler dei


microprocessori serie ST6, non poteva mancare la raccolta in un unico cd-rom di
tutti gli articoli pubblicati nel corso degli anni sullargomento.

E quando diciamo tutti, intendiamo proprio tutti: dai due programmatori in kit, ai
circuiti di prova, dalla spiegazione teorica delle istruzioni del linguaggio Assem-
bler, alla loro applicazione pratica in elettronica, dagli accorgimenti per utilizzare
al meglio le istruzioni e la memoria dei micro, alluso del software emulatore per
testare i programmi.

Lintento didattico accompagna tutti gli articoli, anche quelli che, a prima vista, so-
no di carattere pi propriamente pratico: gli stessi programmi-sorgente, che tro-
vate in questo stesso cd-rom in una directory dedicata, servono soprattutto per ca-
pire come si deve scrivere unistruzione per ottenere una determinata funzione.
Leggendo i commenti accanto ad ogni riga di programma, non solo vi impadro-
nirete della materia, ma potrete addirittura utilizzare blocchi di istruzioni trasfe-
rendoli nei vostri programmi.

Inoltre, con i software emulatori che vi proponiamo diventa facilissimo controlla-


re le istruzioni via via che vengono eseguite. E cos possibile capire dove e per-
ch si genera lerrore e come fare per correggerlo.
Per questo motivo, ci siamo premurati di mettere a vostra disposizione, sempre
in questo cd-rom, lultima versione del software emulatore SimST62, che avete
imparato a conoscere, ad usare e ad apprezzare nei nostri articoli.

In appendice trovate il kit di una lampada ad ultravioletti per cancellare i micro-


processori con memoria Eprom e un inedito sulla funzione Timer dei micropro-
cessori ST6, che tiene conto del fatto che in alcuni tipi di micro possibile atti-
vare alcune modalit di funzionamento particolari e molto interessanti.

Non poteva mancare lindice analitico dei kit e degli argomenti teorici, che vi ri-
manda immediatamente agli articoli in cui largomento scelto trattato.

la Direzione Editoriale

Bologna, Gennaio 2003

Nota: poich negli articoli si fa spesso riferimento agli argomenti trattati specifi-
cando la rivista in cui sono apparsi, nel sommario abbiamo riportato, oltre al tito-
lo dellarticolo, anche il numero di rivista in cui stato pubblicato, per facilitarne
il ritrovamento allinterno del cd-rom.
SOMMARIO RIVISTA

PROGRAMMATORE per microprocessori serie ST6 ................................................................. 172


Programmatore LX.1170 per gli ST62/10-15-20-25
CIRCUITO TEST per microprocessore ST6E10 .......................................................................... 172
Scheda test LX.1171 per provare gli ST6
IMPARARE a programmare i MICROPROCESSORI ST6 ........................................................... 174
Istruzioni Variabili Registri
IMPARARE a programmare i microprocessori ST6 ................................................................... 175
Watchdog Porte Interrupt A/D converter Timer
BUS per TESTARE i micro ST6 ................................................................................................... 179
Bus LX.1202-1203 per testare i micro ST62/10-15-20-25
SCHEDA TEST per ST6 ................................................................................................................. 179
Schede test LX.1204-1205 per provare gli ST6
NOTA per il programmatore LX.1170 per micro ST6 ................................................................ 179
Consigli per migliorare il programmatore LX.1170
SCHEDA con 4 TRIAC per microprocessori ST6 ...................................................................... 180
Scheda LX.1206: pilotare 4 diodi triac con un ST6
SCHEDA con DISPLAY LCD pilotata con un ST6 ..................................................................... 181
Scheda LX.1207: pilotare un display numerico LCD con un ST6
UNA SCHEDA per pilotare un DISPLAY alfanumerico ............................................................. 182
Scheda LX.1208/N: pilotare un display alfanumerico LCD con un ST6
SOFTWARE emulatore per TESTARE i micro ST6 .................................................................... 184
Software simulatore DSE622
SOFTWARE simulatore per TESTARE i micro ST6 ................................................................... 185
Formato e Opcode delle istruzioni Carry flag e Z flag Correzione degli errori con il DSE622
Windows 95 e ST6 ......................................................................................................................... 185
Se i programmi in DOS per ST6 non girano sotto Windows 95
PER PROGRAMMARE correttamente i micro ST6 ..................................................................... 189
Cicli macchina Reset Watchdog Gestione ottimale delle porte Espressioni
NUOVO software SIMULATORE per micro ST6 ......................................................................... 190
Nuovo simulatore software per micro ST62/10-15-20-25
SOFTWARE emulatore per TESTARE i micro ST6 .................................................................... 190
Le direttive .w_on, .ifc, .block
LE DIRETTIVE dellassembler ST6 .............................................................................................. 191
Le direttive .ascii, .asciz, .def
PROGRAMMATORE per MICRO ST62/60-65 .............................................................................. 192
Programmatore LX.1325 per micro ST62/60-65
BUS per TESTARE le funzioni PWM e EEPROM ....................................................................... 192
Bus LX.1329 per testare i micro ST62/60-65 Programmi di esempio per PWM e EEPROM
LE DIRETTIVE dellassembler ST6 .............................................................................................. 193
Le direttive .byte, .equ, .set
OPZIONI del compilatore Assembler .......................................................................................... 194
Opzioni del compilatore Assembler
Le memorie RAMEEPROM ......................................................................................................... 195
Tipi di registri Memoria RAM e RAM aggiuntiva Lettura e scrittura della memoria EEPROM
Software SIMULATORE per micro ST6 ....................................................................................... 197
Nuovo simulatore software per micro ST62/60-65
LA funzione SPI per lo scambio DATI ........................................................................................ 198
La funzione SPI per lo scambio seriale dei dati
CIRCUITI test per la SPI ................................................................................................................ 198
Schede test LX.1380-1381-1382 per la funzione SPI
COME PROGRAMMARE i nuovi MICRO serie ST6/C ................................................................ 202
Interfaccia LX.1430 per gli ST6 serie C Option Byte della serie C
COME UTILIZZARE la DIRETTIVA .MACRO ................................................................................ 203
La direttiva .macro
Per PROGRAMMARE i nuovi MICRO serie ST6/C ..................................................................... 204
Le funzioni attivabili tramite lOption Byte della serie C
LA DIRETTIVA .IFC dellASSEMBLER per ST6 .......................................................................... 205
La direttiva .ifc
IL programma LINKER per i microprocessori ST6 .................................................................... 206
Il programma Linker I formati .hex e .obj Le direttive .pp_on, .extern, .window, .windowend
APPENDICE A: QUALCOSA in pi sul TIMER ...........................................................................
APPENDICE B: Lampada per cancellare le Eprom ................................................................... 174
INDICE ANALITICO ........................................................................................................................
Molti Istituti Tecnici e non pochi softwaristi e pro- Solo quando si ha la conferma che il programma
gettisti ci chiedono con sempre maggiore insi- funziona regolarmente, si preferisce utilizzare i mi-
stenza di spiegare in modo molto semplice come croprocessori della serie ST62/T, perch oltre ad
si programmano i microprocessori ST62, ritenendo essere meno costosi, non pi possibile mano-
che se ci prendiamo questo impegno lo adempire- metterli.
mo come nostra consuetudine nel migliore dei
modi. Nelle Tabelle N.1 e N.2 riportiamo le principali ca-
Per accontentarvi iniziamo subito dicendo che i mi- ratteristiche di queste due serie di microprocessori.
croprocessori della famiglia ST62 sono reperibili in Tenete presente che nei microprocessori da 2 K di
due diverse versioni: memoria possibile inserire circa 900 - 990 righe
quelli siglati ST62/E e quelli siglati ST62/T. di programma ed in quelli da 4 K circa 1.800 - 2.000
La lettera E posta dopo la sigla ST62 indica che il righe di programma.
microprocessore si pu cancellare e riprogram-
mare per almeno un centinaio di volte. Per completare i dati riportati nelle due tabelle, pre-
I microprocessori ST62/E si riconoscono facilmen- cisiamo che il numero a due cifre riportato dopo la
te perch al centro del loro corpo presente una sigla, ad esempio ST62E.10 - 15 - 20 - 25, ha un
piccola finestra (vedi fig.1) che permette di can- preciso significato.
cellare la EPROM interna tramite una lampada a
raggi ultravioletti. La prima cifra indica la memoria disponibile:
La lettera T, posta dopo la sigla ST62, indica che - se la prima cifra un 1 (vedi 10-15) sono dispo-
i dati memorizzati allinterno del microprocessore nibili 2 K di memoria,

PROGRAMMATORE per
non si possono pi cancellare e quindi nemmeno - se la prima cifra un 2 (vedi 20-25) sono dispo-
riscrivere. nibili 4 K di memoria.
Gli ST62/T si riconoscono facilmente perch sono
sprovvisti della finestra per la cancellazione (ve- La seconda cifra indica i piedini disponibili per i se-
di fig.1). gnali dingresso e duscita:
Solitamente i microprocessori ST62/E vengono u- - se la seconda cifra uno 0 (10-20) sono dispo-
sati per le prime prove, perch in presenza di un nibili 12 piedini,
eventuale errore nei programmi sempre possibi- - se la seconda cifra un 5 (15-25) sono disponi-
le cancellare e riscrive il software. bili 20 piedini.

TABELLA N.1 micro NON CANCELLABILI


Sigla memoria Ram zoccolo piedini utili
Micro utile utile piedini per i segnali
ST62T.10 2 K 64 byte 20 pin 12
ST62T.15 2 K 64 byte 28 pin 20
ST62T.20 4 K 64 byte 20 pin 12
ST62T.25 4 K 64 byte 28 pin 20

TABELLA N.2 micro CANCELLABILI


Sigla memoria Ram zoccolo piedini utili
Micro utile utile piedini per i segnali
ST62E.10 2 K 64 byte 20 pin 12
ST62E.15 2 K 64 byte 28 pin 20
ST62E.20 4 K 64 byte 20 pin 12
ST62E.25 4 K 64 byte 28 pin 20
microprocessori serie ST6
Si parla spesso dei vantaggi che offrono i microprocessori ST62 senza
per spiegare quello che interessa maggiormente, cio come fare per
programmarli e quale programmatore utilizzare. Al contrario noi vi spie-
gheremo come costruirvi un valido programmatore ed anche come si
deve procedere per programmare questi microprocessori.

Se osservate la zoccolatura di questi microproces- NMI - Questo piedino va sempre tenuto a livello
sori (vedi fig.2-3), potete leggere a fianco di ogni logico 1. Applicando a questo piedino un impulso
piedino una sigla, e poich non sempre viene pre- negativo, si informa la CPU di interrompere il pro-
cisato il loro esatto significato, sar utile spiegarlo. gramma che sta eseguendo e di passare automa-
ticamente ad eseguire una seconda e diversa
Vcc - Piedino di alimentazione positiva. Su que- subroutine (sottoprogramma).
sto piedino va applicata una tensione continua sta-
bilizzata di 5 volt. Vpp - Questo piedino serve per la programmazio-
ne. Durante la fase di programmazione questo pie-
TIMER - Applicando su questo piedino un livello dino, che normalmente si trova a 5 volt, riceve dal
logico 1, la frequenza del quarzo (vedi piedini 3- computer una tensione di 12,5 volt. Quando il mi-
4) divisa x12 potr giungere sullo stadio contato- croprocessore gi programmato viene inserito nel-
re. Da questo piedino possibile prelevare un se- la sua scheda di utilizzazione, si deve sempre te-
gnale ad onda quadra, la cui frequenza pu esse- nere questo piedino a livello logico 0, per evitare
re stabilita con le istruzioni del programma. di danneggiare i dati in memoria.

OSC./In-Out - Sui piedini 3-4 viene applicato un RESET - Questo piedino, che si trova sempre a li-
quarzo necessario per avere la frequenza di clock vello logico 1, resetta il microprocessore ogni vol-
che serve per far funzionare il microprocessore. ta che viene cortocircuitato a massa. Quando si u-
tilizza un microprocessore gi programmato, su ta- del Connettore, che normalmente si trova a livel-
le piedino occorre sempre collegare una resisten- lo logico 1, si commuta sul livello logico 0 e co-
za al positivo ed un condensatore verso massa, s la Base del transistor NPN siglato TR3 toglie il
in modo da avere un reset automatico ogni volta cortocircuito sul diodo zener DZ1 da 7,5 volt.
che si alimenta il microprocessore. In questo modo la tensione sulluscita dellintegra-
to stabilizzatore IC3 sale dai 5 volt iniziali a 12,5
PA - PB - PC - Sono le porte che la CPU pu u- volt (5 + 7,5 = 12,5).
tilizzare singolarmente come ingressi oppure co- Da questo istante i dati in scrittura giungono dal
me uscite tramite programma. Se le utilizzate co- computer sui terminali 4-6-5-7 del Connettore e,
me uscite, per non danneggiarle consigliabile prima di raggiungere il microprocessore ST62,
non collegare dei circuiti che assorbano pi di 5 vengono squadrati dai quattro inverter siglati
milliAmpere. Per pilotare dei circuiti che assorbo- IC1/E - IC1/A - IC1/B - IC1/F.
no pi di 5 mA, necessario interporre tra il mi- Le resistenze R7 - R5 - R6 - R8, che abbiamo po-
croprocessore ed il carico esterno dei transistor sto in serie agli ingressi di questi inverter, servo-
oppure un integrato tipo SN.74244 o 74HC244 o no per proteggerli nelleventualit che il CONN.1
74LS244. venga per errore collegato sulla presa Seriale del
computer anzich su quella Parallela.
GND - Piedino di alimentazione da collegare a Poich non labbiamo ancora precisato, vi segna-
massa. liamo fin da ora che il CONN.1 va inserito nella
PRESA PARALLELA del computer (presa LPT1),
SCHEMA ELETTRICO del PROGRAMMATORE alla quale normalmente collegata la stampante.
A memorizzazione completata, il computer ripor-
Lintero circuito programmatore visibile in fig.5 ta a livello logico 1 il piedino 3 del CONN.1 pola-
molto semplice perch richiede solo 3 transistor, rizzando cos la Base del transistor TR3, che por-
due NPN ed un PNP, due integrati stabilizzatori di tandosi in conduzione, cortocircuita a massa il
tensione uA.78L05 (vedi IC2-IC3), un integrato di- diodo zener DZ1.
gitale C/Mos tipo SN.74HC14 contenente sei in- Quando il diodo zener risulta cortocircuitato, sullu-
verter a trigger di Schmitt (vedi IC1) ed infine uno scita dellintegrato stabilizzatore IC3 la tensione
zoccolo textool a 28 piedini. scende da 12,5 a soli 5 volt ed in queste condi-
Su questo zoccolo andr infilato il microprocesso-
re ST62 che si vuole programmare.
Tutte le tensioni necessarie al microprocessore
ST62 vengono prelevate dal secondario del tra-
sformatore T1.
I 15 volt alternati, raddrizzati dal ponte RS1, forni-
scono una tensione continua di circa 20 - 21 volt
che raggiunge lEmettitore del transistor PNP si-
glato TR2.
Come si vede nel disegno dello schema elettrico,
la Base di questo transistor risulta collegata, tra-
mite la resistenza R3, al Collettore del transistor
NPN siglato TR1.
Quando questo transistor riceve dai piedini 2-1 del
Connettore collegato al computer la necessaria
tensione di polarizzazione, porta in conduzione il
transistor TR2 ed in questo modo la tensione po-
sitiva di 20 - 21 volt pu raggiungere gli ingressi
dei due integrati stabilizzatori siglati IC2 - IC3.
Lintegrato IC2 provvede a fornire sulla sua uscita
Fig.1 I microprocessori della serie ST62/T
una tensione stabilizzata di 5 volt per alimentare
sprovvisti di finestra NON sono cancella-
lintegrato IC1 ed i piedini 1-5 dellST62 a 28 pie- bili, mentre i microprocessori della serie
dini o il solo piedino 1 dellST62 a 20 piedini. ST62/E disponendo di una piccola finestra
Lintegrato IC3 provvede a fornire una tensione sta- SONO cancellabili. Il numero posto dopo la
bilizzata, sempre di 5 volt, sul piedino 10 dellST62 sigla T o E indica i Kilobyte di memoria e i
a 28 piedini o sul piedino 6 dellST62 a 20 piedini. piedini utili per i segnali di entrata e di u-
Quando tramite computer si desidera memorizza- scita (vedi Tabelle 1-2).
re un programma allinterno dellST62, il piedino 3
Vcc GND Vpp

1 20 6 Vcc 1 20 GND ST 62 E 10
TIMER 2 19 P A0
OSC. INP 3 18 P A1 ST 62 T 10
OSC. OUT 4 17 P A2
ALIMENTAZIONE Vpp MEMORY
NMI 5 16 P A3
Vpp 6 15 P B0
ST 62 E 20
RESET 7 14 P B1
WATCH
PORTA A P B7 8 13 P B2 ST 62 T 20
DOG
P B6 9 12 P B3
P B5 10 11 P B4

5
NMI NMI CPU PORTA B

7
RESET RESET

3
OSC. INP
OXILL. A/D CONVERTER TIMER
OSC. OUT
4

TIMER

Fig.2 Tutti i microprocessori siglati ST62/E10 e ST62/T10 hanno 2K di memoria utile, men-
tre quelli siglati ST62/E20 e ST62/T20 hanno 4K di memoria utile. Questi microprocesso-
ri a 20 piedini dispongono di 12 porte di entrata o di uscita. La porta A dispone di 4 en-
trate/uscite (PA1-PA2 ecc.), mentre la porta B di 8 entrate/uscite (PB1-PB2 ecc.)

Vcc GND Vpp

1 28 10 Vcc 1 28 GND ST 62 E 15
TIMER 2 27 P A0
OSC. INP 3 26 P A1 ST 62 T 15
OSC. OUT 4 25 P A2
ALIMENTAZIONE Vpp MEMORY
NMI 5 24 P A3
ST 62 E 25
P C7 6 23 P A4
P C6 7 22 P A5
WATCH
PORTA A P C5 8 21 P A6
ST 62 T 25
DOG
P C4 9 20 P A7
Vpp 10 19 P B0
RESET 11 18 P B1
5
NMI NMI CPU PORTA B P B7 12 17 P B2
P B6 13 16 P B3
P B5 14 15 P B4

11
RESET RESET PORTA C

3
OSC. INP
OXILL. A/D CONVERTER TIMER
OSC. OUT
4

TIMER

Fig.3 Tutti i microprocessori siglati ST62/E15 e ST62/T15 hanno 2K di memoria utile, men-
tre quelli siglati ST62/E25 e ST62/T25 hanno 4K di memoria utile. Questi microprocesso-
ri a 28 piedini dispongono di 28 porte di entrata o di uscita. Le porte A-B dispongono di
8 entrate/uscite (vedi PA1, PB1), mentre la porta C di 4 entrate/uscite (vedi PC1).
zioni nessun dato pu pi essere trascritto nella
memoria del microprocessore.
ELENCO COMPONENTI LX.1170
I due inverter IC1/C - IC1/D, collegati in parallelo
ed inseriti in senso inverso rispetto agli altri quat- R1 = 10.000 ohm 1/4 watt
tro inverter, vengono utilizzati dal computer per leg- R2 = 47.000 ohm 1/4 watt
gere i dati dallST62. R3 = 4.700 ohm 1/4 watt
Grazie a questa uscita il computer pu rileggere R4 = 10.000 ohm 1/4 watt
il programma caricato sul microprocessore e veri- R5 = 220 ohm 1/4 watt
ficare che non vi siano errori nella trascrizione dei R6 = 220 ohm 1/4 watt
dati. R7 = 220 ohm 1/4 watt
In presenza di un errore possibile cancellare il R8 = 220 ohm 1/4 watt
microprocessore e ricopiare nella sua memoria i *R9 = 1.500 ohm 1/4 watt
dati corretti, a patto che lintegrato inserito nel tex- C1 = 22 mF elettr. 25 volt
tool sia del tipo ST62/E. C2 = 100.000 pF poliestere
Nello schema pratico visibile in fig.7 abbiamo raffi- C3 = 100.000 pF poliestere
C4 = 100.000 pF poliestere
gurato lo zoccolo textool per i microprocessori con
C5 = 100.000 pF poliestere
28 piedini e non per i microprocessori con 20 pie-
C6 = 100.000 pF poliestere
dini, ma come vi spiegheremo pi avanti, lo stes-
*C7 = 1.000 mF elettr. 35 volt
so zoccolo viene utilizzato per entrambi i micro- DS1 = diodo EM.513 o 1N.4007
processori. *RS1 = ponte raddriz. 100 V. 1 A.
A questo punto possiamo passare alla descrizione DZ1 = zener 7,5 volt
della realizzazione pratica e subito dopo vi spie- *DL1 = diodo led
gheremo come procedere per la memorizzazione TR1 = NPN tipo BC.547
dei programmi-test che troverete nel dischetto TR2 = PNP tipo BC.327
floppy fornito assieme al kit. TR3 = NPN tipo BC.547
Sono inoltre in preparazione degli articoli teorico- IC1 = C/Mos tipo 74HC14
pratici per insegnarvi a scrivere alcuni dei pro- IC2 = uA.78L05
grammi che possono svolgere i microprocessori IC3 = uA.78L05
della serie ST62. *F1 = fusibile autoripr. 145 mA
Vi chiediamo per di concederci un po di tempo, *T1 = trasformatore 3 watt (TN00.01)
perch oltre a testare i programmi, vogliamo ricer- sec. 15 volt 0,2 Ampere
care tutte le possibili soluzioni per renderli com- *S1 = interruttore
CONN.1 = connettore 25 poli
prensibili a tutti.
Nota = I componenti contraddistinti dalla-
REALIZZAZIONE PRATICA sterisco andranno montati sul circuito
stampato siglato LX.1170/B.
La realizzazione pratica cos semplice che in bre-
vissimo tempo avrete gi disponibile il vostro pro-
grammatore montato e funzionante.
Sul circuito stampato a fori metallizzati siglato
LX.1170, dovete montare tutti i componenti richie- B
sti disponendoli come visibile in fig.7.
Potete iniziare inserendo e stagnando i piedini de- +V 13 12 11 10 9 8 E C
gli zoccoli per lintegrato IC1 e per il textool. BC327 - BC547
Questultimo deve essere inserito nello stampato
rivolgendo la leva di bloccaggio verso il basso, co- M
me appare chiaramente visibile nello schema pra- 1 2 3 4 5 6 GND
tico di fig.7. E U
Dopo questi due componenti potete inserire i due 74 HC 14
diodi: la fascia bianca presente sul corpo plastico uA 78L05
del diodo siglato DS1 va rivolta verso la resisten-
za R3, mentre la fascia nera presente sul corpo in
Fig.4 Connessioni dellSN.74HC14 viste da
vetro del diodo zener siglato DZ1 va rivolta verso
sopra e dei transistor NPN e PNP e dellinte-
lalto.
grato stabilizzatore uA.78L05 viste da sotto.
Proseguendo nel montaggio inserite tutte le resi-
stenze, i condensatori poliestere e lelettrolitico
T1 F1

S1
DS1
RS1
R9 RETE
R2 220 Volt
E C1 C7
B DL1

R3 C
CONN. 1
C TR2
R1 E U
B
2 TR1 IC2
D0
E M
STROBE C2 C3
1
GND
22
23 E U
24 IC3 1 28
25 C4 M C5
2 27
C
D1 R4 ST 62 / 15 - 25
B 3 26
3 DZ1
E 4 25
TR3 C6
5 1 20 24

6 2 19 6
23
R7 14 ST 62 / 10 - 20
D2 1 2
4 7 3 18 22

IC1 - A 8 4 17 21
R5 IC1 - E
D4 5 6
6 9 5 16 20
IC1 -C
10 11 10 6 15 19
BUSY
11 11 7 14 18
12 13
12 8 13 17
D3
R6
3 4
IC1 - D
5 13 9 12 16

IC1 - B IC1 - F 14 10 11 15
D5 R8
9 8
7
7

Fig.5 Schema elettrico del programmatore per micro ST62. Il CONN.1 a 25 poli posto sul-
la destra andr collegato con un cavetto seriale alla porta PARALLELA del computer, cio
dove ora risulta collegata la STAMPANTE. Dopo aver sfilato il connettore della stampan-
te, dovrete innestare il connettore proveniente da questo PROGRAMMATORE.

C1, che come visibile nello schema pratico di fig.7, e controllando con molta attenzione le loro sigle, in
deve essere collocato in posizione orizzontale. quanto uno un PNP e laltro un NPN.
A questo punto potete inserire i tre transistor ed i Per completare il montaggio non vi resta che inse-
due integrati stabilizzatori e poich questi ultimi rire sulla parte alta dello stampato il connettore ma-
hanno le stesse dimensioni dei transistor, dovete schio duscita ed infilare nel suo zoccolo lintegra-
controllare attentamente la loro sigla prima di sal- to 74HC14, rivolgendo la sua tacca di riferimento
darli sullo stampato. verso destra.
Come potete vedere nello schema pratico di fig.7,
la parte piatta dei due 78L05 (IC2 - IC3) va rivol- Lo stadio di alimentazione verr montato sul cir-
ta verso destra e cos dicasi per il transistor BC.547 cuito stampato siglato LX.1170/B, e poich questo
siglato TR1.Gli altri due transistor, siglati TR2 (un un monofaccia, in fig.8 potete osservare le sue
BC.327) e TR3 (un BC.547), vanno inseriti rivol- dimensioni a grandezza naturale.
gendo la parte piatta del loro corpo verso il basso Su questo stampato potete inserire come primo
Fig.6 In questa foto potete vedere come si Fig.7 Schema pratico di montaggio dello
presenta questo programmatore dopo aver stadio siglato LX.1170 e, a destra, del suo
montato tutti i suoi componenti. Si noti sul- alimentatore siglato LX.1170/B. Facciamo
la parte inferiore del circuito stampato lo presente che il CONN.1 pu avere una for-
zoccolo textool, che vi permetter di in- ma diversa da come labbiamo disegnata.
serire tutti i microprocessori da program- Se sul connettore fossero presenti due tor-
mare senza sforzare i loro piedini. rette (vedi foto), occorrer toglierle.
Fig.8 Disegno a grandezza na-
turale del circuito stampato
dello stadio alimentatore
LX.1170/B visto dal lato rame.

componente il trasformatore di alimentazione, i cui mentatore utilizzando i distanziatori plastici con ba-
piedini risultano gi predisposti per entrare solo nel se autoadesiva che trovate nel kit.
loro giusto verso. Sul piccolo pannello della consolle va invece fis-
Quindi proseguite e completate il montaggio anche sato il portaled e linterruttore di rete S1.
di questo stampato inserendo il ponte raddrizza-
tore, il condensatore elettrolitico C7 rispettando la A questo punto dovete effettuare i pochi collega-
polarit dei due terminali, la resistenza R9, che ser- menti richiesti per portare la tensione di alimenta-
ve ad alimentare il diodo led, ed il fusibile autori- zione allinterfaccia LX.1170, al diodo led ed allin-
pristinante siglato F1. terruttore di rete (vedi figg.7-8).

MONTAGGIO NEL MOBILE COME COLLEGARLO al COMPUTER

Linterfaccia verr fissata dentro un piccolo mobile Dopo aver montato il programmatore siglato
plastico tipo consolle (vedi fig.11). LX.1170 dovete collegarlo alla presa della porta
Come prima operazione fissate sul mobile il suo parallela del computer, cio a quella che ora uti-
pannello frontale utilizzando delle viti del diame- lizzate per la stampante. Questa porta si distingue
tro di 2 mm o delle piccole viti autofilettanti. da quella seriale perch femmina.
Su tale pannello fissate con quattro viti lo stampa- Per questo collegamento non potete usare il con-
to LX.1170, ma prima di eseguire questa opera- nettore che sfilerete dalla stampante, perch que-
zione dovete stagnare sui due terminali di alimen- sto non pu innestarsi nel connettore maschio
tazione uno spezzone di filo rosso per il positivo presente sulluscita del programmatore.
ed uno di filo nero per il negativo. Per collegare il programmatore al computer potete
Sul piano del mobile fissate lo stampato dellali- usare un qualsiasi cavo seriale provvisto ad una
estremit di un connettore maschio che va inne-
stato nel computer, e dallaltra di un connettore
femmina che va innestato nel programmatore.

IL COMPUTER da USARE

Per programmare gli ST62 bisogna disporre di un


qualsiasi personal computer IBM compatibile, non
importa se europeo o se costruito ad Hong-Kong o
a Taiwan.
A tutti coloro che ci chiedono perch presentiamo
programmi per soli IBM compatibili rispondiamo
che la maggior parte dei programmi reperibili fun-
zionano sotto DOS e poich questo il sistema o-
perativo usato su tutti i computer IBM compatibi-
li non possibile adattare i programmi scritti per
DOS per i computer tipo APPLE - AMIGA - AM-
STRAD ecc.
Fig.9 Foto dello stadio di alimentazione che
Questa scelta non nostra, ma delle Case di una volta montato dovrete fissare sul co-
software che avendo constatato che i computer perchio del mobile con tre distanziatori pla-
IBM compatibili sono i pi diffusi in Europa - A- stici autoadesivi (vedi fig.10).
merica - Asia, si sono orientate a realizzare solo
programmi per DOS.
In questo modo le Case di software vendono un
numero maggiore di programmi, quindi riducono i
costi di copyright ed in pi hanno la certezza che
questi programmi funzioneranno su qualsiasi mo- Fig.10 Lo stampato del programmatore si-
dello e marca di computer, perch usati sul siste- glato LX.1170 andr fissato sul pannello del
ma operativo pi diffuso. mobile con quattro viti pi dado. Sul pan-
Ritornando al computer IBM compatibile, non im- nello inclinato dello stesso mobile fisserete
porta di quale marca o tipo e neanche se il modello il portaled e linterruttore di accensione.
vecchio o nuovo, deve soltanto essere dotato di
Fig.11 Il mobile scelto per questo programmatore completo delle sue mascherine gi fo-
rate e serigrafate fornisce al progetto un aspetto molto professionale. Quello che pi ap-
prezzerete di questo progetto la facilit con cui riuscirete, con il dischetto da noi forni-
to, a programmare qualsiasi tipo di microprocessore ST62.

una scheda grafica che rientri nel tipo CGA - Per iniziare a prendere confidenza con i micropro-
EGA - VGA - SuperVGA. cessori ed imparare a trasferire su questi un pro-
gramma presente nellHard-Disk, abbiamo ag-
giunto nello stesso dischetto tre semplici pro-
INSTALLAZIONE del PROGRAMMA grammi, che una volta trasferiti allinterno di un
ST62 vi permetteranno di verificare se avete ese-
Con il kit riceverete il dischetto floppy fornito dal- guito correttamente tutte le operazioni di trasferi-
la SGS Thomson, indispensabile per poter pro- mento dati.
grammare tutti i microprocessori della serie ST62. Per copiare nellHard-Disk quanto contenuto in
In questo dischetto abbiamo inserito dei program- questo dischetto dovete eseguire soltanto poche
mi che vi permetteranno di semplificare tutte le o- semplici istruzioni.
perazioni necessarie per scrivere un programma, Quando, dopo aver acceso il computer, sul moni-
per modificarlo e poi assemblarlo ed ovviamen- tor appare la scritta C:\>, inserite il dischetto nellu-
te per trasferirlo allinterno della memoria di un mi- nit floppy poi digitate:
croprocessore ST62.
C:\>A: poi Enter
Il programma vi indicher inoltre se avete com-
A:\>installa poi Enter
messo degli errori, se avete inserito un ST62 bru-
ciato, se la memoria del microprocessore vergi- Nota: Usate solo queste istruzioni e non altre, co-
ne o gi occupata da un altro programma. me ad esempio il COPY del DOS o le istruzioni dei
programmi tipo PCSHELL - PCTOOLS - NORTON
Commander, perch il programma non funzione-
rebbe.

Con le due semplici istruzioni trascritte sopra, crea-


te automaticamente una directory chiamata ST6,
nella quale vengono memorizzati tutti i files conte-
nuti nel dischetto.
Durante loperazione di scompattazione appare sul
monitor lelenco dei files (vedi fig.13).
Quando il programma interamente memorizzato,
appare un messaggio a conferma che linstallazio-
ne stata completata.
Il programma scompattato occupa circa 1 Me-
Fig.12 Per trasferire nellHard-Disk i pro- gabyte di memoria.
grammi contenuti nel dischetto dovete di- Se non premete nessun tasto, dopo qualche mi-
gitare A:\>INSTALLA poi premere Enter. nuto compare la scritta:
Tutti i programmi verranno memorizzati nel-
la directory C:\ST6. C:\ST6>

Se volete uscire dalla directory ST6 sar suffi-


ciente digitare:

C:\ST6>CD \ poi Enter

e comparir cos sul monitor C:\>.

Una volta installato il programma nellHard-Disk po-


tete mettere da parte il dischetto floppy, perch
non vi servir pi.

COME si RICHIAMA il PROGRAMMA


Fig.13 Poich i programmi nel dischetto ri-
sultano compattati, durante loperazione di Tutte le volte che volete richiamare il programma
scompattazione apparir sul monitor linte- ST6, quando sul monitor appare C:\> dovete digi-
ro elenco dei files. Il programma occupa 1 tare queste semplici istruzioni:
Mega circa di memoria.
C:\>CD ST6 poi Enter
C:\ST6>ST6 poi Enter

Se dovesse comparire una directory diversa da


C:, ad esempio:

C:\JVFAX>

dovete digitare:

C:\JVFAX>CD \ poi Enter


C:\>CD ST6 poi Enter
C:\ST6>ST6 poi Enter

Fig.14 Scompattati tutti i programmi con Sul monitor comparir cos il menu principale (ve-
successo, il computer ve lo segnaler fa- di fig.15).
cendo apparire sul monitor questa scritta.
Per uscire da questa finestra pigiate un ta- Nota: Le scritte colorate in azzurro appaiono di-
sto qualsiasi. rettamente sul monitor, quelle senza colore dovre-
te digitarle dalla tastiera.
Fig.15 Richiamando il programma con Fig.18 Premendo il tasto P = Programma do-
C:\>ST6 Enter, C:\ST6>ST6 Enter, vedrete po pochi secondi apparir sul monitor del
apparire sul monitor questo menu. Se computer il software della SGS scritto in
premete il tasto funzione F3 apparir la fi- lingua inglese. Per continuare pigiate un
nestra di fig.16. qualsiasi tasto.

Fig.16 Premendo F3, appariranno in questa Fig.19 Sullo schermo apparir una lista con
finestra i programmi test da noi inseriti, tutti i tipi di ST6 che potete programmare e
cio Conta - Led - Lotto che potrete trasfe- che sono circa 20. Per selezionare la sigla
rire, come spiegato nellarticolo, su un mi- del vostro microprocessore usate i tasti
croprocessore ST6 vergine. freccia su e gi.

Fig.17 Se portate il cursore sulla scritta ST6 Fig.20 Poich dovete programmare un
e premete Enter o pigiate i tasti Alt+T, ap- ST62E10 portate il cursore su questa sigla
parir questa finestra che vi permetter di poi pigiate Enter. Sullo schermo apparir
programmare lST6 inserito nello zoccolo questa finestra con in basso lindicazione
textool del programmatore. dellST62E10.
Fig.21 Dalla finestra di fig.20 premete il ta- Fig.24 Quando compare questa scritta, non
sto L = Load e apparir questa finestra. Qui toccate pi nessun tasto, perch il compu-
dovete scrivere il nome del programma che ter dopo aver verificato che lST62E10 ver-
volete trasferire dallHard-Disk al micropro- gine, provvede a programmarlo impiegan-
cessore ST62E10. do circa 9-15 secondi.

Fig.22 Dopo aver pigiato Enter apparir la Fig.25 Completata la programmazione, sul-
scritta File checksum per avvisarvi che il lo schermo apparir questa scritta. A que-
computer ha selezionato il programma, ma sto punto pigiate un qualsiasi tasto e cos
non lha ancora trasferito sul micro vergi- ritornerete al menu di fig.20. Per uscire ba-
ne. Per continuare premete un tasto. ster premere X.

Fig.23 Pigiando un qualsiasi tasto apparir Fig.26 Quando sul monitor appare il menu
la finestra di fig.20. Per programmare di fig.20, se volete proteggere il micro dal-
lST62E10 che avete inserito nello zoccolo la lettura dovete premere il tasto K = locK
textool del programmatore pigiate il tasto P poi Y. LST62E10 anche se protetto si pu
= Prg e di seguito il tasto N. cancellare.
A questo punto molti penseranno di aver gi risol- re nel microprocessore. In questo file abbiamo vo-
to tutti i loro problemi, ma poich non nostra a- luto inserire tutte le istruzioni standard che occor-
bitudine illudere nessuno, vogliamo subito precisa- re richiamare in ogni programma e che vi risulte-
re che se non conoscete larchitettura di un mi- ranno utilissime nel prossimo articolo, dedicato al-
croprocessore e non avete ancora una seppure le istruzioni dei programmi per ST62.
minima conoscenza generale di come scrivere un
programma, saranno necessari dai 3 ai 6 mesi di Di questi files ne dovete scegliere uno solo, per-
pratica per poter diventare autosufficienti. ch allinterno di un microprocessore potete inse-
Per questo motivo abbiamo inserito nel dischetto rire un solo programma alla volta.
tre semplici programmi che oltre a servirvi per ef- Ammesso di aver scelto il primo, cio LED.ASM,
fettuare le prime prove pratiche di trasferimento di dovete ricordare il solo nome LED tralasciando le-
dati verso le memorie del microprocessore, po- stensione .ASM, che non vi serve durante la pro-
tranno esservi utili per capire come si imposta un grammazione del microprocessore.
programma per ST62. Vi spiegheremo infatti an- Lestensione .ASM labbreviazione della parola
che come richiamare e visualizzare tutte le istru- Assembler.
zioni dei vari programmi. A questo punto potete uscire da questa finestra
premendo il tasto Escape e vedrete riapparire la
CARICARE un PROGRAMMA pagina del menu principale (vedi fig.15).

Per trasferire allinterno della memoria vergine di Tenendo premuto il tasto ALT dovete premere il ta-
un microprocessore ST62 uno dei tre programmi sto T = ST6 ed apparir una finestra con in alto la
che noi abbiamo scritto, bisogna innanzitutto inse- scritta Assembla - Programma (vedi fig.17).
rire il microprocessore nello zoccolo textool e bloc-
carlo spostando verso il basso la levetta. Premete ora il tasto P = Programma, e dopo al-
Nel kit del programmatore troverete un ST62E10 cuni secondi comparir lintestazione del software
che ha una memoria EPROM utile di 2 Kbyte. di programmazione della SGS in lingua inglese (ve-
Ovviamente potete caricare uno dei nostri pro- di fig.18).
grammi anche su un ST62E25 da 4 Kbyte di me-
moria EPROM, che per oltre ad essere pi co- Per continuare dovete pigiare un qualsiasi tasto e
stoso, non pu essere utilizzato sulla scheda spe- cos comparir la finestra di fig.19.
rimentale LX.1171, pubblicata su questa rivista,
perch ha 28 piedini. Premendo i tasti frecce gi o su, potete visualiz-
Poich LST62E10 ha soltanto 20 piedini, dovete zare e selezionare tutti i tipi di microprocessori
collocarlo nello zoccolo come visibile in fig.27, cio ST62 che questa interfaccia in grado di pro-
in basso e rivolgendo la tacca di riferimento ver- grammare.
so lalto. Poich dovete programmare un ST62E10, andate
Eseguita questa operazione potete richiamare il con il cursore sulla riga in cui appare questa scrit-
programma (vedi paragrafo Come si richiama il ta e pigiate Enter.
Programma).
Quando sul monitor del vostro computer appare il Sul monitor comparir la pagina di fig.20 ed in bas-
menu di fig.15, per proseguire dovete conoscere il so a destra vedrete la sigla del tipo di micropro-
nome del file da trasferire e per questo dovete sem- cessore selezionato, che nel nostro caso :
plicemente premere: DEVICE: ST62E10.

F3 Pigiate il tasto L = Load e nella maschera che ap-


pare scrivete il nome del file che volete memoriz-
Sullo schermo apparir una nuova finestra con le- zare allinterno dellST62E10.
lenco dei programmi presenti in memoria (vedi fig.
16). I programmi scritti da noi hanno questi nomi: Poich per questo esempio abbiamo scelto il file
LED, scrivete questo nome nella riga (vedi fig.21)
CONTA.ASM poi premete Enter.
LED.ASM
LOTTO.ASM Dopo pochi secondi comparir una seconda fine-
stra rossa (vedi fig.22) con scritto File checksum
Nota: Oltre a questi tre files ne troverete un quar- = un numero esadecimale di controllo.
to chiamato STANDARD.ASM, che a differenza Poich questo numero non vi serve, pigiate un
degli altri, non contiene un programma da carica- qualsiasi tasto.
Fig.27 Tutti gli ST62 a 20 piedini
andranno inseriti nello zoccolo
textool in basso rivolgendo ver-
so lalto la tacca di riferimento.
Anche gli ST62 a 28 piedini an-
dranno inseriti nello zoccolo tex-
tool rivolgendo verso lalto la tac-
ca di riferimento.

Apparir cos la finestra bianca visibile in fig.20 e completata, potete gi estrarre lST62 dallo zoc-
a questo punto dovete solo pigiare il tasto P = Prg colo textool per inserirlo nel circuito siglato
e sul monitor vedrete la pagina visibile in fig.23. LX.1171 (vedi articolo su questa rivista a pag.56).

Ora pigiate il tasto N in modo che il computer inizi Per uscire dal programma premete un tasto qual-
a controllare il microprocessore inserito nello zoc- siasi e di seguito il tasto X. Ritornerete cos al me-
colo textool. nu principale di fig.15.

Nota: Non pigiate mai il tasto Y e se per sbaglio GLI ERRORI che possono COMPARIRE
lo premete, annullate questo comando pigiando il
tasto Escape, quindi premete ancora il tasto P e di Pu succedere che per disattenzione premiate il ta-
seguito N. sto sbagliato o che il microprocessore che inserite
nello zoccolo textool sia difettoso.
Dopo aver premuto N sul monitor apparir questa In questi casi sar il programma a segnalarvi con
scritta: alcuni messaggi in inglese lanomalia o lerrore
commesso cosicch possiate correggerlo.
Verifying the target chip ... Please Wait
Verifica chip da programmare ... attendi Target Chip not presente or defective
Lintegrato non c o difettoso
Se tutto risulta regolare, dopo pochi secondi ap-
parir sul monitor la finestra di fig.24 con la scrit- Questo messaggio appare ogni volta che vi di-
ta: menticate di inserire il microprocessore nello zoc-
colo textool oppure quando il microprocessore che
Programming the target chip ... Please wait! avete inserito bruciato.
Programmazione in corso ... attendi! Non sempre per il microprocessore fuori uso,
perch questo identico messaggio appare anche
Loperazione di scrittura dei dati dal computer ver- quando:
so le memorie del microprocessore ST62 richie-
de circa 9 - 15 secondi. - avete inserito il microprocessore nello zoccolo
textool rivolgendo la tacca di riferimento verso il
A programmazione completata sul monitor appare basso anzich verso lalto, come visibile in fig.27.
questa scritta (vedi fig.25):
- non avete innestato bene i connettori nel com-
The device is successfully programmed puter o nellinterfaccia LX.1170.
Microprocessore programmato con successo
- vi siete dimenticati di accendere linterfaccia del
Poich loperazione di caricamento dati nellST6 programmatore.
Device already programmed alzasse inavvertitamente la levetta dello zoccolo
Continue Programming? Y/N textool, i piedini dellintegrato non sarebbero pi a
Lintegrato gi programmato contatto e quindi non entrerebbe pi alcun dato nel
vuoi continuare? Si/No microprocessore.
Poich qualche dato pu gi essere entrato
Questo messaggio compare quando nello zoccolo nellST62, ripetendo tutte le operazioni di trasferi-
textool avete inserito un microprocessore ST62 mento il computer si accorger che nelle memorie
che risulta gi programmato. gi presente un programma e subito lo segna-
In questo caso dovete premere il tasto N per ritor- ler.
nare cos alla finestra di fig.20. Anche in questo caso premendo il tasto Y, il com-
A questo punto potete togliere dallo zoccolo tex- puter completer linserimento dei dati che in pre-
tool il microprocessore per cancellarlo (vedi pa- cedenza non erano stati memorizzati.
ragrafo Per cancellare un ST62/E) e quindi ripro-
grammarlo oppure inserire nello zoccolo un ST62 Program result: Device fail at address xxx
vergine e ripetere tutte le operazioni per la pro- Trovato un errore allindirizzo xxx
grammazione.Vi chiederete allora a cosa serve il
comando Y, che conferma al programma di prose- Dove xxx un numero esadecimale.
guire nella programmazione. Questo messaggio appare ogniqualvolta il compu-
Se premete il tasto Y lasciando nello zoccolo tex- ter non riesce a trasferire correttamente i dati nel-
tool lST62 gi programmato, non accadr nulla, la memoria del microprocessore.
cio il programma presente al suo interno non si Normalmente questo si verifica quando il micro-
canceller ed il nuovo non sar mai memorizza- processore ST62 gi stato riprogrammato pi di
to nella sua memoria. un centinaio di volte.
Poich nessuno ha mai chiarito quando possibi- Se questo messaggio compare spesso, consi-
le usare il comando Y, cercheremo di spiegarvelo gliabile sostituire il microprocessore.
noi utilizzando degli esempi.
Se durante la fase di programmazione, quando Per CARICARE un altro PROGRAMMA
allinterno della memoria del microprocessore gi
stato trasferito un 50% di dati, venisse improvvisa- Se volete riutilizzare un microprocessore gi pro-
mente a mancare la corrente di rete, voi vi trove- grammato per trasferire nella sua memoria un di-
reste con un microprocessore programmato per verso programma, dovete prima di tutto cancella-
met che risulterebbe inutilizzabile. re i dati al suo interno, dopodich potete ripetere
Una volta ritornata la corrente, il computer leg- tutte le operazione gi descritte.
gendo allinterno dellST62 anche solo una parte di Proseguendo nel nostro esempio, se dopo aver
programma, lo considerer gi programmato, ma memorizzato il programma LED volete provare le
se in questo caso premerete il tasto Y, il computer funzioni del programma CONTA ed in seguito quel-
trasferir nella memoria dellST62 il restante 50% le del programma LOTTO, solo dopo aver cancel-
di programma mancante. lato il microprocessore potrete trasferire dal com-
Sempre durante la fase di programmazione, se si puter i dati contenuti in uno di questi files.

Fig.28 Per cancellare i microprocessori della serie ST62/E e tutti i tipi con EPROM, oc-
corre esporre la loro finestra alla luce emessa da una lampada ultravioletta da 2.300-2.700
Angstrom. Poich queste lampade non sono facilmente reperibili, abbiamo provveduto ad
ordinarne un certo numero ed appena ci perverranno ( prevista una consegna entro set-
tembre) vi presenteremo un completo progetto provvisto di temporizzatore.
Per PROTEGGERE un ST62 re ai 50 minuti non sono garantite pi di 70 - 80
cancellazioni.
Dopo aver constatato che il microprocessore pro- Se volete usare un solo microprocessore per ef-
grammato funziona correttamente e siete certi che fettuare tantissime prove di memorizzazione e
non volete pi apportare modifiche al programma, cancellazione, potete collegare la lampada ad u-
ed inoltre non avete pi alcuna necessit di rileg- no dei tanti temporizzatori o timer per lampade da
gere i dati memorizzati al suo interno, vi conviene 220 volt pubblicati sulla nostra rivista (ad esempio
proteggerlo. il Kit LX.1068 pubblicato sulla rivista N.153), che
Un microprocessore protetto tipo ST62/E si pu potrete regolare per una accensione massima di
cancellare per renderlo idoneo a ricevere altri pro- 10 minuti circa.
grammi.
Per proteggere un microprocessore, sia del tipo A lampada accesa non fissate ASSOLUTAMEN-
ST62/T che del tipo ST62/E, lo si deve lasciare in- TE la luce viola che emette, perch nuoce grave-
serito nello zoccolo textool e procedere come ora mente agli occhi.
vi spiegheremo. Per evitare questo inconveniente si potr mettere
sopra la lampada un panno o una scatola di car-
Quando sul monitor appare il menu principale (ve- tone.
di fig.15), tornate nel menu di programmazione pre-
mendo Alt+T e di seguito P e apparir la fig.19. CONCLUSIONE
Selezionata la sigla del microprocessore che ave-
te inserito nello zoccolo textool, quando appare il Su questo stesso numero troverete un semplice
menu di fig.20 premete il tasto K = Lock e cos ap- progetto che oltre a permettervi di controllare se il
parir sul monitor la finestra di fig.26. microprocessore programmato con uno dei tre pro-
Per proteggerlo sar sufficiente premere il tasto grammi da noi inseriti nel dischetto, cio LED -
Y, se non lo volete proteggere premete il tasto N. CONTA - LOTTO, funziona correttamente, vi con-
sentir di fare un po di pratica sulla cancellazio-
ne di un ST62/E e sulla riprogrammazione.
Per CANCELLARE un ST62/E In questo articolo vi insegneremo anche ad appor-
tare delle semplici varianti sul programma, men-
Tutti i microprocessori della serie ST62/E, cio tre nei prossimi articoli vi spiegheremo tutto il set
quelli provvisti di una piccola finestra (vedi fig.1), di istruzioni per i microprocessori ST62, perch
una volta programmati si possono cancellare e solo conoscendo il significato di queste istruzioni
poi nuovamente riprogrammare per utilizzarli con potrete un domani realizzare programmi persona-
un diverso programma. lizzati per far svolgere agli ST62 tutte le funzioni a
Per cancellare questi microprocessori occorre una voi necessarie.
lampada ultravioletta che lavori su una lunghez-
za donda compresa fra i 2.300 e i 2.700 Angstrom.
Sotto questa lampada va collocato il microproces-
sore tenendo la sua finestra ad una distanza di cir-
ca 2 centimetri. COSTO DI REALIZZAZIONE
A questa distanza per cancellare un microproces-
sore occorrono dai 15 ai 20 minuti, sempre che la Costo di realizzazione dello stadio LX.1170 (vedi
finestra risulti pulita. figg.6-7) completo di circuito stampato, zoccolo
Se sopra tale finestra c della sporcizia, ad e- Textool, connettore duscita, transistor, integrati
sempio rimangono dei residui di collante dopo a- con INSERITO un microprocessore ST62/E10, un
ver rimosso unetichetta autoadesiva, dovrete pri- dischetto floppy contenenti i programmi richiesti, ed
ma pulirla con un batuffolo di cotone imbevuto di il CAVO seriale completo di connettori, ESCLUSI il
alcool o di acetone. mobile e lo stadio di alimentazione .......... 49,10
Poich la lunghezza del bulbo di una lampada ul-
travioletta di circa 30 cm, potete cancellare con- Costo di realizzazione dello stadio di alimentazio-
temporaneamente pi ST62/E disponendoli uno di ne LX.1170/B (vedi fig.8) completo di cordone di a-
fianco allaltro (vedi fig.28). limentazione.............................................. 11,60

Il mobile MO.1170 completo delle due mascherine


NOTE per la LAMPADA UV forate e serigrafate ................................... 16,01

Se vi dimenticate il microprocessore sotto la lam- Costo del solo stampato LX.1170 .............. 5,42
pada a raggi ultravioletti per una tempo superio- Costi del solo stampato LX.1170/B ............ 1,55
Vogliamo subito precisare che questo circuito ser- Nel CONN.1 dovete inserire la scheda con i dio-
ve per testare i programmi che avete imparato a di Led, se avete memorizzato nellST62E10 il
trasferire nel microprocessore ST62E10 fornito nel programma LED o la scheda con i due Display
kit del programmatore. se avete memorizzato nellST62E10 il program-
Lo stesso circuito pu essere utilizzato anche per ma CONTA o LOTTO.
i programmi che vorrete scrivere, a patto che con- Per alimentare questa scheda occorre una ten-
figuriate le porte come le abbiamo configurate noi, sione stabilizzata di 5 volt 200 milliAmpere cir-
diversamente non potrete sfruttarlo. ca.

In questo circuito di prova, che potete vedere in REALIZZAZIONE PRATICA


fig.1, vi sono due integrati, ma quello che abbiamo
siglato IC1 in pratica il microprocessore Sul circuito stampato siglato LX.1171 dovete
ST62E10 che dovete prima programmare, mentre montare tutti i componenti disponendoli come vi-
lintegrato IC2, che trovate inserito nel kit, un sibile in fig.12.
74LS244 utilizzato come buffer di corrente. Lo schema cos semplice che non ha certo bi-
Infatti dovete tenere presente che sulle uscite sogno di particolari consigli, comunque una vol-
dellST62E10 non possibile applicare dei carichi ta stagnati tutti i terminali degli zoccoli e del con-
che assorbano pi di 5 mA, e poich questo cir- nettore consigliabile controllare con una lente
cuito viene utilizzato per accendere dei diodi led dingrandimento che non vi sia una goccia di sta-
e dei display che assorbono una corrente mag- gno tra due piedini che provochi un corto.
giore, abbiamo dovuto adoperare lintegrato Come visibile nel disegno dello schema pratico

CIRCUITO TEST per


Dopo aver imparato come memorizzare un programma allinterno di un
microprocessore ST62E10, e aver constatato di persona che non poi
cos difficile come viene invece descritto in altre parti, sarete assaliti
dalla curiosit di testarlo e per questo vi occorre soltanto il semplice
circuito che ora vi presentiamo.

74LS244, che in grado di sopportare carichi fino conviene collocare il quarzo in posizione orizzon-
ad un massimo di 20 mA. tale, saldando il suo corpo sul circuito stampato
Sempre guardando lo schema elettrico, sui piedini con una goccia di stagno.
3-4 dellST62E10 trovate collegato un quarzo da 8 Nello zoccolo IC2 (quello posto in alto verso il
MHz, che serve al microprocessore per generare CONN.1) inserite lintegrato 74LS244 rivolgendo la
la frequenza di clock necessaria per il suo funzio- tacca di riferimento verso il condensatore C2.
namento. Nello zoccolo IC1 inserite dopo averlo program-
La frequenza di questo quarzo non critica, quin- mato il microprocessore ST62E10, rivolgendo la
di potrete utilizzare anche quarzi di frequenza in- tacca di riferimento verso il condensatore C1.
feriore, ad esempio 7 - 6 - 4 MHz, tenendo co- Completato il montaggio di questo stampato pote-
munque presente che pi si scende di frequenza, te prendere lo stampato siglato LX.1171/B e su
pi lenta risulta la velocit di esecuzione del pro- questo saldare il connettore maschio, tutte le re-
gramma. sistenze dalla R3 alla R10 ed i diodi led, come vi-
Non utilizzate quarzi con una frequenza maggiore sibile in fig.14.
di 8 MHz, perch il microprocessore non riuscir a Quando inserite i diodi led nel circuito stampato do-
generare la necessaria frequenza di clock. vete rivolgere il terminale pi corto (terminale K)
Dei tre pulsanti presenti nel circuito, quelli siglati verso le resistenze.
P1 - P2 svolgono le funzioni rese disponibili dal pro- Lultimo stampato, quello siglato LX.1171/D, prov-
gramma, mentre P3 serve sempre e solo come co- visto di due display vi servir per testare i pro-
mando di reset. grammi CONTA e LOTTO.
microprocessore ST62E10
Come visibile in fig.15 su questo stampato fissate Questa stessa operazione va effettuata se dopo a-
le resistenze da R1 ad R8, che sono da 220 ohm, ver trasferito il programma LED volete sostituirlo
e le due resist,enze R9 - R10 che sono invece da con il programma CONTA o con il programma LOT-
4.700 ohm, poi il connettore maschio, i due tran- TO.
sistor TR1 - TR2 rivolgendo la parte piatta del loro
corpo verso destra e per ultimi montate i due di-
splay, rivolgendo il lato con i punti decimali verso
il basso. COLLAUDO MICROPROCESSORE
nel CIRCUITO TEST
IMPORTANTE
Dopo aver realizzato il circuito test siglato LX.1171
Se nel microprocessore ST62E10 avete memoriz- potete collaudare il microprocessore che avete im-
zato i dati del programma LED, dovrete inserire parato a programmare con uno dei tre semplici pro-
nel CONN.1 della scheda LX.1171 la scheda con grammi LED - CONTA - LOTTO, come vi abbiamo
gli 8 diodi led, se avete memorizzato i dati del pro- spiegato nellarticolo precedente.
gramma CONTA o del programma LOTTO, do- Per prima cosa dovete inserire nello zoccolo a 20
vrete inserire la scheda con i 2 display. piedini del circuito test LX.1171 il microprocesso-
Se per errore scambiate le schede, non causere- re appena programmato, rivolgendo la sua tacca di
te nessun danno n allintegrato IC2 n al micro- riferimento verso il condensatore C1 (vedi fig.12).
processore IC1, quindi baster inserire la scheda Dopo questa operazione, se avete programmato il
giusta per vedere il circuito funzionare. microprocessore con il programma LED dovete in-
Se il circuito non funziona, potreste esservi sba- nestare nel connettore femmina del circuito test
gliati nel memorizzare il programma nelle memo- LX.1171 il circuito applicativo a diodi led siglato
rie del microprocessore. LX.1171/B.
In questo caso dovrete esporlo sotto una luce ul- Se invece avete programmato il microprocessore
travioletta per cancellare i dati dalla sua memoria, con uno qualsiasi dei due programmi CONTA o
quindi dovrete riprogrammarlo. LOTTO, dovete innestare nel connettore femmina
DL1 DL2 DL3 DL4 DL5 DL6 DL7 DL8

R3 R10 ELENCO COMPONENTI LX.1171 (test St6)

1 5 4 3 11 2 8 9 10 R1 = 10.000 ohm 1/4 watt


R2 = 10.000
ELENCO ohm 1/4LX.1171
COMPONENTI watt
*R3-R10 = 100 ohm 1/4 watt
1 5 4 3 11 2 8 9 10 12 6 7
CONN. 1
R1 C1 = 100.000
= 10.000 ohmpF 1/4poliestere
watt
R2 = 10.000 ohm 1/4poliestere
C2 = 100.000 pF watt
DS1 C3 = =22100
pFohm
a disco
*R3-R10 1/4 watt
C1 C4 = 22 pFpF
= 100.000 a disco
poliestere
C5 = 1 mF elettr. 63 volt
C2 = 100.000 pF poliestere
5 V. C3 DS1
= 22 =pFdiodo EM.513 o 1N.4007
a disco
18 16 3 14 5 7 12 9
C2 1 C4*DL1-DL8
= 22 pF a=disco
diodi led
20 IC2 19 C5 = 1 mF elettr. 638 volt
XTAL = quarzo MHz

2 4 17 6 15 13 8 11
10 DS1IC1 = vediEM.513
= diodo nota o 1N.4007
IC2 = TTL
*DL1-DL8 tipoled
= diodi 74LS244
P1-P3 = pulsanti
XTAL = quarzo 8 MHz
B0 B1 B2 B3 B4 B5 B6 B7
C1
15 14 13 12 11 10 9 8 17
IC1CONN.1 = connettore 12 poli
= vedi nota
1 16
IC2 = TTL tipo 74LS244
2 IC1 20
Nota==pulsanti
P1-P3 I componenti contraddistinti dalla-
5 6 sterisco
CONN.1 andranno 12
= connettore montati
poli sul circuito
18 19 3 4 7
stampato siglato LX.1171/B. Lintegrato si-
R1 R2
glato
Nota IC1 il microprocessore
= I componenti contraddistintiincluso
dalla- nel
Kit delandranno
sterisco porgrammatore
montatiLX.1170, che po-
sul circuito
XTAL
trete inserire
stampato siglato nel circuito Lintegrato
LX.1171/B. dopo averlosi-pro-
grammato.
glato IC1 il microprocessore incluso nel
P1 P2 C3 C4 C5 P3 Kit del porgrammatore LX.1170, che po-
trete inserire nel circuito dopo averlo pro-
grammato.

Fig.1 Schema elettrico del circuito che dovrete realizzare per poter verificare se il pro-
gramma LED (vedi pagg.37-38) stato correttamente memorizzato allinterno del micro
ST62E10. Per alimentare questo circuito occorre una tensione esterna stabilizzata di 5 volt.

del circuito test il circuito applicativo con i due di- Il programma LED vi d la possibilit di far lam-
splay siglato LX.1171/D. peggiare gli 8 diodi led presenti nel circuito con 5
A questo punto potete passare al collaudo vero e diverse modalit, che potete selezionare pigiando
proprio del programma caricato nelle memorie del ripetutamente il pulsante P1.
microprocessore.
1 Lampeggio
I led si accendono in sequenza uno alla volta da
COLLAUDO PROGRAMMA LED
sinistra verso destra. Il ciclo continua allinfinito.

Dopo aver programmato il microprocessore con il 2 Lampeggio


programma Led ed averlo inserito nel circuito stam- I led si accendono due alla volta dallesterno ver-
pato siglato LX.1171, dovete innestare il connetto- so linterno (prima DL1 e DL8, poi DL2 e DL7 ecc.),
re maschio del circuito a diodi led nel connettore fino ai due led centrali (DL4 e DL5), poi i led si ac-
femmina presente sul circuito test, poi dovete ali- cendono sempre due alla volta, ma in senso in-
mentare questultimo con una tensione di 5 volt verso, cio dallinterno verso lesterno. Il ciclo con-
stabilizzati. tinua allinfinito.
3 Lampeggio programma da capo, cio ripartir dal primo lam-
Si accende tutta la fila di led, iniziando dal primo a peggio come se aveste alimentato solo in quel mo-
sinistra e proseguendo verso destra. Quando so- mento il circuito.
no tutti accesi si spengono tutti insieme. Il ciclo ri-
prende allinfinito. Se volete passare al collaudo di uno degli altri due
programmi CONTA - LOTTO, dovete togliere lali-
mentazione al circuito ed estrarre il circuito a led
4 Lampeggio LX.1171/B. Ovviamente dovete pure estrarre il mi-
Lampeggiano uno alla volta prima i led pari poi i croprocessore, e dopo averlo cancellato, dovete
dispari, poi si spengono e si accendono tutti in- riprogrammarlo con uno degli altri due program-
sieme. Il ciclo continua allinfinito. mi.

COLLAUDO PROGRAMMA CONTA


5 Lampeggio
I led si accendono prima tutti insieme, poi si spen- Dopo aver programmato il microprocessore con il
gono tutti insieme. Il ciclo si ripete allinfinito. programma Conta ed averlo inserito nel circuito
stampato siglato LX.1171, dovete innestare il con-
Non appena il circuito viene alimentato, il micro- nettore maschio del circuito a display nel connet-
processore esegue il 1 motivo. Premendo ripetu- tore femmina presente sul circuito test, poi dove-
tamente il pulsante P1 vengono eseguiti uno di se- te alimentare questultimo con una tensione di 5
guito allaltro il 2 - 3 - 4 - 5 motivo. Se mentre volt stabilizzati.
in corso il 5 premete nuovamente P1, il micro-
processore eseguir di nuovo il 1 lampeggio. Dopo aver alimentato il circuito vedrete comparire
Lintervallo fra unaccensione dei diodi led e laltra sui display il numero 00, che aumenter di una u-
di circa 1/2 secondo, ma possibile diminuire nit ogni 1/2 secondo.
questo tempo premendo ripetutamente P2. Pertanto ogni 5 decimi di secondo leggerete 01 -
La massima velocit di lampeggio consentita dal 02 - 03 - ecc. fino a 99, dopodich il conteggio ri-
programma viene raggiunta dopo aver premuto partir sempre in avanti da 00.
questo pulsante per 8 volte. Per ottenere un conteggio allindietro, potete pre-
Premendolo ancora una volta, il lampeggio ripren- mere in qualunque istante il pulsante P2.
der con la stessa velocit iniziale. Supponendo di premere P2 quando sui display
Premendo in qualunque momento il pulsante P3 compare ad esempio il numero 74, vedrete appa-
(RESET), il microprocessore torner ad eseguire il rire, sempre ad intervalli di 1/2 secondo, i numeri

TR2
E E
B B
TR1
C C
ELENCO COMPONENTI LX.1171/D
A1 DISPLAY 1 A2 DISPLAY 2
R1-R8 = 220 ohm 1/4 watt
R9 = 4.700 ohm 1/4 watt
R10 = 4.700 ohm 1/4 watt
TR1 = PNP tipo BC327
TR2 = PNP tipo BC327
a b c d e f g dp
DISPLAY1-2 = display Anodo comune
tipo HP.5082 o 7731
R1 R8 R9 R10

1 5 4 3 11 2 8 9 10 6 7

Fig.2 Se allinterno del micro ST62E10 avete memorizzato il programma CONTA o LOT-
TO, per poterlo controllare dovrete realizzare questo circuito elettrico. La scheda dei dio-
di led o dei display andr inserita nel connettore dellLX.1171 (vedi figg.19-20).
73 - 72 - 71 - ecc., fino a 00, dopodich il conteg-
gio riprender da 99 per tornare a 00 e cos allin-
finito.
Premendo in qualunque momento il tasto P1 il con-
teggio proseguir di nuovo in avanti e cos pure
premendo in qualsiasi momento il pulsante P2 il
conteggio riprender allindietro.
Infine potrete riprendere lesecuzione del program-
ma da capo premendo il pulsante P3 (RESET), per-
ch in tal modo sar come se aveste appena ali-
mentato il circuito.
In questo caso il conteggio ripartir da 00 e verr
effettuato in avanti.

COLLAUDO PROGRAMMA LOTTO Fig.3 Per poter vedere il listato dei pro-
grammi, quando sullo schermo appare il
Dopo aver programmato il microprocessore con il menu principale, pigiate F3 quindi sceglie-
te quello che vi interessa, cio Conta, Led
programma Lotto ed averlo inserito nel circuito
o Lotto e premete Enter.
stampato siglato LX.1171, dovete innestare il con-
nettore maschio del circuito a display nel connet-
tore femmina presente sul circuito test, poi dove-
te alimentare questultimo con una tensione di 5
volt stabilizzati.

Dopo aver alimentato il circuito vedrete comparire


sui display due lineette (--) ed ogni volta che pre-
merete il pulsante P1 comparir un numero sem-
pre diverso compreso fra 01 e 90, cio i numeri del-
la tombola o del lotto.
Ogni volta che premete P1 il numero non sar mai
uguale ai precedenti, quindi potrete simulare una
reale estrazione di numeri.
Una volta estratti tutti i 90 numeri, vedrete com-
Fig.4 Se sceglierete il programma Led, sul-
parire sui display le due lineette (--), quindi sapre-
lo schermo del computer appariranno tutte
te che sono stati estratti tutti i 90 numeri disponi-
le righe di tale programma. Per uscire da
bili. questo listato dovete premere Alt ed F3 e
Quando compaiono le due lineette (--), per inizia- apparir il menu principale.
re una nuova estrazione baster premere P1, e co-
s sempre in maniera casuale ricompariranno i nu-
meri compresi fra 00 e 90.
Se invece volete iniziare una nuova estrazione in-
terrompendo quella in corso, sar sufficiente re-
settare il microprocessore premendo il pulsante P3
(RESET). In tal modo il programma verr eseguito
da capo, esattamente come se aveste appena ali-
mentato il microprocessore, anche se i numeri non
sono stati tutti estratti.
In questo programma il pulsante P2 non viene uti-
lizzato.

PER VEDERE il LISTATO


di un PROGRAMMA Fig.5 I pi esperti potranno apportare per-
sonali modifiche a questi programmi pi-
Le informazioni seguenti vi saranno utili quando giando il tasto F2 per memorizzarle. Pi-
vorrete entrare nel listato di un programma per mo- giando Alt+F3 potrete non confermare le
dificarlo. modifiche apportate.
Per visualizzare un qualunque listato di uno dei pro-
gramma per ST62, anche senza bisogno di modi-
ficarlo, dovete innanzitutto caricare il programma.
Quando sul monitor del computer compare:

C:\>

digitate:

C:\>CD ST6 poi Enter


C:\ST6>ST6 poi Enter

Cos entrerete nel menu principale di fig.3.

Premete il tasto F3 per visualizzare lelenco dei fi-


les contenenti i programmi per ST62. Fig.6 Una volta salvate le modifiche con F2
Premete Enter e dopo aver portato il cursore sul (vedi fig.5) dovrete riassemblare tutto il pro-
nome del file desiderato, premete ancora Enter. In gramma. Premete Alt+T e quando apparir
questo modo comparir il listato del programma questa finestra pigiate il tasto A. Lassem-
contenuto in quel file. blaggio dura solo pochi secondi.

Per muovervi allinterno del listato e vedere cos


tutte le istruzioni usate i tasti freccia su/gi oppu-
re i due tasti pagina su/gi.

Per uscire dal listato di un file, dovete tenere pre-


muto Alt e premere F3. Ritornerete cos al menu
principale (vedi fig.3).

Nota: Se mentre visualizzate il listato premete per


errore i tasti scrivendo nel file dei caratteri indesi-
derati, senza curarvi di andarli a cancellare, pote-
te uscire dal file senza salvare le modifiche.
Per compiere questa operazione sufficiente te-
nere premuto il tasto Alt e premere F3, e quando Fig.7 Se non volete memorizzare le modifi-
appare la finestra di conferma di fig.7 dovete pre- che effettuate NON dovrete pigiare il tasto
mere il tasto N. F2, ma solo Alt+F3 e cos apparir questa
Ricordate che se dopo aver modificato il file senza finestra. A questo punto dovrete semplice-
volerlo, premete inavvertitamente F2, le modifiche mente pigiare N.
verranno salvate, quindi premendo Alt+F3 la fine-
stra di conferma modifiche (vedi fig.7) non appa-
rir.
In questo caso lunico modo per correggere le mo-
difiche entrare di nuovo nel file, cercare la riga
del listato dove avete apportato le modifiche e cor-
reggerla.
Nel caso non riusciate a correggere lerrore nean-
che in questo modo, non vi rimane altro che in-
stallare di nuovo il programma, perch in tal caso
caricherete nellHard-Disk i programmi originali
contenuti nei files LED - CONTA - LOTTO.

Per MODIFICARE un PROGRAMMA


Fig.8 Se prima di programmare un ST62E10,
Chi sa gi programmare potrebbe trovare questo seguendo quanto descritto da pag.26, pi-
paragrafo poco interessante, ma poich dobbiamo giate il tasto B, il computer vi dir se il mi-
pensare anche a tutti i principianti, riteniamo ne- croprocessore inserito nello zoccolo tex-
cessario spiegare anche quello che per molti po- tool vergine.
trebbe essere ovvio.
Sapere come entrare in un file e come procedere
per modificare qualcuna delle istruzioni dei pro-
grammi che vi abbiamo fornito, costituisce un pri-
mo importante passo per tutti coloro che non han-
no mai visto come sono scritte le diverse righe di
un programma e che in un secondo tempo vorran-
no provare a realizzare dei semplici e personali pro-
grammi.

Per spiegarvi queste prime cose prenderemo spun-


to dal programma pi semplice che vi abbiamo pro-
posto, quello cio chiamato LED, e su questo vi in-
segneremo come si deve procedere per cambiare
le modalit di lampeggio degli 8 diodi led, cio per
Fig.9 Se tentate di programmare un fare in modo che i diodi led possano lampeggiare
ST62E10 gi programmato il computer vi in modo diverso da quello da noi proposto.
mostrer questa scritta. Se volete inserire
un diverso programma, dovrete premere N Quando, dopo aver caricato il programma, compa-
e cancellare il micro. re il menu principale di fig.3, premete il tasto F3 (ta-
sto per lapertura dei files).

Apparir la finestra con lelenco dei file dei pro-


grammi, cio:

CONTA.ASM
LED.ASM
LOTTO.ASM
STANDARD.ASM

Nota: Il file STANDARD.ASM non contiene un pro-


gramma vero e proprio, ma delle utili indicazioni
per capire il significato, luso e limportanza delle
Fig.10 Se nel programmare un micropro- varie istruzioni di ogni programma per ST62. Co-
cessore vi dimenticate di scrivere il nome me vi spiegheremo nel prossimo paragrafo, potre-
del file del programma, Conta - Led - Lotto, te entrare in questo file e leggere tutti gli utili com-
il computer lo segnaler con questo mes- menti che abbiamo inserito.
saggio.
A questo punto premete Enter, portate il cursore
sulla riga LED.ASM e premete ancora Enter.

Sul monitor comparir tutto il listato del program-


ma contenuto nel file LED.ASM (vedi fig.4).

In basso a sinistra sono presenti due numeri se-


parati dai due punti (:). Il primo numero vi per-
mette di identificare la riga del programma, il se-
condo la colonna del file.
Con i tasti freccia gi o pagina gi portate il cur-
sore in prossimit della riga 255, cio scendete con
il cursore fino a quando in basso a sinistra non leg-
gete 255:1.
Fig.11 Se il microprocessore stato inseri- Dalla riga 255 in poi (vedi fig. 5) compaiono delle
to nello zoccolo textool in modo errato o se istruzioni del tipo:
il programmatore non alimentato, sullo
schermo del computer apparir questo
messaggio. lamp1 .byte 11111110b ; Prima istruzione
.byte 11111101b ; Seconda istruzione
.byte 11111011b ; Terza istruzione Le cifre siglate 1 e 0 che trovate dopo listruzione
.byte 11110111b ; Quarta istruzione .byte compongono un numero binario, riconosci-
.byte 11101111b ; Quinta istruzione bile per la presenza della lettera b = binario.
.byte 11011111b ; Sesta istruzione Come noterete, queste cifre binarie sono 8 e ad
.byte 10111111b ; Settima istruzione ognuna di esse corrisponde un diverso diodo led
.byte 01111111b ; Ottava istruzione del circuito test LX.1171/B (vedi fig.1).
Ad esempio, alla prima cifra da destra corrispon-
dove lamp1 sta ad indicare che le istruzioni suc- de DL1, alla seconda corrisponde DL2, e cos via
cessive sono relative alla prima modalit di lam- fino allottava cifra da destra, alla quale corrispon-
peggio dei diodi led. de DL8.
Ogni volta che il microprocessore esegue unistru-
Nota: Le scritte dopo il punto e virgola (;) non so- zione come:
no istruzioni, ma commenti, che abbiamo inseri-
to appositamente nel listato per rendere pi com- .byte 11111011b ; Terza istruzione
prensibili le spiegazioni che ora vi daremo. Per que-
sto motivo vi consigliamo di non cambiarle. i diodi led corrispondenti alle cifre binarie uguali a
0 vengono accesi, mentre i diodi led corrispondenti
Per capire in che modo possibile cambiare que- alle cifre binarie uguali ad 1 rimangono spenti.
ste istruzioni per variare la modalit di accensione Quindi quando il microprocessore esegue questa
dei vari diodi led, cercheremo di spiegarvi in modo istruzione, viene acceso il solo diodo DL3, mentre
molto semplice come funzionano queste istruzioni. tutti gli altri rimangono spenti.

Fig.12 Schema pratico di montaggio della Fig.13 Foto del circuito LX.1171 come si
scheda sperimentale LX.1171. Lintegrato presenta a montaggio ultimato. Si noti nel-
IC1 il microprocessore ST62E10 che vi ab- lo zoccolo IC1 il microprocessore ST62E10
biamo fatto programmare con il progetto provvisto della finestra di cancellazione ed
pubblicato a pag.26. I pulsanti P1 - P2 vi ser- in alto il connettore per poter inserire la
viranno per modificare le funzioni o la ve- scheda con i diodi led (vedi fig.14) o con i
locit (leggere articolo), mentre il pulsante display (vedi fig.15) Il circuito va alimenta-
P3 serve per resettare il circuito. to con una tensione di 5 volt.
Fig.14 Schema pratico di montaggio della Fig.15 Schema pratico della scheda display
scheda a diodi led da usare se avete me- da usare se nellST62E10 avete memoriz-
morizzato nellST62E10 il programma LED. zato il programma CONTA oppure LOTTO.

Fig.16 Foto della scheda LX.1171/B dei dio- Fig.17 Foto della scheda LX.1171/D dei di-
di Led a montaggio ultimato. splay a montaggio ultimato.

a A a
A K +V 19 18 17 16 15 14 13 12 11
b f
f g b
A
g
DIODO
A K
e
d c
c
LED
dp dp
B
d e
E C 1 2 3 4 5 6 7 8 9 GND

HP 5082 o 7731 BC 327 74 LS 244

Fig.18 Connessioni dei display viste da dietro, del transistor BC.327 viste da sotto e dellin-
tegrato 74LS244 viste da sopra. Il terminale pi lungo presente nei diodi led lAnodo.
Se nelle diverse righe di istruzione si scrivono dif- sostituire portate il cursore su quella cifra e pre-
ferenti numeri binari, il microprocessore accender mete il tasto Canc.
ogni volta dei diodi led diversi, ed in questo modo
potrete creare differenti giochi di luce.
Ricordate che ogni numero binario deve essere
composto da non pi di 8 cifre, altrimenti il pro-
Se ad esempio considerate le istruzioni del lam-
gramma non funzioner.
peggio chiamato lamp1, vedete che quando viene
Se scrivete un numero di cifre inferiori ad 8 il pro-
eseguita la prima istruzione si accende solo il dio-
gramma funzioner ugualmente, ma i diodi corri-
do DL1, perch solo la cifra pi a destra uno 0,
spondenti alle cifre non utilizzate rimarranno sem-
poi quando viene eseguita la seconda istruzione
pre accesi. Ad esempio, scrivendo 11010b, cio
si accende solo DL2 e cos via. In questo modo si
tralasciando le tre cifre corrispondenti ai diodi DL6
realizzata una semplice accensione in sequenza
- DL7 - DL8, questi diodi rimarranno sempre ac-
di un solo diodo alla volta.
cesi.
Cambiando le cifre 1 e 0 che compongono i vari
numeri binari potete realizzare con un po di fanta- Se volete potete cambiare le cifre binarie di tutti i
sia tutti i giochi di lampeggio che vorrete. 5 giochi proposti, quindi potete modificare anche
le istruzioni scritte dopo le etichette lamp2 - lamp3
Per cambiare le cifre che compongono i numeri bi- - lamp4 - lamp5. Troverete queste scritte scorren-
nari sufficiente che vi portiate col cursore sulla ci- do con il cursore il listato del programma.
fra che volete modificare, dopodich potete scrive- I giochi di luce supportati da questo programma so-
re 1 o 0.Per cancellare la cifra binaria che volete no solo 5, quindi non aggiungete altre etichette del

Fig.19 Se avete programmato il micropro- Fig.20 Se avete programmato il micropro-


cessore con il programma LED dovrete in- cessore con il programma CONTA o LOT-
serire nel connettore dellLX.1171 il con- TO dovrete inserire nel connettore femmi-
nettore maschio della basetta di fig.14. na dellLX.1171 la basetta visibile in fig.15.
Fig.21 Disegno a grandezza naturale dei due stampati da inserire nella scheda LX.1171
(vedi figg.19-20) visti dal lato rame. Il circuito di sinistra siglato LX.1171/B serve per il pro-
gramma Led, mentre quello siglato LX.1171/D serve per i programmi Conta e Lotto.

tipo lamp6 - lamp7 ecc. seguite dalle istruzioni .by- Senza uscire dal listato del programma, dopo aver
te, perch il programma non funzionerebbe. apportato le modifiche ed averle salvate con il ta-
sto F2, premete i tasti Alt+T e di seguito A (vedi
NOTA IMPORTANTE: Come avrete notato, le i- fig.6).
struzioni di tipo .byte per accendere i led, che se- In questo modo lo schermo del vostro computer di-
guono le cinque etichette lamp1 - lamp2 - ecc., venter tutto nero e dopo alcuni secondi vedrete
sono 8, e cos devono sempre rimanere. Se can- apparire questa scritta:
cellate alcune di queste istruzioni oppure ne ag- *** SUCCESS ***
giungete altre analoghe, il programma non fun-
zioner. che conferma che lassemblaggio stato com-
pletato senza errori.
Eseguite le vostre modifiche dovete salvarle, altri- Finita loperazione di assemblaggio, premendo un
menti anche se leggerete sul monitor le istruzioni tasto qualsiasi tornerete al listato del programma.
che avete appena scritto, il programma non risul-
ter modificato. Se anzich apparire la scritta *** SUCCESS ***
compare ad esempio:
Per salvare le variazioni baster premere il tasto ERROR C:\ST62\LED.ASM 256:
F2: dopo pochi istanti vedrete accendersi la luce
dellHard-Disk, quindi sarete sicuri che il file modi- significa che nella riga 256 del file LED.ASM ave-
ficato stato aggiornato. te involontariamente inserito un errore.

Se non desiderate salvare le modifiche dovete te- Nota: Un errore molto comune nel quale si pu in-
nere premuto Alt e poi premere F3. cappare quello di scrivere un numero binario con
Comparir la finestra di fig.7 dove vi verr chiesto un numero di cifre superiore ad 8. Se per esem-
se volete salvare (tasto Y) oppure no (tasto N) le pio scrivete un numero binario a 9 cifre del tipo:
modifiche apportate.
Premendo uno qualsiasi di questi tasti tornerete nel .byte 110101001b ; Seconda istruzione
menu di fig.3.
dopo aver lanciato il programma assembla com-
Una volta apportate e salvate le modifiche, prima parir il messaggio di errore:
di trasferire i dati del programma nelle memorie del
microprocessore dovete eseguire unoperazione ERROR C:\ST62\LED.ASM 256:
supplementare, cio lanciare il programma as- (81) 8-bit value overflow
sembla, che serve per convertire le istruzioni del
programma in dati che il microprocessore utilizza Il numero tra parentesi (81) identifica il tipo di er-
per eseguire il programma. rore e non vi interessa, mentre la scritta 8-bit va-
lue overflow significa che avete utilizzato un nu- ziare a riconoscere le istruzioni principali che ri-
mero binario con pi di 8 bit corrono in qualsiasi programma per ST62.
Probabilmente a molti di voi queste scritte appari-
Per correggere questo errore dovete tornare al li- ranno ancora oscure e prive di significato, quindi
stato del programma e per questo baster preme- non perdete il prossimo numero in cui vi spieghe-
re un tasto qualsiasi. remo il significato di tutte le istruzioni.

Una volta nel listato, poich lerrore era stato se- Per TORNARE al DOS
gnalato nella riga 256, dovete portarvi con il cur-
sore su questa riga e controllare che risulti effetti- Quando avete terminato le operazioni di program-
vamente scritto un numero di 8 bit (8 cifre). mazione potete uscire dal programma e ritornare
al DOS.
Questo errore si verificher raramente perch scri-
vere unistruzione cos semplice non sar per voi Se vi trovate nel menu di fig.3, baster tenere pre-
un problema, comunque lo abbiamo voluto segna- muto Alt e poi pigiare X e cos sul monitor com-
lare, perch se un domani dovesse apparire per un parir:
vostro programma un qualunque messaggio di er-
rore, sappiate che questo presente nella riga in- C:\ST6>
dicata prima dei due punti (:).
a questo punto per uscire dalla directory ST6 e lan-
Per uscire dal file LED.ASM dovete tenere pre- ciare altri programmi dovrete digitare:
muto Alt e poi premere F3. Se non avete ancora
salvato la correzione, comparir la finestra di fig.7, C:\ST6>CD \ poi Enter
in cui dovrete indicare se volete salvare (tasto Y)
oppure no (tasto N) le modifiche. e cos comparir:
Premendo Y registrerete queste modifiche, pre-
mendo N invece non le salverete. C:\>
Facciamo presente che premendo uno qualsiasi di
questi tasti, Y o N, il listato del file LED scompa- Arrivederci al prossimo numero.
rir e ritornerete nel menu principale.

Il FILE STANDARD.ASM

Come abbiamo gi avuto modo di sottolineare, pre-


mendo F3 dal menu principale, oltre ai tre files di
tipo .ASM contenenti i programmi () test per ST62,
compare un file chiamato STANDARD.ASM, che
non contiene un programma vero e proprio.
In questo file trovate lelenco delle istruzioni che
devono comparire sempre in ogni programma, e la COSTO DI REALIZZAZIONE
cui conoscenza basilare se si desidera realizza-
re programmi personali. Costo del kit LX.1171 completo di circuito stampa-
Sono inoltre presenti tantissimi commenti, che vi to, dellintegrato 74LS244 (non c lST62E10 per-
aiuteranno a capire il significato delle varie istru- ch inserito nel kit LX.1170) pi il quarzo, i pulsanti
zioni e tante note utilissime per realizzare pro- ed il circuito stampato LX.1171/B (vedi fig.14) con
grammi per ST62 senza incorrere negli errori pi gli 8 diodi led ............................................ 12,90
banali.
Per visualizzare questo file dovete eseguire di nuo- Il kit LX.1171/D con i due display ed i due transi-
vo le operazioni spiegate nel paragrafo Per vede- stor BC.327 (vedi fig.15)............................. 4,90
re il listato di un programma, e quando compa-
re lelenco dei files dovete premere Enter, portare Costo del solo stampato LX.1171 .............. 3,72
il cursore sul nome STANDARD.ASM e premere Costo del solo stampato LX.1171/B........... 0,93
di nuovo Enter. Costo del solo stampato LX.1171/D........... 1,08
Questo file risulter molto utile sia ai pi esperti,
che vogliono cimentarsi nella realizzazione di pro- I prezzi sopra riportati sono gi compresi di IVA,
grammi senza attendere luscita della prossima ri- ma non sono incluse le spese postali di spedizio-
vista, sia a chi alle prime armi, perch potr ini- ne a domicilio.
Come vi abbiamo anticipato nella precedente rivi- scal - C avvantaggiato rispetto a chi inizia da ze-
sta, per programmare un ST6, come del resto un ro, anche se come vedrete, tutti i microprocesso-
qualunque altro microprocessore, assolutamen- ri ST6 utilizzano un linguaggio assembler molto
te necessario conoscere le basi del linguaggio di semplificato.
programmazione, perch senza queste impossi-
bile scrivere un programma. PER SCRIVERE un PROGRAMMA
Tanto per fare un esempio, se vi proponessimo di
progettare un amplificatore utilizzando un integra- Prima di scrivere qualsiasi programma necessa-
to operazionale, senza precisare come si collega rio sapere quali operazioni deve eseguire il micro-
il piedino invertente o quello non invertente o processore, perch in funzione della memoria oc-
quali modifiche vanno apportate per alimentare il cupata, dovrete scegliere il micro pi idoneo.
circuito con una tensione singola anzich duale, Infatti se avete un programma che non supera i 2K,
incontrereste parecchie difficolt nella sua realiz- potete utilizzare un ST62E10, se invece avete un
zazione. programma che occupa pi di 2K e non supera i

IMPARARE a programmare i
Evidenziamo questo perch non vogliamo com- 4K, dovete necessariamente adoperare un
portarci come tanti altri, che spiegano poco o nien- ST62E20.
te ed illudono i loro lettori sostenendo che non c Nelle Tabelle N.1-2 riportiamo per ogni micropro-
nulla di pi facile che programmare un ST6. cessore la memoria disponibile ed il massimo nu-
Prima di insegnarvi a programmare sar quindi u- mero di ingressi/uscite utilizzabili, cio il numero
tile spiegare, anche solo a grandi linee, cosa sono di piedini che potete adoperare per i segnali.
un registro e una subroutine, il significato di tut-
te le istruzioni, quali jp - jrr - jrs - ld - cp ecc., e
come si utilizza una memoria.
A questo proposito vogliamo sottolineare che non TABELLA N.1 micro NON CANCELLABILI
sufficiente imparare a memoria il significato di tut- Sigla memoria Ram zoccolo piedini utili
te le istruzioni, ma occorre anche sapere come - Micro utile utile piedini per i segnali
dove - quando utilizzarle, se si vuole che il pro- ST62T.10 2 K 64 byte 20 pin 12
gramma funzioni correttamente. ST62T.15 2 K 64 byte 28 pin 20
Non illudetevi pensando di diventare esperti pro- ST62T.20 4 K 64 byte 20 pin 12
grammatori in pochi giorni, perch andreste incon- ST62T.25 4 K 64 byte 28 pin 20
tro ad una delusione: sono necessari infatti alcuni
mesi di pratica per acquisire una sufficiente pa-
dronanza della materia.
Per accelerare lapprendimento vi suggeriamo di i- TABELLA N.2 micro CANCELLABILI
niziare a leggere i programmi gi funzionanti, per-
Sigla memoria Ram zoccolo piedini utili
ch studiare le soluzioni adottate per scrivere una
Micro utile utile piedini per i segnali
subroutine, utilizzare un interrupt, o ancora vedere
come si sfrutta la memoria, vi sar di valido aiuto. ST62E.10 2 K 64 byte 20 pin 12
In altre parole, anche se sapete scrivere una lette- ST62E.15 2 K 64 byte 28 pin 20
ra o una cartolina, non detto che siate capaci di ST62E.20 4 K 64 byte 20 pin 12
scrivere un libro giallo o un bel romanzo di avven- ST62E.25 4 K 64 byte 28 pin 20
tura, quindi se decidete di dedicarvi allattivit di
scrittore, dovete prima acquisire un po di espe-
rienza facendovi seguire da un letterato o leggen- Quando scrivete un programma, dovete inserire
do testi dautore per apprendere come impostare i tutte le istruzioni nella sequenza in cui volete che
vari capitoli. siano eseguite dal microprocessore.
Chi sa gi programmare in Basic - Fortran - Pa- Ad esempio, se voleste programmare un robot per
MICROPROCESSORI ST6
Dopo avervi presentato sul N.172/173 un programmatore per micropro-
cessori ST6 ed un circuito per i test, sarete curiosi di conoscere le pro-
cedure per scrivere i vostri programmi, ad esempio per realizzare un o-
rologio, per pilotare dei display alfanumerici LCD, per realizzare gene-
ratori dimpulsi ecc. Se ci seguirete, cercheremo di spiegarvi con facili
esempi tutte le istruzioni necessarie per scrivere i programmi per lST6.

cuocere degli spaghetti, dovreste fornirgli nellordi- Come aprire un file per il programma
ne queste istruzioni: Come scrivere le istruzioni richieste
Come impostare il programma
- Prendi una pentola Come utilizzare la memoria
- Riempila per met di acqua
- Metti il tutto sul fornello
- Accendi il gas sotto la pentola COME CREARE un FILE SORGENTE
- Attendi che lacqua bolla
- Versaci un po di sale Chi ha gi richiesto il kit LX.1170 del Program-
- Immergi gli spaghetti nellacqua matore per ST6 pubblicato sulla rivista N.172/173
- Attendi 5-6 minuti avr ricevuto un dischetto floppy, che oltre a ser-
- Spegni il fornello vire per trasferire un programma dallHard-Disk nel-
- Togli la pentola dal fornello la memoria di un microprocessore ST6, serve per
- Scola la pasta creare i files sorgenti necessari per scrivere qual-
siasi vostro programma.
Se vi dimenticate anche una sola di queste istru- Infatti in questo dischetto stato memorizzato un
zioni, quale ad esempio quella di accendere il for- ottimo editor, corredato di tantissime opzioni che
nello, non riuscirete mai a cuocere gli spaghetti. vi saranno utili per scrivere le istruzioni, per dupli-
E cos se vi dimenticate di inserire listruzione riem- carle, per cancellarle ed anche per salvare i files
pi la pentola con acqua, non potrete mai arriva- modificati; nel floppy stato inoltre incluso un as-
re alla condizione di vedere lacqua bollire. semblatore.
Nella rivista precedente (se non ne siete in pos-
Dunque prima di apprestarvi a scrivere un pro- sesso potete richiedercela, perch abbiamo anco-
gramma dovete sapere: ra delle copie disponibili), vi abbiamo spiegato co-
me caricare il programma ST6 nel vostro compu-
ter.

Per richiamare il programma dovete semplicemen-


te digitare:

C:\ST6>ST6 poi Enter

e cos compare sul monitor il menu principale.

A questo punto dovete aprire un nuovo file, nel


quale scrivere il vostro programma.

Per aiutarvi fin da queste prime fasi, abbiamo in-


Fig.1 Per aprire un nuovo file dovete ri- serito nel dischetto floppy il file STANDARD.ASM,
chiamare il men principale e a questo pun-
che racchiude lelenco delle istruzioni che devono
to se premete il tasto F3 appariranno tutti i
necessariamente comparire in ogni programma.
nomi dei files del programma ST6 con e-
Copiando il file STANDARD con un altro nome, a-
stensione .ASM.
vrete subito a disposizione la struttura base per
scrivere il vostro programma.

Quindi per aprire un nuovo file dovete procedere


come segue:

1 - Quando appare il menu principale premete il


tasto funzione F3 (vedi fig.1), poi premete Enter e
portate il cursore sul nome STANDARD.ASM (ve-
di fig.2), quindi premete ancora Enter.

2 - Prima di qualsiasi altra cosa, dovete salvare


questo file con un altro nome, quindi premete i ta-
sti Alt+F e di seguito selezionate lopzione Save
as (che significa salva con nome) premendo la
Fig.2 Dalla fig.1 premete Enter, poi portate
lettera A (vedi fig.3).
il cursore sulla riga STANDARD.ASM e pre-
mete nuovamente Enter. Aprirete cos la
SORGENTE STANDARD per scrivere un 3 - Sul monitor appare una finestra nella quale do-
nuovo programma. vete digitare, oltre a C:\ST6\, il nome del vostro
programma (vedi fig.4).
Questo nome, che vi servir quando vorrete tra-
sferire il programma dallHard-Disk al micropro-
cessore ST6, non deve mai superare gli 8 carat-
teri.
Dopo il nome non dovete dimenticarvi di aggiun-
gere lestensione .ASM, che sta ad indicare che si
tratta di un programma in assembler.
Cercate un nome che abbia una logica attinenza
col programma che scriverete, per poterlo poi fa-
cilmente riconoscere tra gli altri. Per esempio po-
treste chiamare i programmi:

LED.ASM
Fig.3 Per ricopiare la SORGENTE STAN- LOTTO.ASM
DARD dovete assegnarle un altro nome. Per OROLOGIO.ASM
fare questo dovete premere i tasti ALT+F TIMER.ASM ecc.
poi premere il tasto A. Da questa figura si
passer alla fig.4. 4 - Dopo aver scritto il nome per esteso (ad e-
sempio, C:\ST6\TIMER.ASM) premete Enter, ed in
alto, nella pagina delleditor visibile in fig.5, vedre-
te apparire la scritta:

C:\ST6\TIMER.ASM

che vi conferma che il file chiamato TIMER.ASM


stato creato.

COME ASSEMBLARE un PROGRAMMA

Importante: Quando avrete terminato di scrivere il


programma, come pi avanti vi spiegheremo, e la-
vrete controllato apportando le modifiche necessa-
rie, dovrete assemblarlo, altrimenti non potrete Fig.4 Ammesso che vogliate chiamare il
memorizzarlo nel microprocessore. nuovo programma TIMER (ricordate che il
Per questo motivo, prima di chiudere leditor, cio nome non pu mai superare gli 8 caratteri)
il file del programma, premete i tasti Alt+T e di se- scrivete per esteso C:\ST6\TIMER.ASM poi
guito il tasto A = assembla (vedi fig.6). premete Enter.
Se non avete commesso errori, dopo qualche se-
condo apparir sul monitor la scritta SUCCESS.
In caso contrario, apparir un messaggio che vi in-
dicher il tipo di errore commesso e la riga di i-
struzione in cui si trova.
Per correggere lerrore dovete tornare alleditor pre-
mendo un tasto qualsiasi.
Per trasferire il programma allinterno dellST6, se-
guite le istruzioni ampiamente descritte sulla rivista
N.172/173.

COME si SCRIVE unISTRUZIONE

Quando scrivete un programma dovete rispettare Fig.5 Una volta creato il file TIMER vedrete
alcune semplici regole che ora vi indicheremo, al- apparire nella prima riga in alto della fine-
trimenti quando lassemblerete compariranno dei stra blu delleditor C:\ST6\TIMER.ASM. A
messaggi relativi agli errori, che dovrete correg- questo punto potete iniziare a scrivere il vo-
gere per poter proseguire. stro nuovo programma.
Ogni istruzione deve essere scritta su una diversa
riga di programma e deve essere composta da
unetichetta, da unistruzione e da un operando
dellistruzione.
Ad esempio nella riga di programma:

pippo Idi a,10h

pippo letichetta
ldi listruzione
a,10h loperando dellistruzione

ETICHETTA
Fig.6 Una volta completato il programma
Letichetta un riferimento non obbligatorio che prima di memorizzarlo nellST6 lo dovete
deve partire sempre dallestremo sinistro della ri- Assemblare. Premete quindi i tasti ALT+T
ga. poi il tasto A. Se avete commesso un erro-
Unetichetta serve come punto di riferimento per re nel programma, vi verr segnalato.
poter ritornare nuovamente, tramite listruzione di
salto (indicata con la sigla jp, abbreviazione di Se gi presente il nome delletichetta, dovete co-
jump), su quella riga di programma. munque separare listruzione con uno spazio.
Quando scrivete unetichetta dovete rispettare Quindi se avete letichetta pippo1 e listruzione
queste regole: ldi x,10, dovete scrivere:

La parola non deve superare gli 8 caratteri pippo1 Idi x,10


Potete scrivere nota - PIPPO - RIF ecc., ma non
parole che superino gli 8 caratteri. Se nella riga di istruzione manca il nome delleti-
chetta, dovete comunque lasciare uno spazio :
Letichetta non deve iniziare con un numero
Non potete scrivere 1nota - 2nota - 1PIPPO - Idi x,10
2PIPPO ecc., ma potete posizionare un numero
dopo la parola, senza interporre spazi tra parola e Data limportanza di scrivere correttamente listru-
numero. E quindi corretto scrivere nota1 - PIP- zione, vi consigliamo di utilizzare la funzione ta-
PO1 ecc. bulazione premendo il tasto TAB prima di scrive-
re qualsiasi istruzione.
Non si pu usare lo stesso nome due volte In questo modo avrete tutte le istruzioni perfetta-
E scorretto definire pi etichette con lo stesso no- mente incolonnate ed il programma risulter pi
me, cio scrivere PIPPO - PIPPO. Potete usare la comprensibile quando dovrete rileggerlo.
stessa parola solo se inserite un numero progres-
sivo, ad esempio PIPPO1 - PIPPO2 - PIPPO3 ecc.
OPERANDO
Non si pu lasciare alcuno spazio a sinistra
delletichetta Nella riga riportata precedentemente, cio:
Se premete spazio, poi scrivete:
Idi x,10
PIPPO
ldi listruzione, che significa carica
commettete un errore, quindi dovete partire da si- x,10 loperando
nistra senza spazio:
Questa riga indica: carica nella cella di memoria
PIPPO X il numero 10.

Carattere delletichetta Loperando deve sempre essere separato dalli-


Anche se possibile scrivere letichetta sia in mi- struzione tramite uno spazio, quindi se scrivete:
nuscolo sia in maiuscolo, vi consigliamo di scri-
vere sempre in minuscolo cos non vi sbaglierete ldix,10
mai.
Quindi scrivete pippo1 - pippo2 - nota - rif ecc. commette un grosso errore, mentre se scrivete:

ISTRUZIONE Idi x,10

Le istruzioni da inserire dopo letichetta sono pro- lintera istruzione corretta.


prie dellassembler degli ST6.
Queste istruzioni devono sempre essere scritte do- Dopo listruzione e loperando potete inserire, se
po aver lasciato uno spazio. lo ritenete opportuno, un commento.

ETICHETTA ISTRUZIONE OPERANDO


; COMMENTO RIGA

Fig.7 Dovrete sempre ricordare che ogni riga di programma composta da quattro bloc-
chi principali: Etichetta - Istruzione - Operando - Commento. I primi tre blocchi andranno
tenuti separati tra loro da uno o pi SPAZI (o ancora meglio usate il tasto TAB della ta-
stiera), mentre lultimo blocco del COMMENTO dovr essere separato da un punto e vir-
gola. Se non userete lETICHETTA dovrete comunque lasciare uno o pi spazi, mentre se
non scriverete il COMMENTO non dovrete mettere il punto e virgola.
Questo deve essere sempre preceduto da un pun- I numeri ottali
to e virgola (;), diversamente il computer segna- iniziano da 0 e terminano a 377
ler errore.
Utilizzando listruzione precedente potete scrivere: I numeri esadecimali
iniziano da 0 e terminano a FF
Idi x,10 ; inserire 10 in x
I numero binari
iniziano da 0 e terminano a 11111111
I commenti possono essere scritti anche allinizio
di una riga, ma senza lasciare spazi e ricordando
di mettere sempre prima un punto e virgola (;). STRUTTURA di un PROGRAMMA

Ogni volta che completate unistruzione dovete Per scrivere un programma per ST6 si devono se-
sempre e necessariamente andare a capo pre- guire delle precise regole che sono:
mendo il tasto Enter. Definire lo spazio in MEMORIA
Tenete presente che le istruzioni possono essere Definire le VARIABILI
scritte sia in minuscolo sia in maiuscolo: Definire i REGISTRI
Scrivere il PROGRAMMA PRINCIPALE
Idi x,10 oppure LDI X,10 Scrivere le SUBROUTINE
Scrivere eventuali subroutine di INTERRUPT
Definire i VETTORI di INTERRUPT

Per facilitarvi, abbiamo inserito nel dischetto


COME scrivere i NUMERI floppy, che avete ricevuto assieme al program-
matore LX.1170 (vedi rivista N.172/173), un file
Nellesempio sopra riportato noi abbiamo scritto chiamato STANDARD.ASM che vi spiega come
x,10, in altre parole abbiamo utilizzato un numero impostare il programma, dove scrivere le varie i-
decimale. struzioni, come definire lo spazio di memoria ed i
Tuttavia pu risultare pi vantaggioso in alcune i- registri, dove posizionare le subroutine, come ini-
struzioni scrivere i numeri in base esadecimale - zializzare lST6, insomma tutti i consigli e le infor-
ottale - binaria. mazioni necessarie per non sbagliare.
Per far capire al computer che tipo di numero a- Come abbiamo gi descritto nel paragrafo Come
vete inserito, dovete scrivere una lettera come qui creare un file sorgente, tutte le volte che dovrete
sotto specificato: scrivere un nuovo programma copiate il file STAN-
DARD.ASM con il nome del programma che vole-
o oppure O se il numero ottale te scrivere e tutto risulter pi facile.
h oppure H se il numero esadecimale
b oppure B se il numero binario La MEMORIA dellST6

Ad esempio: Allinterno dei microprocessori tipo ST62E10 -


ST62T10 - ST62E15 - ST62T15 risultano disponi-
bili per il programma 2K di memoria ROM, men-
10o = numero ottale
tre nei microprocessori ST62E20 - ST62T20 -
01Ah = numero esadecimale
ST62E25 - ST62T25 sono disponibili 4K di me-
00100101b = numero binario
moria ROM.
Allinterno di ciascun microprocessore sono pre-
Se dopo il numero non mettete nessuna lettera, il senti anche 64 byte di memoria RAM che servo-
computer considerer questo numero decimale. no per i registri e le variabili.
Quando scrivete un numero esadecimale, dovete La memoria ROM mantiene tutte le informazioni,
sempre mettere davanti ad ogni numero uno 0 (ze- cio il programma, inserite durante la programma-
ro), quindi 01A - 0ED - 0AC ecc., ed alla fine de- zione del microprocessore anche in assenza di a-
ve seguire la lettera H, per indicare che il numero limentazione.
esadecimale, quindi i numeri sopra riportati van- La memoria RAM viene usata per le variabili, cio
no scritti 01AH - 0EDH - 0ACH. per i dati che devono essere di volta in volta letti,
scritti e modificati, e quindi pu essere aggiorna-
I numeri decimali ta dallo stesso microprocessore durante il funzio-
iniziano da 0 e terminano a 255 namento del programma.
La memoria (sia ROM sia RAM) pu essere con-
siderata come un insieme di piccole celle ed allin-
terno di ognuna pu essere inserito un solo dato. Vcc GND Vpp

Per portarvi un esempio pratico, potete paragona- 1 20 6

re queste celle a quelle presenti in un favo per a-


pi. Quando le api hanno riempito una cella, pas- ALIMENTAZIONE Vpp MEMORY

sano a riempire la seconda, poi la terza ecc. fino a


riempire tutto il favo. WATCH
PORTA A
DOG
In un microprocessore da 2K ci sono esattamente
1.828 celle in grado di contenere un programma 5
composto da circa 900 - 990 righe di programma. NMI NMI CPU PORTA B
In un microprocessore da 4K ci sono esattamente
3.872 celle in grado di contenere un programma RESET
7
RESET
composto da circa 1.800 - 2.000 righe di pro-
gramma. OSC. INP
3
OXILL. A/D CONVERTER TIMER
OSC. OUT
4

2
DEFINIZIONE delle VARIABILI TIMER

Innanzitutto la variabile un numero, decimale -


ottale - binario oppure esadecimale, che il mi-
Vcc
croprocessore pu modificare tramite una partico- 1 20 GND

lare istruzione.
TIMER 2 19 P A0 ST 62 E 10
OSC. INP 3 18 P A1
Le variabili non vengono inserite nella memoria OSC. OUT 4 17 P A2
ST 62 T 10
ROM, ma sempre e solo nella memoria RAM; in NMI 5 16 P A3
Vpp 6 15 P B0
questo modo possibile variare questi numeri se- ST 62 E 20
RESET 7 14 P B1
condo le diverse esigenze. P B7 8 13 P B2
Ad esempio, per realizzare un orologio servono 3 P B6 9 12 P B3 ST 62 T 20
variabili, una per le ore, una per i minuti ed una P B5 10 11 P B4

per i secondi, che tramite opportune e precise i-


struzioni, si possono incrementare per ottenere le
seguenti funzioni.
La prima variabile dei secondi viene aumentata
dal programma di 1 per ogni secondo trascorso. Fig.8 Nei microprocessori ST6 tipo E10-T10
Raggiunto il numero 60, il programma aumenta di ed E20-T20 sono disponibili due sole por-
1 la seconda variabile dei minuti e porta a 00 la te, la A e la B. La porta A siglata A0-A1-
prima variabile dei secondi. A2-A3 mentre la porta B siglata B0-B1-B2-
B3-B4-B5-B6-B7. Tutti questi piedini pos-
Quando la variabile dei minuti raggiunge il numero
sono essere utilizzati sia come Entrate sia
60, il programma aumenta di 1 la terza variabile
come Uscite. Nei prossimi numeri vi spie-
delle ore e porta a 00 le variabili dei minuti e dei
gheremo come predisporli.
secondi.
Quando la variabile delle ore raggiunge il nume-
ro 24, il programma porta a 00 le tre variabili ore -
minuti - secondi.
Questo numero di riferimento si chiama indirizzo
Quando inserite una variabile dovete ricordare che e poich ogni variabile occupa una sola cella di
se dopo il numero non mettete nessuna lettera, il memoria, queste hanno un numero progressivo.
computer lo considera un numero decimale. Se usate i numeri in base dieci, la prima cella por-
Per informare il computer che avete inserito un nu- ta il numero 132 e lultima il numero 191.
mero con base diversa da 10, seguite le istruzioni Se usate i numeri in base sedici, la prima cella por-
spiegate nel paragrafo Come scrivere i numeri. ta il numero 084H e lultima il numero 0BFH.

In ogni programma potete inserire un massimo di Ricordate che il nome che assegnate alla variabi-
60 variabili e poich queste sono situate nelle cel- le deve sempre essere scritto partendo da sinistra,
le della memoria RAM, dovete dare ad ogni cella senza lasciare nessuno spazio, ed a questo no-
un numero di riferimento, cos da poter ritrovare me deve seguire, spaziandola, la dicitura .def. Do-
la variabile. po questa abbreviazione, dovete lasciare un altro
secondi .def 132
minuti .def 133
Vcc GND Vpp ore .def 134
1 28 10

Potete definire queste variabili anche con un nu-


ALIMENTAZIONE Vpp MEMORY mero esadecimale, senza che ci modifichi il fun-
zionamento dellorologio:
WATCH A
PORTA
DOG
secondi .def 084H
5
minuti .def 085H
NMI NMI CPU PORTA B
ore .def 086H

11
RESET RESET PORTA C Come ultima indicazione, tenete presente che le
variabili vanno definite fin dal principio, vanno cio
OSC. INP
3
inserite allinizio del programma e non a met o al-
OXILL. A/D CONVERTER TIMER
OSC. OUT
4
la fine.
Vi consigliamo di scrivere il nome delle variabili
2
sempre in minuscolo.
TIMER

Vcc 1 28 GND
2
TIMER 27 P A0
I REGISTRI del MICROPROCESSORE
OSC. INP 3 26 P A1
OSC. OUT 4 25 P A2 ST 62 E 15
NMI 5 24 P A3 Nella memoria RAM del microprocessore ST6, ol-
P C7 6 23 P A4
ST 62 T 15 tre allo spazio riservato alle variabili in preceden-
P C6 7 22 P A5
za descritte, sono presenti delle altre celle di me-
P C5 8 21 P A6
P C4 9 20 P A7 ST 62 E 25 moria chiamate registri, che permettono di ese-
Vpp 10 19 P B0 guire precise funzioni gi definite.
RESET 11 18 P B1 ST 62 T 25 Ad esempio, c un registro che permette di defi-
P B7 12 17 P B2
P B6 13 16 P B3
nire quali piedini delle porte A - B - C vanno utiliz-
P B5 14 15 P B4 zati come ingressi e quali come uscite (vedi figg.
8-9).
Questi indirizzi devono essere definiti sempre alli-
nizio di ogni programma. Questa unoperazione
Fig.9 Nei microprocessori ST6 tipo E15-T15 che non dovete eseguire se utilizzate, come ab-
ed E25-T25 sono disponibili tre porte, la A,
biamo spiegato, il file STANDARD.ASM, perch
la B e la C. La porta A siglata A0-A1-A2-
abbiamo gi definito noi tutti i registri, cos da e-
A3-A4-A5-A6-A7, la porta B siglata B0-B1-
vitarvi errori.
B2-B3-B4-B5-B6-B7, mentre la porta C si-
glata C4-C5-C6-C7. Anche tutti questi pie-
dini possono essere utilizzati sia come En- IL REGISTRO ACCUMULATORE
trate sia come Uscite.
Nel microprocessore ST6 c un particolare regi-
stro chiamato accumulatore ed indicato sempre
con la lettera a, molto importante, perch esegue
le seguenti operazioni matematiche:
spazio e poi scrivere il numero, che rappresenta
lindirizzo della cella di memoria in cui volete allo- fa la somma
care questo dato. fa la sottrazione
fa la tavola della verit di un AND
Ricordatevi inoltre che se assegnate la stessa cella fa una comparazione tra due numeri
di memoria a due diverse variabili, il microproces- fa il complemento di un numero
sore non segnaler nessun errore, ma in questo ca-
so il programma funzioner in modo anomalo e voi Tutte queste operazioni matematiche si possono
non otterrete le funzioni che vi eravate prefissati. eseguire solo con il numero che avete provvedu-
to ad inserire nellaccumulatore; il risultato otte-
Per il programma che serve a far funzionare un o- nuto subentra poi automaticamente a sostituire il
rologio, potete definire nel seguente modo le 3 va- numero prima presente nel registro accumulato-
riabili: re.
Ritorniamo allesempio dellorologio e supponia- 2 ARITMETICHE
mo che siano le 10:25:30.
Poich la funzione dellorologio presuppone che si ADD - somma tra variabile e accumulatore
debba sempre sommare 1, tramite listruzione ld ADDI - somma tra numero e accumulatore
(load) spostiamo nellaccumulatore a il numero pre- AND - funzione And tra variabile e accumulatore
sente nella variabile dei secondi, cio 30. A que- ANDI - funzione And tra numero e accumulatore
sto punto possiamo sommare a questo il numero CLR - azzera una variabile
1, ottenendo 31. COM - complementa i bit nellaccumulatore
Ora sempre con listruzione ld, spostiamo nuova- CP - comparazione tra variabile e accumulatore
mente il risultato dal registro accumulatore alla va- CPI - comparazione tra numero e accumulatore
riabile dei secondi, che di conseguenza risulta o- DEC - sottrae 1 ad una variabile
ra 31. INC - somma 1 ad una variabile
Trascorso un secondo, si ripete il ciclo di istruzio- RLC - sposta una variabile a sinistra con riporto
ni: spostiamo il numero dalla variabile dei secon- SLA - sposta una variabile a sinistra senza riporto
di nel registro accumulatore, sommiamo a que- SUB - sottrazione tra variabile e accumulatore
sto 1 ed il nuovo risultato, 32, lo spostiamo nuo- SUBI - sottrazione tra accumulatore e numero
vamente nella variabile dei secondi.
3 SALTI CONDIZIONATI sullETICHETTA
Lintero ciclo appena descritto si riduce a tre istru-
zioni:
JRC - salta se c un riporto
ld a,secondi ; carica i secondi in a JRNC - salta se non c un riporto
addi a,1 ; somma ad a il numero 1 JRZ - salta se loperazione d 0
ld secondi,a ; carica somma nella variabile JRNZ - salta se loperazione non d 0
JRR - salta se un bit 0
JRS - salta se un bit 1
REGISTRI SPECIALIZZATI

Allinterno del microprocessore ST6 ci sono dei re- 4 SALTI INCONDIZIONATI sullETICHETTA
gistri specializzati che noi abbiamo definito nel no-
stro file STANDARD.ASM con le lettere x - y - v - CALL - esegui una subroutine
w e che vi potrebbero servire per semplificare par- JP - salta sempre sulletichetta
ticolari operazioni.
Ad esempio se voleste ottenere un impulso della 5 SETTAGGIO dei BIT
durata di 1 millisecondo potreste eseguire queste
istruzioni: SET - metti un bit a 1
RES - metti un bit a 0
set 0,port_b ; metti a 1 il piedino PB0
Idi x,103 ; assegna 103 a x
6 CONTROLLO CPU
ripeti dec x ; sottrai 1 a x
jrnz ripeti ; ripeti se x non a 0
NOP - serve per ottenere dei ritardi
res 0,port_b ; metti a 0 il piedino PB0
RET - ritorna da una subroutine
RETI - ritorna da un interrupt
Questa sequenza di istruzioni fa s che, iniziando STOP - blocca tutte le funzioni del micro
dal numero 103 e continuando a sottrargli 1 fino a WAIT - arresta lesecuzione del programma
quando non si raggiunto lo 0, passi esattamente
1 millisecondo.
TEMPI di ESECUZIONE

Il SET di ISTRUZIONI I tempi per eseguire unistruzione si calcolano a ci-


cli macchina e vanno da un minimo di 2 cicli ad
Le istruzioni del linguaggio assembler usate dal un massimo di 5 cicli macchina.
microprocessore ST6 sono molto semplici e pos- Tutte le istruzioni di Caricamenti Dati - Funzioni
sono essere cos suddivise: Aritmetiche - Salti Incondizionati - Settaggio Bit
impiegano 4 cicli macchina.
1 CARICAMENTO DATI Tutte le istruzioni Controllo CPU e le istruzioni
JRC - JRNC - JRZ - JRNZ dei Salti Condiziona-
LD - spostamento di dati tra due registri ti impiegano 2 cicli macchina.
LDI - caricamento di un numero in un registro Tutte le istruzioni JRR - JRS dei Salti Condizio-
nati impiegano 5 cicli macchina. dopo questa istruzione nellaccumulatore a pre-
Il tempo di un ciclo macchina dipende dalla fre- sente il numero 37, perch 22 + 15 = 37.
quenza del quarzo utilizzato per il clock.
Per calcolare il tempo di unistruzione potete usa-
re questa formula: ADDI

microsecondi = (13 : MHz quarzo) x N cicli Questa istruzione identica alla precedente con la
sola differenza che il numero da sommare a quel-
Ad esempio, se usate un quarzo da 2 MHz per e- lo presente nel registro accumulatore non pre-
seguire unistruzione aritmetica che necessita di 4 so dalla variabile, ma immesso direttamente da voi.
cicli, il microprocessore per svolgerla impiegher: Ad esempio, se al numero presente nellaccumu-
latore, che potrebbe essere 37, volete sommare il
(13 : 2) x 4 = 26 microsecondi numero 30, dovrete scrivere:

Se usate un quarzo da 8 MHz, la stessa istruzio- addi a,30


ne sar eseguita in un tempo di:
Dopo questa istruzione nellaccumulatore a pre-
(13 : 8) x 4 = 6,5 microsecondi sente il numero 30 + 37 = 67.

Per il clock potete usare dei quarzi di qualsiasi fre-


quenza, da 2,45 - 3,4 - 4,7 - 6,5 - 7 - 8 MHz. Nor- AND
malmente si utilizza la frequenza massima di 8 MHz
per rendere pi veloce lesecuzione di un pro- Questa istruzione permette di eseguire unopera-
gramma. zione AND tra il numero contenuto nellaccumula-
Non usate mai quarzi superiori agli 8 MHz, per- tore e quello nella variabile.
ch questa la frequenza massima accettata Per farvi comprendere meglio come viene effet-
dalloscillatore interno del microprocessore ST6. tuata questa operazione, riportiamo la tavola del-
la verit con i numeri binari.
COME usare le varie ISTRUZIONI
Tavola della verit
Le istruzioni vanno scritte secondo precisi criteri,
ed quindi abbastanza facile che un principiante accumulatore 0011
incontri qualche difficolt nellimpostarle. variabile 0101
Ripetiamo nuovamente che se non mettete il no-
me di unetichetta dovete sempre lasciare uno risultato 0001
spazio prima di scrivere listruzione o, ancora me-
glio, premete il tasto TAB, cos da avere tutte le i- Secondo questa tavola, quando presente un va-
struzioni incolonnate. lore logico 1 sia nellaccumulatore sia nella va-
Per ognuna delle istruzioni utilizzate dal linguaggio riabile, si ha come risultato 1; in ogni altra condi-
di programmazione Assembler, diamo di seguito u- zione si ha sempre come risultato 0.
na semplice spiegazione correlata da un esempio. Listruzione va scritta cos:

and a,secondi
ADD

Per eseguire una somma tra il numero presente Se nella variabile secondi presente il numero
nella variabile ed il numero presente nellaccu- decimale 30, che convertito in binario uguale a
mulatore, dovete scrivere listruzione in questo 00011110, e nellaccumulatore presente il nu-
modo: mero decimale 25, che convertito in binario u-
guale a 00011001, il risultato delloperazione AND
add a,secondi tra questi numeri :

Per questa istruzione abbiamo usato come varia- 00011110


bile il nome secondi, ma potevamo utilizzare un 00011001
nome diverso, a patto che fosse stato sempre di 8
caratteri, come ad esempio gradi - metri - litri ecc. 00011000 risultato
Se nellaccumulatore presente il numero 22 e
nella variabile secondi presente il numero 15, che corrisponde al numero decimale 24.
ANDI Ad esempio potrebbe verificarsi di dover ripetere
pi volte la seguente funzione di ritardo.
A differenza della precedente, questa istruzione e-
segue unoperazione AND tra il numero contenuto ritardo ldi x,103 ; assegna 103 a x
ripeti dec x ; sottrai 1 a x
nellaccumulatore ed un numero binario scritto jrnz ripeti ; ripeti se x non a 0
direttamente da voi sulla stessa riga dellistruzione. ret ; ritorna al programma
Quando nellaccumulatore e nel numero inserito
presente un valore logico 1 si ha come risultato
Tutte le volte che vorrete ripetere queste istruzioni
1; in ogni altra condizione si ha sempre come ri-
in una parte del programma, baster scrivere:
sultato 0.
Ammesso di avere nellaccumulatore il numero bi-
call ritardo ; chiama subroutine ritardo
nario 00011110 e di voler eseguire loperazione
AND con il numero binario 11111001, listruzione
va scritta: Come potete notare con due sole parole, call ri-
tardo, farete ripetere esattamente le stesse istru-
andi a,11111001B zioni contrassegnate dalletichetta ritardo, senza
bisogno di riscriverle.
In questo modo non solo eviterete di occupare al-
Come avrete notato, alla fine di questo numero ab- tra memoria nel microprocessore, ma soprattutto
biamo messo una B affinch il computer possa ri- non correrete il rischio di compiere qualche errore
conoscere che il numero binario. nel riscrivere le istruzioni.
Il risultato di questa operazione : Eseguita la subroutine ritardo, il microprocessore
proseguir con le istruzioni successive alla riga
00011110 call ritardo, perch alla fine della subroutine
11111001 presente listruzione ret, che significa: ritorna al
00011000 risultato programma nella riga successiva alla quale era
scritto call ritardo.
Le due funzioni AND e ANDI possono essere uti-
lizzate per modificare il livello logico sugli otto pie-
dini di uscita di una porta del microprocessore. CLR
Sapendo su quali di questi piedini presente un li-
vello logico 0 e su quali presente un livello lo- Questa istruzione serve per portare a 0 una varia-
gico 1, possibile accendere ad esempio dei dio- bile.
di led. Per spiegarci meglio riconsideriamo il programma
Nel nostro esempio, poich il risultato 00011000, per realizzare un orologio.
saranno spenti i primi tre diodi led, accesi i suc- Per ottenere la funzione orologio necessario che
cessivi due e spenti gli ultimi tre. il numero delle ore riparta da zero quando si rag-
Per portare il risultato dellistruzione ANDI sulla giunto il numero 24; allo stesso modo quando i mi-
porta di uscita B, bisogna scrivere questa istru- nuti ed i secondi hanno raggiunto il numero 60,
zione: devono ripartire a contare da zero.
Quando volete che le variabili chiamate ore - mi-
ld port_b,a nuti - secondi diventino 0 dovete scrivere:

che in pratica significa: carica (ld) sulla porta B il clr ore


risultato contenuto nellaccumulatore a. clr minuti
clr secondi

La funzione CLR pu essere usata anche per az-


CALL zerare il registro accumulatore scrivendo sempli-
cemente:
Questa istruzione viene adoperata quando si vuo-
le far eseguire al microprocessore una subrouti- clr a
ne, cio un parte di programma identificata con
unetichetta. In questo modo cancellerete eventuali numeri ri-
Le subroutine sono utili per eseguire pi volte lo masti nellaccumulatore da unoperazione prece-
stesso set di istruzioni. dente.
clr minuti ; azzera i minuti
COM inc ore ; incrementa di 1 le ore
ldi a,24 ; carica in a il numero 24
Questa funzione serve per complementare il nu- cp a,ore ; confronta a con variabile ore
mero binario presente nellaccumulatore. jrnz fine ; salto condizionato a fine
clr ore ; azzera le ore
In altre parole, questa istruzione inverte ogni sin- fine ; fine dellincremento
golo bit, quindi dove c 0 si ha 1 e dove c 1 si
ha 0.
Quando il numero dei secondi diverso da 60,
Se nellaccumulatore presente il numero bina-
numero caricato nellaccumulatore, si fa fare al
rio 00011000 scrivendo:
programma un salto condizionato, cio si salta
alla riga di programma con letichetta chiamata fi-
com a
ne.
Quando il numero dei secondi uguale a 60 que-
il contenuto dellaccumulatore diventer 11100111. sto salto non avviene, quindi il programma passa
alla riga successiva aumentando di 1 la variabile
dei minuti ed azzerando quella dei secondi.
CP Fino a quando la variabile dei minuti non avr rag-
giunto il numero 60, si fa fare un salto condizio-
Questa istruzione confronta il numero contenuto nato sulletichetta fine.
nellaccumulatore con quello presente nella va- Quando il numero dei minuti uguale a 60 que-
riabile. sto salto non avviene, quindi il programma passa
Da questo confronto il microprocessore ricava que- alla riga successiva aumentando di 1 la variabile
ste tre sole condizioni: delle ore ed azzerando quella dei minuti.
Il programma confronta il numero presente in que-
- il numero dellaccumulatore minore rispetto a sta variabile con quello presente nellaccumula-
quello della variabile. tore, che 24, e quando nella variabile presente
il numero 24, il programma passa alla riga suc-
- il numero dellaccumulatore uguale a quello cessiva, vedi clr ore, per azzerare la variabile o-
della variabile. re.
Se il microprocessore ripete questo programma o-
- il numero dellaccumulatore maggiore rispet- gni secondo, compiendo nel frattempo altre istru-
to a quello della variabile. zioni di programma, avrete ottenuto la funzione o-
rologio.
Questo confronto utile quando occorre far com-
piere dei salti condizionati al programma, per e-
seguire le operazioni che desiderate.
CPI
Prendiamo ancora una volta lesempio dellorolo-
gio. Questa istruzione si differenzia dalla precedente
Quando il numero nella variabile secondi giunge perch confronta il numero contenuto nellaccu-
a 60, bisogna ripartire da 0 ed aumentare di 1 il mulatore con un numero direttamente scritto da
numero nella variabile minuti. voi.
Quando il numero nella variabile minuti giunge a Da questo confronto il microprocessore ricava
60 , bisogna ripartire da 0 ed aumentare di 1 il nu- sempre queste tre sole condizioni:
mero nella variabile ore.
Quando il numero nella variabile ore giunge a 24, - il numero dellaccumulatore minore rispetto a
bisogna riportare a 0 le variabili ore - minuti - se- quello della variabile.
condi.
Il programma per eseguire queste funzioni va scrit- - il numero dellaccumulatore uguale a quello
to nel seguente modo: della variabile.
inc secondi ; incrementa di 1 i secondi
ldi a,60 ; carica in a il numero 60 - il numero dellaccumulatore maggiore rispet-
cp a,secondi ; confronta a con variabile sec.
jrnz fine ; salto condizionato a fine
to a quello della variabile.
clr secondi ; azzera i secondi
inc minuti ; incrementa di 1 i minuti
ldi a,60 ; carica in a il numero 60
Questo confronto utile quando occorre far com-
cp a,minuti ; confronta a con variabile min. piere dei salti condizionati al programma, per e-
jrnz fine ; salto condizionato a fine seguire le operazioni che desiderate.
Ad esempio, se volete realizzare un termostato quindi il numero presente nella variabile secondi
che disecciti un rel quando la temperatura ha viene aumentato di 1.
raggiunto i 20 gradi, un modo per scrivere le i-
struzioni potrebbe risultare il seguente:
NOTA importante per
ld a,gradi ; carica in a i gradi
le istruzioni DEC e INC
cpi a,20 ; compara i gradi con numero 20
jrc funz ; salta a funz se minore di 20 Quando utilizzate queste istruzioni dovete tenere
res 7,port_b ; diseccita il rel presente quanto segue:
funz ; non diseccitare il rel
- un ulteriore decremento (istruzione DEC) quan-
do la variabile arrivata al numero decimale 0
La temperatura prelevata da una sonda viene porta il valore della variabile a 255.
messa nellaccumulatore per essere poi compa- - un ulteriore incremento (istruzione INC) quando
rata con il numero 20. la variabile arrivata al numero decimale 255 por-
Se la temperatura minore di 20, il programma ta il valore della variabile a 0.
salta alletichetta siglata funz e quindi il rel non
si diseccita.
Quando la temperatura ha raggiunto i 20 gradi, il JP
microprocessore passa ad eseguire listruzione
presente nella quarta riga, cio si resetta, portan- Questa istruzione consente di effettuare un salto
do a livello logico 0 il piedino 7 della porta B. In incondizionato in un punto qualsiasi del pro-
questo modo il rel collegato su questo piedino si gramma marcato da unetichetta.
diseccita. Ad esempio, se dovete far lampeggiare un diodo
led con una cadenza di 1 secondo, dovete scri-
vere:
DEC
inizio ; etichetta
Questa istruzione serve per decrementare di 1 il com a ; se acceso spegni o viceversa
numero presente nella variabile specificata di se- ld port_b,a ; sposta su b quello che c in a
guito. call ritardo ; chiama funzione ritardo
jp inizio ; ripeti funzione dallinizio
Ad esempio, se volete che trascorsi 40 minuti si
disecciti un rel, dovete scrivere il programma nel
seguente modo: Vi ricordiamo che ritardo unetichetta (vedi i-
struzione CALL).
ldi tempo,40 ; carica in tempo il numero 40
..... ....... ;
dec tempo ; decrementa la variabile tempo JRC
ld a,tempo ; carica in a la variabile tempo
cpi a,0 ; confronta a con il numero 0 Questa istruzione viene sempre inserita nei pro-
jrnz funz ; se diverso da 0 salta in funz
res 7,port_b ; diseccita rel grammi dopo unistruzione CP o CPI per effettua-
funz ; non diseccitare il rel re un salto condizionato.
Se dalla comparazione il microprocessore rileva
che il numero presente nellaccumulatore mi-
Dopo avere caricato il numero 40 nella variabile nore di quello presente nella variabile, viene ef-
tempo, dovete completare il programma (spazio fettuato un salto sulletichetta.
indicato con puntini) per far eseguire al program- Nella funzione CPI, in cui vi abbiamo presentato un
ma un decremento ogni 60 secondi. esempio di programma per termostato, avete tro-
vato utilizzata listruzione JRC:

INC ld a,gradi ; carica nellaccumul. i gradi


cpi a,20 ; compara i gradi con numero 20
Questa istruzione serve per aumentare di 1 il nu- jrc funz ; salta a funz se minore di 20
mero presente nella variabile specificata di segui- res 7,port_b ; diseccita il rel
funz ; non diseccitare il rel
to.
Ritornando allesempio scritto per listruzione CP,
la prima riga conteneva listruzione: In questo caso il salto viene effettuato sulleti-
chetta siglata funz fino a quando la temperatura
inc secondi ; incrementa la variabile secondi non raggiunge i 20 gradi.
Nota importante: Il salto jrc riesce a raggiungere Nellistruzione DEC avevamo riportato un esem-
unetichetta solo se questa si trova ad una distanza pio per far diseccitare un rel dopo 40 minuti.
pari a circa 8 righe di programma.
Se eseguite un salto jrc su unetichetta che dista ldi tempo, 40 ; carica in tempo il numero 40
...... .......
pi di 8 righe, quando assemblerete il program- dec tempo ; decrementa la variabile tempo
ma, vi verr segnalato errore con la scritta 5-bit ld a, tempo ; carica in a la variabile tempo
displacement overflow. cpi a, 0 ; confronta a con il numero 0
jrnz funz ; se diverso da 0 salta in funz
res 7, port_b ; diseccita rel
funz ; non diseccitare il rel

JRNC Poich nella variabile abbiamo messo il numero


40 ed il microprocessore decrementa questo nu-
Questa istruzione viene sempre inserita dopo uni- mero di 1, avremo via via 39 - 38 - 37 ecc.
struzione CP o CPI per effettuare un salto condi- Dopo ogni decremento il numero presente nella va-
zionato. riabile viene comparato con il numero 0 e fino a
Se dalla comparazione il microprocessore rileva quando il numero nella variabile diverso da 0, vie-
che il numero presente nellaccumulatore mag- ne effettuato il salto nella riga funz ed il program-
giore oppure uguale a quello presente nella va- ma non esegue la successiva istruzione che di-
riabile, viene effettuato un salto sulletichetta. seccita il rel.
Nella funzione CPI il rel si diseccitava quando la Solo quando il numero presente nella variabile
temperatura superava i 20 gradi; se ora volete che uguale a 0, il microprocessore passa ad eseguire
il rel si disecciti quando la temperatura scende listruzione successiva e diseccita il rel.
sotto i 20 gradi, dovete modificare nella terza riga
listruzione jrc funz con la scritta jrnc funz, come Nota importante: Il salto jrnz riesce a raggiunge-
qui sotto riportato: re unetichetta solo se questa si trova ad una di-
stanza pari a circa 8 righe di programma.
ld a,gradi ; carica nellaccumul. i gradi Se eseguite un salto jrnz su unetichetta che di-
cpi a,20 ; compara i gradi con numero 20 sta pi di 8 righe, quando assemblerete il pro-
jrnc funz ; salta a funz se maggiore di 20 gramma, vi verr segnalato errore con la scritta
res 7,port_b ; diseccita il rel
funz ; non diseccitare il rel 5-bit displacement overflow.

JRZ
In questo caso il salto viene effettuato sulleti-
chetta siglata funz solo se la temperatura mag-
Questa istruzione viene sempre inserita in un pro-
giore o uguale a 20 gradi.
gramma dopo unistruzione CP o CPI per effettuare
In pratica si ottiene la funzione opposta quella che
un salto condizionato.
si otteneva con listruzione jrc.
Se dalla comparazione il microprocessore rileva
che il numero presente nellaccumulatore u-
Nota importante: Il salto jrnc riesce a raggiunge- guale a quello presente nella variabile, viene ef-
re unetichetta solo se questa si trova ad una di- fettuato un salto sulletichetta.
stanza pari a circa 8 righe di programma.
Se eseguite un salto jrnc su unetichetta che di-
Lesempio riportato nellistruzione DEC permette-
sta pi di 15 righe, quando assemblerete il pro-
va di diseccitare un rel dopo 40 minuti.
gramma, vi verr segnalato errore con la scritta 5-
Di seguito potete vedere le modifiche che abbiamo
bit displacement overflow.
apportato al programma per usare listruzione JRZ.

ldi tempo,0 ; carica in tempo il numero 0


..... .....
JRNZ inc tempo ; incrementa la variabile tempo
ld a,tempo ; carica in a la variabile tempo
cpi a,40 ; confronta a con il numero 40
Questa istruzione viene sempre inserita nel pro- jrz funz ; se uguale salta in funz
gramma dopo unistruzione CP o CPI per effettuare jp fine ; se non uguale salta in fine
funz ; prosegui alla riga dopo
un salto condizionato. res 7,port_b ; diseccita il rel
Se dalla comparazione il microprocessore rileva fine ; non diseccita il rel
che il numero presente nellaccumulatore di-
verso da quello presente nella variabile, viene ef- In questo caso abbiamo messo nella variabile il
fettuato un salto sulletichetta. numero 0, poi avendo dato listruzione per incre-
mentare questo numero di 1, avremo via via 0 - 1
- 2 - 3 ecc.
Tutte le volte che viene effettuato un incremento,
il numero presente nella variabile tempo viene
comparato con il numero 40 e fino a quando que-
sti due numeri sono diversi viene effettuato il sal- ST6 0
1
to sulletichetta fine ed il rel non si diseccita.
2
Solo quando il numero presente nella variabile u-
3
guale a 40, il microprocessore compie un salto PORTE
A-B-C 4
sulletichetta funz ed esegue listruzione successi-
va diseccitando il rel. 5
6

Nota importante: Il salto jrz riesce a raggiungere 7

unetichetta solo se questa si trova ad una distanza


pari a circa 8 righe di programma.
Se effettuate un salto jrz su unetichetta che dista
pi di 8 righe, quando assemblerete il program-
ma, vi verr segnalato errore con la scritta 5-bit
displacement overflow. Fig.10 Le istruzioni JRR e JRS possono es-
sere utili per controllare se le porte A-B-C
utilizzate come ingressi sono a livello lo-
JRR gico 1 oppure a livello logico 0. Usando
listruzione JRR avviene un salto se sul-
Questa istruzione serve per controllare se una ci- la porta dingresso presente un livello lo-
fra di un numero binario si trova a livello logico gico 0, mentre usando listruzione JRS il
0 e quando si rileva questa condizione viene effet- salto avviene se sulla porta dingresso
tuato un salto. presente un livello logico 1.
Listruzione JRR pu risultare utile per controllare
se il piedino dingresso di una qualsiasi porta A-
B-C si trova a livello logico 0 o a livello logico 1
(vedi figg.10-11).
Come sapete ogni porta da 8 bit numerata 0A -
1A- 2A - 3A ecc. 0B - 1B - 2B - 3B ecc.
Per controllare quando linterruttore posto sulla
porta 6B chiuso (vedi fig.12), e fare in modo che ST6 0

quando si riscontra questa condizione si ecciti un 1

rel di allarme posto sulla porta duscita 2A, do- 2

vete scrivere listruzione in questo modo: PORTE 3


A-B-C 4

jrr 6,port_b,eccita ; controlla porta 6B 5


jp fine ; va a fine se 6B a 1 6
eccita ; etichetta per proseguire 7
set 2,port_a ; eccita il rel su 2A
fine ; non eccitare il rel

In questa istruzione necessario fare un doppio


salto: il primo serve ad eccitare il rel se il linter-
ruttore applicato sulla porta 6B chiuso, il se-
condo (jp fine) serve a non eccitare il rel nel ca- Fig.11 Dopo che vi avremo insegnato come
so in cui linterruttore non risulti chiuso. predisporre una porta come Entrata, potre-
Se non avessimo inserito listruzione jp fine, il mi- te collegarle degli interruttori o dei pulsan-
croprocessore avrebbe proseguito con le istruzio- ti rivolti verso massa (vedi fig.10) o ver-
ni successive ed avrebbe ugualmente eccitato il so il positivo (vedi fig.11) oppure luscita
rel anche se linterruttore non fosse stato chiuso. di una porta Nand - Nor - Or ecc. per con-
trollare il loro livello logico. Nota: Sui vari
Nota importante: Il salto jrr riesce a raggiungere ingresso dovrete collegare delle resistenze
unetichetta solo se questa si trova ad una distanza con valori compresi tra 3.300 - 100.000 ohm.
pari a circa 60 righe di programma.
JRS LD

Questa istruzione serve per controllare se una ci- Questa istruzione serve per caricare il numero
fra di un numero binario si trova a livello logico contenuto in una variabile nellaccumulatore o vi-
1 e quando si rileva questa condizione viene effet- ceversa.
tuato un salto. Nella funzione CPI, in cui abbiamo riportato un e-
Listruzione JRS pu essere utile per controllare se sempio per far diseccitare un rel quando la tem-
il piedino dingresso di una qualsiasi porta A-B- peratura supera i 20 gradi, la comparazione vie-
C si trova a livello logico 0 o a livello logico 1 ne effettuata solo con il numero presente nellac-
(vedi figg.10-11). cumulatore, quindi abbiamo dovuto inserire allin-
Se volete controllare che linterruttore posto sulla terno dellaccumulatore il numero che era presen-
porta 6B risulti chiuso (vedi fig.13) e quando si ri- te nella variabile chiamata gradi:
scontra questa condizione, eccitare un rel di al- ld a,gradi ; carica nellaccumul. i gradi
larme posto sulla porta duscita 2A, dovete scri- cpi a,20 ; compara i gradi con numero 20
vere listruzione in questo modo: jrnc funz ; salta a funz se maggiore di 20
res 7,port_b ; diseccita il rel
funz ; non diseccitare il rel

jrs 6,port_b,eccita ;controlla porta 6B Se la variabile gradi contiene il numero 15, dopo
jp fine ; va a fine se 6B a 0 listruzione ld a,gradi anche il numero presente
eccita ; etichetta per proseguire
set 2,port_a ; eccita il rel su 2A nellaccumulatore avr un valore di 15.
fine ; non eccitare il rel

LDI
In questa istruzione necessario compiere un dop-
Questa istruzione serve per caricare in una varia-
pio salto: il primo serve ad eccitare il rel se lin-
bile oppure nellaccumulatore un qualsiasi nu-
terruttore applicato sulla porta 6B chiuso, il se-
mero da voi prescelto e compreso tra 0 e 255.
condo (jp fine) serve a non eccitare il rel nel ca-
Nellistruzione DEC abbiamo riportato un esempio
so in cui linterruttore non risulti chiuso.
per diseccitare un rel dopo 40 minuti. Questo
Se non avessimo inserito listruzione jp fine, il mi-
numero va quindi inserito nella variabile tempo co-
croprocessore avrebbe proseguito con le istruzio-
me qui sotto riportato:
ni successive ed avrebbe ugualmente eccitato il
rel anche se linterruttore non fosse stato chiuso. ldi tempo,40 ; carica in tempo il numero 40
...... ......
dec tempo ; decrementa la variabile tempo
ld a,tempo ; carica in a la variabile tempo
Nota importante: Il salto jrs riesce a raggiungere cpi a,0 ; confronta a con il numero 0
jrnz funz ; se diverso salta in funz
unetichetta solo se questa si trova ad una distanza res 7,port_b ; diseccita rel
pari a circa 60 righe di programma. funz ; non diseccitare il rel

ST6 ST6

C C
B B
6B 2A 6B 2A
E E

Fig.12 Nel programma riportato al paragrafo Fig.13 Nel programma riportato al paragrafo
JRR il rel si eccita ogni volta che corto- JRS il rel si eccita ogni volta che collega-
circuitate verso massa linterruttore po- te verso il positivo linterruttore posto
sto sulla porta 6B. In questo modo sulla sulla porta 6B. In questo modo sulla porta
porta di uscita 2A ritroverete un livello lo- di uscita 2A ritroverete un livello logico 1
gico 1 che polarizzer il transistor. che polarizzer il transistor.
Dopo listruzione ldi tempo,40 scritta nella prima SET
riga, la variabile tempo uguale a 40.
Questa istruzione serve per forzare ad un livello
NOP logico 1 il bit di una variabile.
Nellistruzione JRS abbiamo riportato un esempio
Questa istruzione viene usata pochissimo, perch per eccitare un rel ogni volta che il pulsante po-
serve solamente per ottenere un ritardo di qual- sto sulla porta 6B viene pigiato.
che microsecondo. Infatti fa eseguire al micro- Nella riga in cui posta la funzione set 2,port_a,
processore 2 cicli macchina a vuoto. viene forzata luscita 2 della porta A a livello lo-
Per eseguire questa funzione sufficiente scrive- gico 1, in modo che provveda ad eccitare il rel.
re, dopo aver lasciato uno spazio, la parola NOP;
scrivendola pi volte aumenterete il ritardo. jrs 6, port_b,eccita ; controlla porta 6B
jp fine ; va a fine se 6B a 0
Se nel microprocessore avete utilizzato un quarzo eccita ; etichetta per proseguire
da 8 MHz, che esegue 1 ciclo macchina in un tem- set 2,port_a ; eccita il rel su 2A
po di 1,625 microsecondi, e scrivete: fine ; non eccitare il rel

nop ; ritardo 3,25 microsec. In pratica listruzione SET compie loperazione in-
nop ; ritardo 3,25 microsec. versa allistruzione RES.
nop ; ritardo 3,25 microsec.

otterrete un ritardo totale di 9,75 microsecondi. RET

Questa istruzione viene posta alla fine di una su-


RES broutine per comunicare al microprocessore di ri-
tornare nel punto del programma in cui questa su-
Questa istruzione serve per forzare ad un livello broutine stata chiamata.
logico 0 il bit di una variabile. Nellistruzione CALL abbiamo riportato una su-
Nella funzione CPI abbiamo riportato un esempio broutine per ottenere un ritardo, cio:
per diseccitare un rel quando la temperatura su-
ritardo ldi x,103 ; assegna 103 a x
pera i 20 gradi. Questa operazione compiuta dal- ripeti dec x ; sottrai 1 a x
la istruzione res a cui bisogna specificare di se- jrnz ripeti ; ripeti se x non a 0
guito quale porta deve resettare (nel nostro e- ret ; ritorna al programma
sempio la 7,port_b).
Volendo ottenere un ritardo dovete richiamare la
ld a,gradi ; carica nellaccumul. i gradi subroutine chiamata ritardo scrivendo:
cpi a,20 ; compara i gradi con numero 20
jrnc funz ; salta a funz se maggiore di 20 call ritardo ; chiama subroutine ritardo
res 7,port_b ; diseccita il rel
funz ; non diseccitare il rel Alla fine della subroutine abbiamo posto listru-
zione RET per far tornare il programma alla riga
Ammettendo che tutte le uscite della porta B sia- posta di seguito allistruzione call ritardo.
no a livello logico 1, cio: Vi ricordiamo che al termine della subroutine oc-
corre sempre mettere listruzione RET, diversa-
11111111 mente il programma non ritorner nel punto in cui
abbiamo chiamato la subroutine, ma proseguir
Il programma modificher il solo bit 7 della porta con le righe successive, senza segnalare nessun
B, cio il primo bit a sinistra, quindi vi ritroverete errore, ma causando anomalie nel funzionamento
con: del programma.

01111111
RETI
Se voleste azzerare oltre il piedino 7 della porta B
Questa istruzione viene utilizzata alla fine di parti-
anche i piedini 6 - 5, dovreste scrivere:
colari tipi di subroutine che si chiamano interrupt
res 7,port_b e che sono identificati con le etichette:
res 6,port_b
res 5,port_b ad_int ; serve per il convertitore A/D
tim_int ; serve per il timer
BC_int ; serve per le porte B-C
Vi ricordiamo che il numero di bit per ogni porta va A_int ; serve per la porta A
da 0 a 7. nmi_int ; serve per il piedino nmi
Dopo una di queste etichette, si interrompono mo- zione eseguita ha un riporto, in altre parole quan-
mentaneamente le funzioni del programma princi- do il risultato superiore a 255.
pale e vengono eseguite le istruzioni che si trova- Ad esempio, se il valore nellaccumulatore 250,
no dopo linterrupt. dopo aver eseguito listruzione:
Alla fine di questa subroutine di interrupt dovre-
addi a,100
te inserire listruzione RETI per ritornare al pro-
gramma principale, nel punto in cui si trovava pri- il valore del carry 1.
ma dellinterruzione forzata.
Come noterete, nel microprocessore ST6 c un Tornando allistruzione RLC, se allinterno dellac-
piedino chiamato appunto nmi (corrisponde al pie- cumulatore presente il numero binario
dino 5) sul quale potete collegare un pulsante (ve- 00000100 e nel carry presente un 1, scrivendo
di fig.14) che potrete usare per interrompere for- listruzione:
zatamente una funzione.
Ammettiamo che abbiate scritto un programma per rlc a
lautomazione di un trapano e mentre questo sta
ritroverete nellaccumulatore questo numero bina-
eseguendo la foratura, si spezzi la punta.
rio:
In questo caso dovete immediatamente interrom-
pere il programma e togliere la tensione di alimen-
00001001
tazione dal trapano per sostituire la punta.
Il programma va scritto nel seguente modo:
Se nel carry fosse parcheggiato uno 0, nellaccu-
nmi_int ; etichetta nmi di interrupt mulatore ritrovereste questo numero binario:
res 5,port_b ; resetta la porta 5B
reti ; termine subroutine 00001000
La porta 5B quella che eccita o diseccita il tele-
La funzione RLC potrebbe risultarvi utile per ac-
ruttore che alimenta il trapano.
cendere in sequenza a ciclo continuo dei diodi
led. Infatti il numero che perdete sulla sinistra en-
tra nel carry per rientrare poi sulla destra.
RLC
SLA
Questa istruzione serve per spostare verso sini-
stra tutte le cifre di un numero binario presente
Anche questa istruzione serve per spostare verso
nellaccumulatore.
sinistra tutte le cifre di un numero binario pre-
Sulla destra di tale numero entrer un 1 o uno 0,
sente nellaccumulatore, con la sola differenza
che risulta parcheggiato in una particolare cella di
che, non utilizzando il carry, sulla destra entra sem-
memoria RAM chiamata CARRY, presente allin-
pre uno 0 ed il numero che fuoriesce a sinistra va
terno del microprocessore.
perso.
Il valore del carry 1 solo quando lultima opera-
Listruzione SLA pu essere utile per ottenere una
moltiplicazione per 2.
Ad esempio, se nellaccumulatore presente que-
sto numero binario
ST6
00010111

NMI B
C
che corrisponde al numero decimale 23, scriven-
56B 5B do:
E

sla a

nellaccumulatore troverete questo diverso nume-


ro binario:
Fig.14 Se scrivete il programma con leti-
chetta nmi_int riportato nel paragrafo RE- 00101110
TI (vedi sopra), quando il piedino 5 del-
lNMI viene posto a livello logico 0, anche che corrisponde al numero decimale 46 (equiva-
sulluscita 5B ritroverete un livello logico 0 lente a 23 x 2).
ed il rel si disecciter. Il numero massimo che potete moltiplicare per 2
127.
ldi a, 183 ; numero nellaccumulatore
STOP ldi pippo, 53 ; numero inserito nella variabile
sub a, pippo ; sottrai da a il valore di pippo
Questa istruzione serve per interrompere lesecu-
zione di un programma e per spegnere lo stadio o- Eseguita questa operazione nellaccumulatore a-
scillatore del clock. vrete 183-53 = 130.
E unistruzione che si usa raramente.
SUBI
WAIT
Questa istruzione viene utilizzata per sottrarre dal
Questa istruzione serve per interrompere lesecu-
numero presente nellaccumulatore un numero da
zione di un programma, con la sola differenza ri-
voi inserito nella riga di questa istruzione.
spetto alla precedente, che non si spegne lo sta-
Se nellaccumulatore presente il numero 183 e
dio oscillatore del clock.
gli volete sottrarre il numero 53, dovrete scrivere
listruzione in questo modo:
SUB
ldi a,183 ; numero nellaccumulatore
Questa istruzione viene utilizzata per sottrarre dal subi a,53 ; sottrai da a il numero 53
numero presente nellaccumulatore il numero con-
tenuto in una variabile. Il risultato presente nellaccumulatore sar dopo
Se nellaccumulatore presente il numero 183 e questa istruzione 130.
volete sottrargli il numero decimale 53, dovrete in- Come per la precedente, anche con questa istru-
serire in una variabile, chiamata ad esempio pip- zione non potete sottrarre un numero maggiore a
po, il numero 53 scrivendo questa istruzione: quello presente nellaccumulatore.
CONTINUA nel PROSSIMO NUMERO
Sebbene con gli articoli e gli esempi pubblicati sul- mente incolonnate ed in caso di necessit potrete
le riviste N.172/173 e 174 siate gi riusciti a pro- controllarle meglio.
grammare e a cancellare senza difficolt il mi- Non obbligatorio inserire lultimo blocco, quello del
croprocessore ST6, questo non ancora suffi- commento, ma se lo aggiungete dovete ricordarvi
ciente per passare alla fase pi propriamente pra- di farlo precedere sempre da un punto e virgola.
tica, iniziare cio a scrivere dei programmi, perch Nei programmi che troverete di seguito ogni bloc-
occorre prima conoscere come vanno corretta- co stato evidenziato da un rettangolo colorato
mente utilizzati: in azzurro.
Cos se ad esempio in una riga di programma man-
- la funzione watchdog ca letichetta, troverete al suo posto un rettango-
- i piedini delle porte come ingressi lo colorato senza alcuna scritta al suo interno.
- i piedini delle porte come uscite Questo per ricordarvi che per avere tutte le istru-
- la funzione interrupt zioni incolonnate dovete lasciare un carattere di ta-
- la funzione A/D converter bulazione prima di scrivere il secondo blocco, quel-
- la funzione timer lo cio dellistruzione.

IMPARARE a programmare
NOTA IMPORTANTE WATCHDOG

Negli articoli precedenti (vedi riviste N.172/173 e Il watchdog un contatore pilotato dalla frequen-
174) vi abbiamo consigliato di scrivere tutte le za di clock del quarzo, che, iniziando dal numero
istruzioni in minuscolo sottolineando nel frattem- che avete inserito nel registro wdog ( sempre be-
po che non cambia assolutamente nulla se utiliz- ne inserire un numero alto, ad esempio 255), con-
zate la forma maiuscola. ta a rovescio fino ad arrivare a 0.
Abbiamo tuttavia notato che la tipografia quando Quando raggiunge lo 0, il watchdog resetta auto-
trascrive questi testi in minuscolo compie pi fre- maticamente il microprocessore, che in questo mo-
quentemente errori tipografici; infatti confonde la do non potr pi proseguire con il programma che
lettera i con la lettera l e viceversa, la lettera r per stava eseguendo.
la n, e spesso trascrive cos vicino le due lettere r Il watchdog impedisce che eventuali disturbi pre-
n da farle sembrare una m. senti sulla tensione di rete dei 220 volt o generati
Proprio per evitare questo tipo di errori da adesso da altri fonti, entrando involontariamente nel mi-
in poi scriveremo le righe dei programmi un po in croprocessore lo predispongano per eseguire fun-
maiuscolo ed un po in minuscolo. zioni non previste.
Ripetiamo nuovamente che ogni riga di program- Tanto per portare un esempio, supponiamo di aver
ma composta da quattro blocchi chiamati Eti- programmato un ST6 per far eseguire ad un tor-
chetta - Istruzione - Operando ; Commento (ve- nio automatico delle viti filettate lunghe 10 milli-
di fig.1), che dovrete tenere distanziati gli uni dagli metri.
altri con un carattere di tabulazione. Pu verificarsi il caso in cui un disturbo, entrando
In questo modo avrete tutte le istruzioni perfetta- nel micro, lo predisponga per togliere la filettatura

ETICHETTA ISTRUZIONE OPERANDO


; COMMENTO RIGA

Fig.1 Ogni riga di programma composta da quattro blocchi che occorre tenere distan-
ziati da uno spazio. Potrete anche non inserire lultimo blocco del COMMENTO, ma se
lo utilizzate, dovrete farlo precedere da un punto e virgola. Se nella riga di un programma
mancasse lETICHETTA, dovrete lasciare uno SPAZIO prima di scrivere lISTRUZIONE.
i microprocessori ST6
Poich ci siamo ripromessi di insegnarvi a programmare correttamen-
te un ST6, nostra intenzione spiegarvi in modo molto semplice e con
numerosi esempi tutti i passi che bisogna compiere, per evitare che
commettiate quei comuni ed involontari piccoli errori, che potrebbero
impedire il regolare funzionamento del microprocessore.

o per fare delle viti lunghe 10 centimetri. ritenendolo difettoso oppure cercavano nel pro-
Per evitare che, in assenza di disturbi, il contato- gramma un errore, che in realt non esisteva.
re del watchdog possa raggiungere lo 0 e quindi A chi ci ha interpellato per queste anomalie ab-
resettare il microprocessore mentre sta eseguen- biamo chiesto se vicino ad unetichetta ripeti o ad
do le istruzioni del programma, dovrete sempre ri- una funzione che il programma eseguiva diverse
cordarvi di inserire ogni 20 - 30 - 40 righe di pro- volte era stata riportata la riga LDI wdog,255, e
gramma questa scritta: quasi sempre abbiamo ricevuto una risposta ne-
gativa.
LDI wdog,255 Dopo aver spiegato che il watchdog si pu para-
gonare ad una pila ricaricabile e, come tale, ogni
Conviene inserire questa istruzione dopo uneti- tanto occorre ricaricarla per evitare che arrivi a 0
chetta che faccia ripetere alcune righe di pro- volt, tutti hanno capito limportanza di questa
gramma diverse volte, perch in questi casi che funzione e dopo averla inserita nel loro program-
il contatore del watchdog pu pi facilmente sca- ma gli inconvenienti lamentati sono spariti.
ricarsi, cio raggiungere lo 0.
Se ci avviene, il microprocessore si resetta, in al- Negli esempi che trovate in questo articolo trove-
tre parole non pu pi proseguire con le successi- rete spesso questa istruzione:
ve istruzioni ed il programma riparte dallinizio.
Molti programmatori principianti non trovando ripeti LDI wdog,255 ; carica il watchdog
unesauriente spiegazione e nemmeno nessun e- ..... ; programma
sempio su come utilizzarla, non inserivano que- JP ripeti ; salta a ripeti
sta istruzione, e quando il programma si blocca-
va perch il watchdog arrivava a 0, non sapen- che in pratica serve a ricaricare questa pila sul
do trovare unaltra spiegazione, cambiavano lST6 numero massimo che possiamo inserire, cio 255.
TABELLA N.1 per ST62/E10 - ST62/T10 - ST62/E20 - ST62/T20
porta A0 A1 A2 A3 B0 B1 B2 B3 B4 B5 B6 B7
piedino 19 18 17 16 15 14 13 12 11 10 9 8

1 20
Fig.2 Allinterno dei micro-
2 19 A0
3 18 A1
processori ST62 della se-
A0 4 17 A2 rie 10-20 sono presenti
PORTA A A1 5 16 A3 due PORTE chiamate A-B.
A2 6 15 B0 Nella porta A troviamo so-
A3 7 14 B1
13
lo quattro piedini Ingres-
B7 8 B2
B6 9 12 B3
si/Uscita siglati A0-A1-A2-
B5 10 11 B4 A3, mentre nella porta B
troviamo otto piedini si-
B0
B1 glati da B0 a B7.
B2 ST 62 E 10 Nella Tabella sopra ripor-
B3 ST 62 T 10 tata abbiamo indicato a
PORTA B B4 quale piedino dellST6 cor-
B5 ST 62 E 20 rispondono i piedini di
B6
ST 62 T 20 queste due PORTE.
B7

TABELLA N.2 per ST62/E15 - ST62/T15 - ST62/E25 - ST62/T25

porta A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C4 C5 C6 C7
piedino 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 9 8 7 6

A0 1 28
A1 2 27 A0
A2 3 26 A1
Fig.3 Allinterno dei micro-
A3 processori ST62 della se-
PORTA A A4
4 25 A2
5 24 A3 rie 15-25 sono presenti tre
A5 C7 6 23 A4 PORTE chiamate A-B-C.
A6 C6 7 22 A5
A7 C5
Nelle due porte A-B sono
8 21 A6
C4 9 20 A7 presenti otto piedini In-
10 19 B0 gressi/Uscita siglati da A0
B0
B1
11 18 B1 a A7 e da B0 a B7, mentre
B7 12 17 B2
B2 nella porta C troviamo so-
B6 13 16 B3
B3 lo quattro piedini siglati
PORTA B B4
B5 14 15 B4
C4-C5-C6-C7.
B5 Nella Tabella sopra ripor-
B6
tata abbiamo indicato a
B7 ST 62 E 15
quale piedino dellST6 cor-
C4 ST 62 T 15 rispondono i piedini di
C5 queste tre PORTE.
PORTA C C6
ST 62 E 25
C7 ST 62 T 25
LE PORTE sui piedini
del MICROPROCESSORE

Allinterno di tutti i microprocessori ST6 sono pre-


senti due oppure tre porte siglate A-B-C i cui ter-
minali, contraddistinti dalle sigle A0 - A1 - A2 ecc.
e B0 - B1 - B2 ecc., fanno capo ai piedini del mi-
croprocessore (vedi figg.2-3). IN/OUT
Nelle Tabelle N.1 e N.2 riportiamo i numeri dei pie-
dini a cui sono collegati i terminali delle porte pre-
E
senti nei diversi integrati ST6. B
Conoscere a quale piedino risultano collegati i ter-
C
minali di queste porte molto importante, perch
C
nella riga del programma non viene mai indicato il B
numero del piedino, ma la sola sigla della porta,
E
cio A0 - A2 - A3 o B5 - B6 - B7 ecc.

COME SETTARE LE PORTE

Per settare il piedino prescelto come ingresso


senza pull-up - ingresso con interrupt - ingres-
so analogico - ingresso pull-up oppure come u- Fig.4 Inserendo nei tre registri PDIR - POPT
scita open collector - uscita push-pull, dobbia- - PORT degli 0 o degli 1 (vedi Tabella N.3),
mo inserire nei registri pdir - popt - port degli 0 o noi possiamo predisporre il piedino di una
degli 1, disponendoli come abbiamo riportato nella qualsiasi Porta a funzionare come Ingres-
Tabella N.3. so oppure come Uscita.

Esempio: Ammesso di voler predisporre tutti i pie-


dini della porta A come ingressi tipo pull-up, do- Ricordatevi che dopo il nome dei tre registri, pdir
vremmo necessariamente scrivere queste tre righe: - popt - port, bisogna sempre indicare il tipo di por-
ta che si vuole utilizzare scrivendo:
LDI pdir_a,00000000B
LDI popt_a,00000000B _a se la porta la A
LDI port_a,00000000B _b se la porta la B
_c se la porta la C
Se volessimo invece predisporre tutti i piedini del-
la porta A come uscita in push-pull dovremmo Non scrivete -a, in altre parole non utilizzate il se-
necessariamente scrivere queste tre righe. gno della sottrazione, ma sempre il segno del sot-
tolineato, cio _a.
LDI pdir_a,11111111B La lettera B, posta dopo lultima cifra di destra di
LDI popt_a,11111111B ogni riga, serve ad indicare che si tratta di un nu-
LDI port_a,00000000B mero binario.

TABELLA N.3 per predisporre gli ingressi e le uscite


Registri

INGRESSI USCITE
con senza con per segnali open uscita
pull-up pull-up interrupt analogici collector push-pull
pdir 0 0 0 0 1 1
popt 0 0 1 1 0 1
port 0 1 0 1 0 0
Fig.5 Per predisporre il piedino di una Porta a funzione come Ingresso oppure come U-
scita, bisogna scrivere nei tre registri PDIR - POPT - PORT gli 0 o gli 1 nellordine ripor-
tato in questa Tabella. Nellarticolo trovate molti esempi su come settare queste Porte.
NOTA IMPORTANTE: Non tutti i piedini delle por- Ogni terminale di queste porte viene definito da
te si possono settare come ingresso per segnali uno degli otto numeri posti dopo la virgola, ricor-
analogici, quindi per evitare errori ricordatevi che dando che il terminale 7 la prima cifra a sinistra
di tutti i microprocessori riportati sia nella Tabella ed il terminale 0 lultima cifra a destra, come qui
N.1 sia nella Tabella N.2, non potrete mai utilizza- sotto riportato:
re come ingressi analogici i piedini A0 - A1 - A2
- A3. TABELLA N.4
Queste porte potranno invece essere settate per cifra 1 2 3 4 5 6 7 8
tutti gli altri tipi di ingresso, cio con pull-up - sen- piedino A7 A6 A5 A4 A3 A2 A1 A0
za pull-up - con interrupt. piedino B7 B6 B5 B4 B3 B2 B1 B0
Al contrario tutti i piedini di tutte le porte possono piedino C7 C6 C5 C4
essere settati come uscite, tenendo presente che
luscita pi comunemente utilizzata il push-pull,
che si ottiene ponendo a 1-1-0 i tre registri pdir, Quindi se volessimo caricare un 1 nel registro pdir
popt e port. di A7 dovremmo scrivere:

Per concludere facciamo presente che lingresso LDI pdir_a,10000000B


pi comunemente utilizzato quello con pull-up
che si ottiene ponendo a 0-0-0 i tre registri pdir,
mentre se volessimo caricare un 1 nel registro
popt e port.
pdir di A4 dovremmo scrivere:
E inoltre sempre consigliabile settare come in-
gressi tutti i piedini che non vengono usati, perch
in questo modo non si corre il rischio di provocare LDI pdir_a,00010000B
involontariamente dei cortocircuiti che potrebbe-
ro mettere fuori uso il microprocessore. ed ancora se volessimo caricare un 1 nel registro
Infatti se un piedino che non viene utilizzato viene pdir di A0 dovremmo scrivere:
settato come uscita e poi viene collegato invo-
lontariamente a massa, anche tramite una resi- LDI pdir_a,00000001B
stenza di basso valore, pu capitare che per un er-
rore nel programma questo piedino cambi il suo
Per completare il settaggio di ogni porta si devo-
stato logico da 0 a 1, ed in questo caso in uscita
no aggiungere le altre due righe di programma, do-
si potrebbe ritrovare una tensione positiva di 5 volt
ve compaiono i registri popt e port, mettendo de-
che potrebbe provocare dei cortocircuiti.
gli 0 o degli 1 come riportato nella Tabella N.3.
Per questo motivo, come noterete dagli esempi,
tutti i piedini delle porte A - B - C che non ven-
gono utilizzati li abbiamo settati come ingressi in Ammesso che si voglia settare il piedino 5 della
pull-up. porta B come uscita in push-pull si dovr scrive-
re:

Posizione dei PIEDINI LDI pdir_b,00100000B


nel NUMERO BINARIO LDI popt_b,00100000B
LDI port_b,00000000B
Per poter predisporre i piedini delle porte come in-
gressi o come uscite si utilizza un numero bina- Infatti la sequenza per settare un piedino in usci-
rio composto da otto cifre. ta push-pull 1-1-0, e, come abbiamo riportato
Molti tra voi si staranno chiedendo come si fa a ca- nella Tabella N.4, il piedino B5 la terza cifra a
pire qual il piedino A0 - A1 - A2 ecc. oppure B0 partire da sinistra.
- B1 - B2 ecc., in quanto anche se abbiamo indi- Come abbiamo gi avuto modo di dire, tutti i pie-
cato il tipo di porta con _a, con _b o con _c, non dini delle porte A - B - C che non vengono utiliz-
abbiamo mai precisato il suo terminale 0-1-2-3-4- zati devono comunque essere settati come in-
5-6-7. gressi in pull-up (0 - 0 - 0).
Inoltre non abbiamo ancora specificato come ci si
deve comportare con i microprocessori della Ta- Nei microprocessori che hanno solo quattro piedi-
bella N.1, dove la porta A ha solo quattro piedini ni per la porta A (A0 - A1 - A2 - A3), si devono
siglati A0 - A1 - A2 - A3 o con quelli della Tabel- comunque riportare sempre tutte le otto cifre del
la N.2, dove la porta C ha invece quattro piedini numero binario.
siglati C4 - C5 - C6 - C7. Quindi se volessimo predisporre come uscite pu-
sh-pull i piedini della porta A di un ST62E10, do- legenda:
vremmo scrivere:
LDI = significa carica sul registro.

LDI pdir_a,00001111B pdir - popt - port = sono i tre registri necessari per
LDI popt_a,00001111B settare una porta.
LDI port_a,00000000B
_a e _b = sono le porte A e B ed il numero che
segue dopo la virgola indica quale degli otto pie-
Allo stesso modo, se volessimo predisporre come dini, 7-6-5-4-3-2-1-0, vogliamo settare come in-
uscite push-pull tutti i quattro piedini dei micro- gresso o come uscita.
processori che hanno anche la porta C (C4 - C5 -
C6 - C7) dovremmo scrivere: B = questa lettera posta sullestrema destra indica
che il numero a otto cifre un Binario.

LDI pdir_c,11110000B
LDI popt_c,11110000B Esempio N.2 = Disponendo di un ST6 del tipo ri-
LDI port_c,00000000B portato nella Tabella N.2, ad esempio un ST62E15,
vorremmo programmare tutti i piedini delle porte
A-B-C come ingressi pull-up.
Ogni piedino di ogni porta pu essere singolar-
mente settato come ingresso o come uscita e Soluzione: Controlliamo nella Tabella N.3 se dob-
persino in maniera differente. biamo mettere uno 0 o un 1 nei tre registri pdir -
Ad esempio, possiamo settare il piedino B1 della popt - port per poterli settare come ingressi pull-
porta B come uscita push-pull, il piedino B2 co- up, quindi poich in tutti va inserito uno 0 scrivia-
me ingresso pull-up, il piedino B3 come ingres- mo:
so analogico ed il piedino B4 come uscita open
collector.
LDI pdir_a,00000000B
LDI popt_a,00000000B
ESEMPI di SETTAGGIO piedini LDI port_a,00000000B

Esempio N.1 = Disponendo di un ST6 del tipo ri- LDI pdir_b,00000000B


portato nella Tabella N.1, ad esempio un ST62E10, LDI popt_b,00000000B
vorremmo programmare i piedini A0 - A1 come in- LDI port_b,00000000B
gressi senza pull-up ed i piedini B4 - B5 - B6 -
B7 come uscite in push-pull. LDI pdir_c,00000000B
LDI popt_c,00000000B
Soluzione: Per scrivere queste istruzioni esami- LDI port_c,00000000B
niamo prima di tutto la Tabella N.3, per sapere qual
la cifra, se 0 o 1, che dobbiamo mettere nei tre
registri pdir - popt - port. Come avrete notato, anche sulla porta C abbiamo
Sapendo che per ogni riga che definisce il settag- messo tutti 0 sebbene questa abbia solo quattro
gio dei piedini dobbiamo sempre mettere 8 cifre e piedini siglati C4 - C5 - C6 - C7.
che il piedino 7 definito dalla prima cifra a sini-
stra e lo 0 dallultima cifra a destra, possiamo scri-
vere le nostre istruzioni: Esempio N.3 = Disponendo di un ST6 del tipo ri-
portato nella Tabella N.2 vorremmo programmare
il piedino B2 come ingresso pull-up, il piedino B1
LDI pdir_a,00000000B come ingresso analogico ed il piedino C7 come
LDI popt_a,00000000B uscita push-pull.
LDI port_a,00000011B
Soluzione: Controlliamo innanzitutto nella Tabella
N.3 come vanno settati i tre registri pdir - popt -
LDI pdir_b,11110000B port per avere un ingresso pull-up, un ingresso
LDI popt_b,11110000B analogico ed una uscita push-pull, quindi sa-
LDI port_b,00000000B pendo che per ogni riga di programma dobbiamo
sempre mettere 8 cifre e che il piedino 7 defini-
to dalla prima cifra a sinistra e lo 0 dallultima ci-
fra a destra, scriviamo:
ST6
LDI pdir_a,00000000B
LDI popt_a,00000000B C
B
LDI port_a,00000000B A1 A2
E

LDI pdir_b,00000000B
LDI popt_b,00000010B
LDI port_b,00000010B

LDI pdir_c,10000000B Fig.6 Schema da utilizzare per far eccitare


il rel con il programma dellESEMPIO N.4.
LDI popt_c,10000000B
LDI port_c,00000000B

Come indicato dalla Tabella N.3, nei tre registri re-


lativi alla porta B abbiamo messo 0-0-0 per il pie- ST6
dino B2 e 0-1-1 per il piedino B1, mentre nelle tre
righe relative alla porta C, per il piedino C7 abbia- C
B
mo posto 1-1-0. A1 A2
E

Qualcuno si star gi chiedendo in quale applica-


zione pratica possiamo utilizzare un piedino setta-
to come ingresso. Anche se in seguito troverete
alcuni esempi su questo argomento, possiamo an-
ticiparvi subito che potete usarlo per vedere se Fig.7 Schema da utilizzare per far eccitare
sullingresso entra una tensione positiva oppure il rel con il programma dellESEMPIO N.5.
per stabilire se questa cambia di stato logico da 0
a 1 e viceversa, o ancora per convertire una ten-
sione analogica in una digitale ecc. Dalla Tabella N.3 controlliamo come settare i re-
gistri pdir - popt - porta per far diventare questi
piedini ingressi o uscite, dopodich possiamo
Esempio N.4 = Abbiamo realizzato lo schema di scrivere tutte le righe del programma indicato a fi-
fig.6 da utilizzare per un antifurto, quindi vorremmo ne pagina.
che si eccitasse un rel ogni volta che linterrutto- Nella riga ripeti abbiamo ricaricato il watchdog,
re viene pigiato. poi con listruzione JRS abbiamo detto al pro-
gramma di saltare alletichetta eccita solo quando
Soluzione: La prima operazione da compiere sul piedino A1 riscontra una tensione di 5 volt.
quella di settare il piedino della porta che voglia- Se non riscontra questa condizione, il micropro-
mo utilizzare come ingresso ed il piedino della por- cessore passa ad eseguire la riga JRR e da qui
ta che vogliamo utilizzare come uscita. salta alletichetta spegni, che diseccita il rel se
Come ingresso abbiamo deciso di scegliere il pie- prima risultava eccitato, o lo lascia diseccitato se
dino A1 e come uscita il piedino A2. si trova gi in questa condizione.

LDI pdir_a,00000100B ; con queste tre righe abbiamo settato la porta A1 come
LDI popt_a,00000100B ; ingresso e la porta A2 come uscita
LDI port_a,00000000B ;
ripeti LDI wdog,255 ; ricarica il watchdog
JRS 1,port_a,eccita ; se in A1 ci sono 5 Volt salta a eccita
JRR 1,port_a,spegni ; se in A1 ci sono 0 Volt salta a spegni
eccita SET 2,port_a ; setta a 5 volt luscita di A2
JP ripeti ; salta alletichetta ripeti
spegni RES 2,port_a ; setta a 0 volt luscita di A2
JP ripeti ; salta alletichetta ripeti
Esempio N.5 = Abbiamo realizzato lo schema di quella di settare il piedino A1 come ingresso ed
fig.7 e vorremmo che, quando linterruttore corto- il piedino A2 come uscita.
circuita verso massa il piedino dingresso A1, si In questo caso, dovendo ottenere una funzione op-
eccitasse il rel collegato sulluscita A2. posta a quella dellesempio N.4, dovremo scrive-
Soluzione: La prima operazione da compiere re il programma come indicato di seguito:

LDI pdir_a,00000100B ; con queste tre righe abbiamo settato la porta A1 come
LDI popt_a,00000100B ; ingresso e la porta A2 come uscita
LDI port_a,00000000B ;
ripeti LDI wdog,255 ; ricarica il watchdog
JRR 1,port_a,eccita ; se in A1 ci sono 0 Volt salta a eccita
JRS 1,port_a,spegni ; se in A1 ci sono 5 Volt salta a spegni
eccita SET 2,port_a ; setta a 5 volt luscita di A2
JP ripeti ; salta alletichetta ripeti
spegni RES 2,port_a ; setta a 0 volt luscita di A2
JP ripeti ; salta alletichetta ripeti

Esempio N.6 = Ammettiamo di voler predisporre quelli della porta C come uscite push-pull.
tutti i piedini della porta A e della porta B come u- In questo caso dovremo scrivere:
scite in push-pull.
LDI pdir_a,00000000B
Soluzione: Per ottenere questa condizione dob- LDI popt_a,00000000B
biamo scrivere solo 1 per i due registri pdir - popt LDI port_a,00000000B
e solo 0 per il terzo registro port (vedi Tabella N.3).

LDI pdir_a,11111111B LDI pdir_b,00000000B


LDI popt_a,11111111B LDI popt_b,00000000B
LDI port_a,00000000B LDI port_b,00000000B

LDI pdir_b,11111111B LDI pdir_c,11110000B


LDI popt_b,11111111B LDI popt_c,11110000B
LDI port_b,00000000B LDI port_c,00000000B

Se la porta A disponesse di solo 4 piedini (vedi


microprocessori della Tabella N.1) dovremmo scri-
vere 1 solo sui piedini delle porte utilizzate. INTERRUPT

Esempio N.7 = Supponiamo di voler predisporre i LInterrupt serve per interrompere momentanea-
piedini A0 - A1 - A2 - A3 e B0 - B1 come ingres- mente lesecuzione delle istruzioni principali affin-
si pull-up e i piedini A4 - A5 - A6 - A7 e B2 - B3 ch il microprocessore possa eseguire altre istru-
- B4 - B5 - B6 - B7 come uscite push-pull. zioni, che si trovano inserite tra una delle cinque e-
In questo caso dovremo scrivere: tichette qui sotto riportate e la scritta reti.

LDI pdir_a,11110000B ad_int ; etichetta


LDI popt_a,11110000B ..... ; programma da eseguire
LDI port_a,00000000B reti ; fine interrupt

LDI pdir_b,11111100B
tim_int ; etichetta
LDI popt_b,11111100B
..... ; programma da eseguire
LDI port_b,00000000B
reti ; fine interrupt
Esempio N.8 = Abbiamo un microprocessore del
tipo riportato nella Tabella N.2, con a disposizione BC_int ; etichetta
le tre porte A-B-C, e vorremmo predisporre tutte i ..... ; programma da eseguire
piedini della porta A-B come ingressi pull-up e reti ; fine interrupt
A_int ; etichetta zione si preferisce scrivere questa riga di pro-
..... ; programma da eseguire gramma.
reti ; fine interrupt
attendi JRR 6,adcr,attendi
nmi_int ; etichetta
..... ; programma da eseguire Etichetta tim_int
reti ; fine interrupt
Questa etichetta viene utilizzata nelle funzioni ti-
Nota: la funzione di interrupt viene abilitata ed mer. In pratica quando il registro tcr (vedi para-
eseguita dal microprocessore solo se nel pro- grafo Timer) arriva a 0, il microprocessore esegue
gramma stata scritta la seguente istruzione: tutte le istruzioni che sono state scritte tra tim_int
e reti.
SET 4,ior
Etichetta BC_int
Dopo aver scritto le righe di programma da ese-
guire con la funzione interrupt necessario com- Questa etichetta viene utilizzata per fare eseguire
pletarle con la scritta reti, perch quando il micro- tutte le istruzioni che abbiamo scritto tra BC_int e
processore arriva ad eseguire listruzione reti ri- reti quando su uno dei piedini da noi scelto delle
torna al programma principale nel punto in cui era porte B o C la tensione cambia di stato, in altre pa-
stato momentaneamente interrotto. role quando passa dal livello logico 0 al livello lo-
Linterrupt viene utilizzato per far eseguire al mi- gico 1 (fronte di salita) o quando passa dal livel-
croprocessore unistruzione che in quel momento lo logico 1 al livello logico 0 (fronte di discesa).
pi importante di quella che stava eseguendo.
Ad esempio, se avessimo programmato un micro- Nota: per la funzione ingresso con interrupt pos-
processore per aprire e chiudere il cancello scor- siamo abilitare un solo piedino di una delle due
revole del nostro giardino, dovremmo utilizzare la porte B o C.
funzione interrupt applicata alla fotocellula per fa-
re in modo che in fase di chiusura se un bambino Esempio N.9 = Supponiamo di voler settare il
o il nostro cane attraversa improvvisamente la fo- piedino B2 come ingresso con interrupt che in-
tocellula, il cancello si blocchi. tervenga sul fronte di salita e tutti gli altri pie-
dini della porta B come ingresso in pull-up. Co-
Etichetta ad_int me prima operazione controlliamo nella Tabel-
la N.3 come vanno settati i registri pdir - popt
Questa etichetta serve per riconoscere quando il - port per lingresso con interrupt, dopodich
convertitore A/D ha terminato la conversione. Nor- possiamo scrivere il programma indicato
malmente non si usa mai perch in sua sostitu- Esempio n.9.

PROGRAMMA per Esempio n.9


LDI pdir_b,00000000B ; abbiamo settato il piedino B2 come ingresso interrupt
LDI popt_b,00000100B ; e tutti gli altri come ingressi pull-up
LDI port_b,00000000B ;
SET 4,ior ; serve per abilitare linterrupt
SET 5,ior ; serve per sentire il fronte di salita
BC_int ; etichetta dinizio interrupt
..... ; istruzioni da eseguire con linterrupt
RETI ; istruzione fine interrupt

PROGRAMMA per Esempio n.10


LDI pdir_b,00000000B ; abbiamo settato il piedino B7 come ingresso interrupt
LDI popt_b,10000000B ; e tutti gli altri come ingressi pull-up
LDI port_b,00000000B ;
SET 4,ior ; serve per abilitare linterrupt
RES 5,ior ; serve per sentire il fronte di discesa
BC_int ; etichetta dinizio dellinterrupt
.... ; istruzioni da eseguire con linterrupt
RETI ; istruzione fine interrupt
Esempio N.10 = Supponiamo di voler settare il tutti gli ST6) la tensione passa dal livello logico 1
piedino B7 come ingresso con interrupt che in- al livello logico 0 (fronte di discesa). Poich que-
tervenga sul fronte di discesa e tutti gli altri pie- sto piedino sempre abilitato, non necessario
dini della porta B come ingresso in pull-up. Come scrivere nel programma listruzione:
prima operazione controlliamo nella Tabella N.3
come vanno settati i registri pdir - popt - port per SET 4,ior
lingresso con interrupt, dopodich possiamo scri-
vere il programma indicato Esempio n.10. Esempio N.12 = Vogliamo che pigiando il pulsan-
te P1 (vedi fig.8) si accendano i diodi led applica-
Etichetta A_int ti sui piedini A0 - A1 - A2 - A3.

Questa etichetta viene utilizzata per fare eseguire Come prima operazione settiamo i piedini A0 - A1
tutte le istruzioni che abbiamo scritto tra A_int e - A2 - A3 come uscite push-pull prelevando dal-
reti quando sul piedino della porta A da noi scelto la Tabella N.3 i dati da inserire nelle righe pdir -
la tensione passa dal livello logico 1 al livello lo- popt - port e a questo punto possiamo scrivere il
gico 0 (fronte di discesa). programma indicato Esempio n.12.

Nota: per la funzione ingresso con interrupt pos- NOTA IMPORTANTE: se nelle righe del program-
siamo abilitare un solo piedino della porta A. ma dellinterrupt fossero presenti delle istruzioni
che utilizzano laccumulatore A, ad esempio:
Esempio N.11 = Ammettiamo di voler settare il
piedino A5 come ingresso con interrupt che in- CPI a,10 ; confronta A con il numero 10
tervenga quando il livello logico 1 cambia a livello ADDI a,10 ; somma ad A il numero 10
logico 0. Come prima operazione controlliamo nel- LDI a,10 ; metti in A il numero 10
la Tabella N.3 come dobbiamo settare i registri
pdir - popt - port per lingresso con interrupt, do- bisogner inserire in una variabile, che potremo
podich possiamo scrivere il programma indicato chiamare salva, il valore dellaccumulatore A su-
Esempio n.11. bito dopo letichetta dellinterrupt e, prima di ter-
minare con listruzione RETI, lo dovremo reinseri-
Etichetta nmi_int re nellaccumulatore A.
In questo modo quando il microprocessore torner
Questa etichetta viene utilizzata per fare eseguire ad eseguire il programma principale, nellaccumu-
tutte le istruzioni che abbiamo scritto tra nmi_int e latore si avr lo stesso valore che cera prima
reti quando sul piedino siglato NMI (piedino 5 di dellinterrupt.

PROGRAMMA per Esempio n.11


LDI pdir_a,00000000B ; abbiamo settato il piedino A5 come ingresso interrupt
LDI popt_a,00100000B ; e tutti gli altri come ingressi pull-up
LDI port_a,00000000B ;
SET 4,ior ; serve per abilitare linterrupt
A_int ; etichetta dinizio dellinterrupt
.... ; istruzioni da eseguire con linterrupt
RETI ; istruzione fine interrupt

PROGRAMMA per Esempio n.12


LDI pdir_a,00001111B ; con queste tre righe abbiamo settato come uscite
LDI popt_a,00001111B ; push-pull i piedini A0 - A1 - A2 - A3
LDI port_a,00000000B ;
mni_int ; etichetta dinizio dellinterrupt
SET 0,port_a ; accendi il led sul piedino A0
SET 1,port_a ; accendi il led sul piedino A1
SET 2,port_a ; accendi il led sul piedino A2
SET 3,port_a ; accendi il led sul piedino A3
RETI ; istruzione fine interrupt
gresso analogico si pu calcolare con questa for-
mula:
ST6 numero decimale = (volt x 255) : 5
A0

NMI
A1 Pertanto se applichiamo sul piedino dingresso
5 una tensione di 4 volt otteniamo un numero de-
A2
cimale di:
A3
(4 x 255) : 5 = 204

Ricordatevi che lA/D converter fornisce in uscita


Fig.8 Affinch, pigiando il pulsante posto soltanto dei numeri interi quindi se nel risultato so-
sul piedino NMI, si accendano tutti i led no presenti dei decimali, questi vengono arroton-
applicati sui piedini A0-A1-A2-A3, potrete u- dati al numero intero pi prossimo.
tilizzare il programma riportato nellEsem- Ad esempio, se la tensione di 4 volt dovesse scen-
pio N.12 o quello dellEsempio N.13. dere a 3,98 volt, sulluscita non otterremmo:

Esempio N.13 = Nellesempio N.12 abbiamo ri- (3,98 x 255) : 5 = 202,98


portato un programma che accendeva contempo-
raneamente quattro diodi led pigiando il pulsante ma il numero pi prossimo, cio 203.
collegato sul piedino NMI (vedi fig.8). Usando lac-
cumulatore A si ottiene lo stesso risultato, ma bi- Se la tensione di 4 volt dovesse salire a 4,04 volt,
sogna modificare il programma come indicato sulluscita non otterremmo:
nellEsempio n.13.
(4,04 x 255) : 5 = 206,04

A/D CONVERTER ma il numero pi prossimo, cio 206.

Allinterno di ogni microprocessore ST6 presen- Anche con larrotondamento del numero si ottiene
te un A/D converter, cio un circuito in grado di sempre unelevata precisione in quanto la diffe-
convertire una tensione analogica compresa tra 0 renza risulta di sole poche decine di millivolt.
e 5 volt in un numero decimale compreso tra 0 e Ad esempio, prendendo sempre la tensione di 4
255. volt, per ogni variazione di 0,01 volt otterremo que-
Per ottenere questa condizione occorre settare il sti numeri decimali:
piedino della porta in cui viene applicata questa
tensione come ingresso analogico. 3,96 volt = 202
Ricordatevi che in tutti i microprocessori della se- 3,97 volt = 202
rie ST6 (vedi Tabelle N.1 - N.2) non possono es- 3,98 volt = 203
sere mai utilizzati come ingressi per segnali ana- 3,99 volt = 203
logici i piedini A0 - A1 - A2 - A3. 4,00 volt = 204
La massima tensione che si pu applicare su que- 4,01 volt = 205
sti ingressi non deve mai superare i 5 volt positivi. 4,02 volt = 205
Il valore numerico che otteniamo applicando una 4,03 volt = 206
tensione al piedino che abbiamo settato come in- 4,04 volt = 206
PROGRAMMA per Esempio n.13
LDI pdir_a,00001111B ; con queste tre righe abbiamo settato come uscite
LDI popt_a,00001111B ; push-pull i piedini A0 - A1 - A2 - A3
LDI port_a,00000000B ;
mni_int ; etichetta dinizio dellinterrupt
LD salva,a ; copia nella variabile salva il valore di A
LDI a,00001111B ; carica in A il numero binario 00001111
LD port_a,a ; copia il valore A nel registro della porta a
LD a,salva ; copia nellaccumulatore A il valore di salva
RETI ; istruzione fine interrupt
Conoscendo il numero decimale possibile cal- Esempio N.14 = Vogliamo realizzare un circuito
colare il valore della tensione in volt utilizzando che accenda un diodo led quando la tensione ap-
questa formula: plicata sul piedino prescelto supera i 3 volt. Per
lingresso si potrebbe decidere di utilizzare il pie-
volt = (decimale x 5) : 255 dino B1 e come uscita il piedino A0 (vedi fig.9).

Quindi il numero decimale 203 corrisponde ad un


valore di tensione pari a:
ST6
(203 x 5) : 255 = 3,98 volt C
B
B1 A0
con una differenza di 0,01 volt in pi o in meno. E

Come abbiamo gi detto, un ingresso settato per


segnali analogici pu servire soltanto per misu-
rare delle tensioni continue che non superino i 5
volt.
Se la tensione risultasse maggiore, occorrer ri-
durla con dei partitori resistivi, come in pratica ac- Fig.9 Per accendere il diodo led applicato
cade in tutti i tester analogici che, pur disponen- sul piedino A0 quando la tensione sul pie-
do di uno strumento da 1 volt fondo scala, pos- dino B1 supera i 3 Volt, dovrete scrivere il
sono misurare tensioni anche di 250 - 300 volt. programma posto a fine pagina. Leggere at-
E inoltre possibile misurare delle tensioni alter- tentamente la soluzione dellEsempio N.14.
nate, se si provvede prima a raddrizzarle.
Un ingresso analogico pu servire per misurare Come si deve scrivere il programma perch il mi-
delle temperature, delle variazioni di luce, degli cro esegua questa funzione?
ohm oppure la reattanza dei condensatori o delle Soluzione: Dalla Tabella N.3 controlliamo come
impedenze, ed anche la corrente assorbita da un dobbiamo settare i registri pdir - popt - port per
circuito o la potenza di un amplificatore. predisporre B1 come ingresso analogico e A0 co-
me uscita in push-pull.
IMPORTANTE: Poich allinterno dei microproces- Successivamente calcoliamo il numero decimale
sori ST6 presente un solo A/D converter, solo di 3 volt che risulta:
un piedino pu essere adibito a questa funzione.
Se per errore vengono settati come ingressi per (3 x 255) : 5 = 153
segnali analogici due piedini, questi verranno po-
sti in cortocircuito ed in questo modo verr dan- A questo punto possiamo scrivere il nostro pro-
neggiato il microprocessore. gramma.

PROGRAMMA per Esempio n.14


LDI pdir_a,00000001B ; in queste prime tre righe abbiamo settato la porta
LDI popt_a,00000001B ; A0 come uscita in push-pull
LDI port_a,00000000B ;
LDI pdir_b,00000000B ; in queste tre righe abbiamo settato la porta
LDI popt_b,00000010B ; B1 come ingresso analogico
LDI port_b,00000010B ;
ripeti LDI wdog,255 ; carichiamo il watchdog
LDI adcr,00110000B ; provvedi a convertire da analogico a digitale
attendi JRR 6,adcr,attendi ; attendere che avvenga la conversione A/D
LD a,addr ; carica nellaccumulatore A il numero digitale
CPI a,153 ; compara il valore di A con il numero 153
JRNC accendi ; se A maggiore di 153 salta alletichetta accendi
JRC spegni ; se A minore di 153 salta alletichetta spegni
JP ripeti ; salta alletichetta ripeti del watchdog
accendi SET 0,port_a ; setta luscita del piedino A0 a 5 volt
JP ripeti ; salta alletichetta ripeti del watchdog
spegni RES 0,port_a ; setta luscita del piedino A0 a 0 volt
JP ripeti ; salta alletichetta ripeti del watchdog
Esempio N.15 = Vogliamo accendere una fila di 5 A questo punto possiamo programmare il piedino A7
diodi led, ma in modo che con 1 volt si accenda come ingresso analogico ed i piedini B0 - B1 - B2
un solo led, con 2 volt si accendano 2 led, con 3 - B3 - B4 come uscite push-pull (vedi Tabella N.3).
volt si accendano 3 led ecc., fino a far accendere
tutti i 5 diodi led quando la tensione raggiunge i 5 Se anzich accendere tutta la fila dei diodi led vo-
volt. lessimo accendere un solo diodo led per volta, cio
Come ingresso analogico abbiamo deciso di sce- prima quello su B0, poi quello su B1 - B2 - B3 - B4,
gliere il piedino A7 e come uscite i piedini da B0 dovremmo modificare tutte le righe delle etichette
a B4. LED mettendo un 1 solo sul piedino a cui colle-
gato il led che vogliamo accendere e degli 0 sui pie-
Soluzione: La prima operazione che dobbiamo dini a cui sono collegati i led che vogliamo spegnere.
compiere quello di calcolare il numero decima-
le corrispondente ai valori di tensione di 1 - 2 - 3 - Nellesempio che si trova a fine pagina dovremmo
4 - 5 volt usando la formula che gi conosciamo: riscrivere le sole righe LED2 - LED3 - LED4 - LED5
in questo modo:
(1 x 255) : 5 = 51 numero decimale di 1 Volt
(2 x 255) : 5 = 102 numero decimale di 2 Volt LED2 LDI port_b,00000010B
(3 x 255) : 5 = 153 numero decimale di 3 Volt LED3 LDI port_b,00000100B
(4 x 255) : 5 = 204 numero decimale di 4 Volt LED4 LDI port_b,00001000B
(5 x 255) : 5 = 255 numero decimale di 5 Volt LED5 LDI port_b,00010000B

PROGRAMMA per Esempio n.15


LDI pdir_a,00000000B ; in queste tre righe abbiamo settato
LDI popt_a,10000000B ; il piedino A7 come ingresso analogico
LDI port_a,10000000B ;
LDI pdir_b,00011111B ; in queste righe abbiamo settato
LDI popt_b,00011111B ; i piedini da B0 a B4 come uscite
LDI port_b,00000000B ;
ripeti LDI wdog,255 ; carichiamo il watchdog
LDI adcr,00110000B ; provvedi a convertire da analogico a digitale
attendi JRR 6,adcr,attendi ; attendere che avvenga la conversione A/D
LD a,addr ; carica nellaccumulatore A, il numero digitale
CPI a,255 ; compara il valore di A con il numero 255
JRNC LED5 ; se A uguale a 255 salta alletichetta LED5
CPI a,204 ; compara il valore di A con il numero 204
JRNC LED4 ; se A maggiore di 204 salta alletichetta LED4
CPI a,153 ; compara il valore di A con il numero 153
JRNC LED3 ; se A maggiore di 153 salta alletichetta LED3
CPI a,102 ; compara il valore di A con il numero 102
JRNC LED2 ; se A maggiore di 102 salta alletichetta LED2
CPI a,51 ; compara il valore di A con il numero 51
JRNC LED1 ; se A maggiore di 51 salta alletichetta LED1
JP LED0 ; se A minore di 51 salta alletichetta LED0
LED0 LDI port_b,00000000B ; non accendere nessun diodo led
JP ripeti ; salta alletichetta ripeti del watchdog
LED1 LDI port_b,00000001B ; accendi il led sul piedino B0
JP ripeti ; salta alletichetta ripeti del watchdog
LED2 LDI port_b,00000011B ; accendi i led sui piedini B0 - B1
JP ripeti ; salta alletichetta ripeti del watchdog
LED3 LDI port_b,00000111B ; accendi i led sui piedini B0 - B1 - B2
JP ripeti ; salta alletichetta ripeti del watchdog
LED4 LDI port_b,00001111B ; accendi i led sui piedini B0 - B1 - B2 - B3
JP ripeti ; salta alletichetta ripeti del watchdog
LED5 LDI port_b,00011111B ; accendi i led sui piedini B0 - B1 - B2 - B3 - B4
JP ripeti ; salta alletichetta ripeti del watchdog
Questa modifica potrebbe risultare utile se invece ne, ad esempio, il rel1 quando la tensione rag-
di accendere dei diodi led volessimo eccitare cin- giunge 1 volt, il rel 2 quando la tensione rag-
que diversi rel per ogni diverso valore di tensio- giunge i 2 volt ecc.

C C
B B
B0 B0
E E
ST6 C
ST6 C
B B
B1 B1
E E
C C
B B
A7 B2 A7 B2
E E
C C
B B
B3 B3
E E
C C
B B
B4 B4
E E

Fig.10 Volendo realizzare un Level-Meter Fig.11 Se vorrete eccitare dei rel dovrete
che accenda una fila di 4 led allaumentare modificare lo schema come qui sopra ripor-
della tensione continua, applicata sul pie- tato. Per motivi di spazio abbiamo inserito il
dino A7 settato come Ingresso, dovrete u- rel solo sul primo transistor in alto. Modifi-
tilizzare il programma dellEsempio N.15 ri- cando il programma potrete utilizzare come
portato sulla pagina in basso a sinistra. uscite anche tutti gli 8 piedini della Porta B.

5 V.
100.000 ohm

100.000 ohm

Fig.12 Per far funzionare un Vcc 1 20 GND


1
qualsiasi micro ST6 della se- 2
Vcc
TIMER 12 20
19 GND
ST 62 E 10
rie 10-20 dovrete collegare sui TIMER
OSC. INP 23 19
18 ST 62 E 10
5 OSC. OUT
INP 34 18
OSC. 17
piedini indicati un Quarzo da OSC. NMI
OUT 45 17
ST 62 T 10
8 MHz, due condensatori ce- 3
16 ST 62 T 10
NMI
Vpp 56 16
15
XTAL
ramici da 22 pF, un elettroliti- Vpp
RESET 67 15
14
ST 62 E 20
4 ST 62 E 20
co da 1 microF e due resi- 7 6 20 RESET 78 14
13

stenze da 100.000 ohm. 89 13


12 ST 62 T 20
1 uF 910 12
11 ST 62 T 20
22 pF 10 11

5 V.

Vcc 1 28 GND
100.000 ohm

100.000 ohm

TIMER 2 27

1 OSC. INP 3 26 Fig.13 Per far funzionare un


2 OSC. OUT 4 25 ST 62 E 15 qualsiasi micro ST6 della se-
NMI 5 24
5
6 23
rie 15-25 dovrete collegare sui
7
ST 62 T 15 piedini indicati un Quarzo da
22
3
XTAL 8 21 8 MHz, due condensatori ce-
9 20 ST 62 E 25 ramici da 22 pF, un elettroliti-
4
11 10 28 Vpp 10 19
co da 1 microF e due resi-
RESET 11 18 ST 62 T 25
1 uF
12 17
stenze da 100.000 ohm.
22 pF 13 16
14 15
TIMER serire una B, perch questo un numero binario.
Per calcolare il tempo in secondi possiamo usa-
Il timer un contatore collegato al quarzo del mi- re questa formula:
croprocessore tramite un prescaler ed un diviso-
re x 12 (vedi fig.14). secondi = (12 x tscr x tcr) : Xtal in Hz
Per la funzione timer dobbiamo settare due regi-
stri, uno chiamato tcr e laltro tscr. Ammesso che si usi un quarzo da 8 MHz (pari a
Nel registro tcr (timer counter register) dovremo in- 8.000.000 Hz), che nella riga tscr si sia inserito il
serire un numero decimale compreso tra 1 e 255. numero 128 e nella riga tcr il numero 255, otterre-
Il tcr partendo da questo numero conter allin- mo un tempo massimo di:
dietro e quando arriver al numero 0 automatica-
mente eseguir tutte le istruzioni comprese tra le- (12 x 128 x 255) : 8.000.000 = 0,0489 secondi
tichetta tim_int e listruzione reti.
Ammesso che si voglia inserire nel registro tcr il che corrispondono a 48,9 millisecondi.
numero 255 dovremmo scrivere questa riga di pro-
gramma: Tempi cos ridotti potrebbero servire soltanto per
realizzare dei generatori di onde quadre, ma cer-
LDI tcr,255 to non dei timer dove normalmente occorrere rag-
giungere dei tempi di minuti o ore.
Nel registro tscr (timer status control register), che Per ottenere dei tempi molto lunghi possiamo
controlla il prescaler, dovremo inserire un nume- usare degli accorgimenti come per esempio ricor-
ro binario come riportato nella Tabella N.5. rere alluso di altre variabili.

TABELLA N.5 Registro tscr Esempio N.16 = Vorremmo prelevare dal piedino
A7 degli impulsi di 1 millisecondo, quindi vor-
01011000 divide x 1 remmo sapere come impostare il programma.
01011001 divide x 2
01011010 divide x 4
Soluzione: Come prima operazione convertiamo i
01011011 divide x 8
01011100 divide x 16
millisecondi in secondi dividendoli per 1.000 e co-
01011101 divide x 32 s otteniamo:
01011110 divide x 64 1 : 1.000 = 0,001 secondo
01011111 divide x 128
Quindi calcoliamo quale numero dobbiamo mette-
Ammesso di voler far dividere il prescaler per 128 re nel registro tcr con la formula:
dovremo scrivere questa riga di programma:
tcr = [(Xtal Hz : 12) : tscr] x secondi
LDI tscr,01011111B
Tenete presente che il numero del tcr non deve
Alla fine della riga non dobbiamo dimenticarci di in- mai risultare maggiore di 255 quindi se questo si

3 TSCR Fig.14 Allinterno di ogni microprocessore


c un Timer che preleva dalloscillatore
OXILL
quarzato la frequenza generata e la DIVIDE
DIVISORE PRESCALER TCR
4 x 12 subito x 12. Per ricavare tempi diversi si de-
ve agire solo sui due registri chiamati
TCSR e TCR. Nellarticolo trovate due
CPU Esempi, uno ha il numero 16 e laltro il 17.
verificasse dovrete aumentare il numero di divi- Il programma che dobbiamo scrivere per preleva-
sione del prescaler. re dal piedino A7 questi impulsi visibile in fondo
Questo numero, che possiamo prelevare dalla Ta- alla pagina.
bella N.5, 1 - 2 - 4 - 8 - 16 - 32 - 64 - 128.
Ad esempio se scegliamo per tscr il numero 2 ot- Esempio N.17 = Vogliamo prelevare dal piedino
teniamo un tcr di: A7 delle onde quadre che abbiano una frequenza
di 1.200 Hz, quindi vogliamo sapere come impo-
[(8.000.000 : 12) : 2] x 0,001 = 333,33 tcr stare il programma.

poich questo numero maggiore di 255 dovre- Soluzione: Come prima operazione dobbiamo cal-
mo scegliere per tscr un numero maggiore, ad e- colare il tempo in secondi corrispondente alla fre-
sempio 4 e cos otterremo: quenza di 1.200 Hz e per ottenere questo dato u-
siamo la formula:
[(8.000.000 : 12) : 4] x 0,001 = 166,66 tcr
secondi = (1 : Hz) : 2
Poich il microprocessore lavora solo con numeri
interi, dovremo arrotondarlo sul numero pi pros- Nel nostro caso otteniamo:
simo che nel nostro caso 167.
Noi abbiamo scelto per tscr il numero 4, ma pote- (1 : 1.200) : 2 = 0,0004 secondi
vamo anche scegliere 8 - 16 - 32 ecc. tenendo co-
munque presente che pi alto il numero del tscr Quindi calcoliamo qual il numero che dobbiamo
minore risulter la precisione sul tempo. mettere nel registro tcr con la formula:
Disponendo dei valori richiesti cio:
tcr = [(Xtal Hz : 12) : tscr] x secondi
tscr = 4
tcr = 167 Poich nella formula manca il valore del tscr, con-
sultiamo la Tabella N.5 scegliendo uno di questi
possiamo calcolare il tempo con la formula: numeri 1 - 2 - 4 - 8 - 16 - 32 - 64 - 128.
Facciamo presente che il valore di tcr che ricave-
secondi = (12 x tscr x tcr) : Xtal in Hz remo da questa formula non dovr mai superare il
numero 255 quindi se risultasse maggiore dovre-
ottenendo: mo usare un tscr maggiore, cio 4 - 8 - 16 ecc.
(vedi Tabella N.5).
(12 x 4 x 167) : 8.000.000 = 0,001002 secondi Nel nostro esempio abbiamo scelto per tscr il
numero 2 perch otteniamo un valore minore
che corrispondono a: di 255.

0,001002 x 1.000 = 1,002 millisecondi [(8.000.000 : 12) : 2] x 0,0004 = 133,33 tcr

PROGRAMMA per Esempio n.16


LDI pdir_a,10000000B ; queste tre righe servono per settare
LDI popt_a,10000000B ; il piedino A7 come uscita in push-pull
LDI port_a,00000000B ;
SET 4,ior ; abilita linterrupt quando il tcr diventa 0
LDI tcr,167 ; numero 167 calcolato per il tcr
LDI tscr,01011010B ; numero binario per un fattore di divisione di 4 (Tabella N.5)
main LDI wdog,255 ; ricarichiamo il watchdog
JP main ; salta alletichetta main
tim_int LDI wdog,255 ; ricarichiamo il watchdog
LDI tcr,167 ; ricarichiamo 167 nel tcr per ripetere gli impulsi
LDI tscr,01011010B ; questa riga fa ripartire il contatore
SET 7,port_a ; fa uscire dal piedino A7 un impulso a 5 volt
RES 7,port_a ; riporta il piedino A7 a 0 volt
RETI ; ritorna al programma main
Poich il microprocessore lavora solo con numeri Per prelevare dal piedino A7 delle onde quadre
interi dovremo arrotondarlo sul numero pi pros- che abbiano una frequenza di 1.200 Hz, dovremo
simo che nel nostro esempio 133. scrivere il programma come visibile qui sotto.
Disponiamo cos di tutti i dati richiesti:

tscr = 2
tcr = 133

PROGRAMMA per Esempio n.17


LDI pdir_a,10000000B ; queste tre righe ci servono per settare
LDI popt_a,10000000B ; il piedino A7 come uscita in push-pull
LDI port_a,00000000B ;
SET 4,ior ; abilita linterrupt
LDI tcr,133 ; carica nel tcr il numero 133
LDI tscr,01011001B ; numero binario per un fattore di divisione di 2 (Tabella N.5)
main LDI wdog,255 ; ricarica il watchdog
JP main ; salta alletichetta main
tim_int ; etichetta dellinterrupt
LDI wdog,255 ; ricarica il watchdog
LDI tcr,133 ; ricarica 133 nel tcr per continuare
LDI tscr,01011001B ; questa riga fa ripartire il contatore
JRR 7,port_a,salita ; se A7 a 0 salta alletichetta salita
RES 7,port_a ; se A7 a 1 cambia il livello logico a 0
JP continua ; salta alletichetta continua
salita SET 7,port_a ; metti il piedino A7 a livello logico 1
continua RETI ; fine dellinterrupt
Con il microprocessore ST6 si possono realizzare meri delle ore e dei minuti. Se poi in sostituzione
uninfinit di circuiti, come ad esempio orologi, con- di un display a sette segmenti si volesse utilizzare
tasecondi, timer, antifurto, controlli numerici per un display LCD, non si saprebbe quali modifiche
macchine utensili, termostato, piccoli robot, coman- apportare al software.
di per luci, termometri, inoltre si possono scrivere Chi vuole eccitare un rel ad una determinata
delle parole sui display LCD, convertire dei calcoli ora si chieder invece quale istruzione gli permet-
ecc., e qui ci fermiamo perch volendo elencare tut- te di ottenere questa condizione.
to ci vorrebbero non poche pagine della rivista. Anche ammesso di aver scritto tutte le istruzioni ri-
Anche se nelle riviste precedenti vi abbiamo spie- chieste, il lettore desidera giustamente sapere se
gato le istruzioni per scrivere un programma, per il suo programma in grado di eseguire senza er-
chi allinizio queste informazioni potrebbero ri- rori tutte le funzioni per cui stato scritto, ha cio
sultare ancora insufficienti. bisogno di testarlo e per questo gli servono delle
Infatti chi volesse realizzare un orologio a display schede di test universali.
potrebbe trovarsi in difficolt nel far apparire i nu- Sono proprio queste che prenderemo in esame con

BUS per

Fig.1 Foto del bus proget-


tato per testare i micro
ST6.
I due costosi zoccoli tex-
tool possono essere sosti-
tuiti con due economici
zoccoli per integrati, come
visibile nel disegno pratico
di fig.3.
TESTARE i micro ST6
Il primo problema che si presenta a quanti desiderano iniziare a scrive-
re del software personalizzato per i microprocessori ST6 della SGS,
quello di poter controllare il programma per verificare che esegua le fun-
zioni richieste. Per aiutarvi abbiamo progettato delle schede sperimen-
tali, che saranno particolarmente utili agli Istituti Tecnici se usate come
supporto al consueto materiale didattico.

il nostro articolo. trollo con il programma originale per verificare do-


A parte vi forniamo un dischetto contenente alcu- ve stato commesso lerrore.
ni programmi completi di esaurienti commenti, che
potranno servirvi per realizzare orologi, timer, con-
tasecondi, antifurto ecc., e con riportate tutte le mo- IMPORTANTE
difiche che si possono apportare.
Come sempre i maligni penseranno che il nostro La SGS ci ha comunicato che cesser di produrre
obiettivo sia solo quello di vendere al lettore un di- i microprocessori riprogrammabili tipo ST62E10
schetto, ma essi non considerano che riempire 10 e tipo ST62E15, entrambi da 2 K di memoria, per-
pagine della rivista con sole righe di programma ch tutte le Industrie chiedono e preferiscono uti-
non risulta per nulla gradito a coloro ai quali non lizzare i riprogrammabili da 4 K di memoria an-
interessa lST6. che se pi costosi.
Inoltre non pensano che nel trascrivere i program- I microprocessori non riprogrammabili tipo
mi sulla rivista si possono verificare degli errori di ST62T10 - ST62T15 con 2 K di memoria rimar-
stampa, ed altri errori possono commetterli gli stes- ranno invece sempre in produzione.
si lettori nel ricopiare le istruzioni. Pertanto fuori produzione andranno i tipi:
Disponendo di un dischetto con programmi gi te-
stati, il lettore potr subito metterli in funzione e poi ST62E10 che verranno sostituiti dagli ST62E20
modificarli secondo le proprie esigenze. ST62E15 che verranno sostituiti dagli ST62E25
Se con le modifiche apportate il programma dar
qualche errore, sar sempre possibile fare un con- Poich le dimensioni e la piedinatura dei due mo-
DS1
12,6 V.
DS2
5,6 V.
C5 C6
R1 R2
Massa

1 6 20
7 2
3 ST62 / 10 - ST62 / 20 GND GND GND
4 5 5 V. 5 V. 5 V.
19 18 17 16 15 14 13 12 11 10 9 8
12 V. 12 V. 12 V.

A0 A0 A0
A1 A1 A1
A2 A2 A2
A3 A3 A3
A4 A4 A4
A5 A5 A5
A6 A6 A6
A7 A7 A7

B0 B0 B0
B1 B1 B1
B2 B2 B2
B3 B3 B3
B4 B4 B4
B5 B5 B5
B6 B6 B6
B7 B7 B7

27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12
1 9 C4 C4 C4
8 C5 C5 C5
C1 11 7 C6 C6 C6
ST62 / 15 - ST62 / 25 6 C7 C7 C7
3
2
4 5 NMI NMI NMI
XTAL 10 28

P1 C2
C3 C4 CONN. 1 CONN. 2 CONN. 3

ELENCO COMPONENTI LX.1202


C5 = 100.000 pF poliestere
R1 = 100.000 ohm 1/4 watt C6 = 100 mF elettr. 35 volt
R2 = 100.000 ohm 1/4 watt XTAL = quarzo 8 MHz
C1 = 100.000 pF poliestere DS1 = diodo 1N.4007
C2 = 1 mF elettr. 63 volt DS2 = diodo 1N.4007
C3 = 22 pF ceramico CONN.1-2-3 = connettori 24 poli
C4 = 22 pF ceramico P1 = pulsante

Fig.2 Schema elettrico del circuito bus progettato per testare i programmi per i mi-
croprocessori ST6. Anche se nel bus sono presenti due zoccoli, dovrete sempre uti-
lizzarne uno SOLO alla volta, quindi prima di inserire un micro in uno zoccolo dovre-
te togliere quello presente sullaltro zoccolo.
Il bus andr alimentato con lo stadio di alimentazione visibile nelle figg.4-7 cercando
di non invertire i due fili dei 5,6 e 12,6 volt.
Fig.3 Schema pratico di montaggio del bus. Potete sostituire i due comuni zoccoli per
i microprocessori ST6 con i pi comodi, ma costosi textool (vedi fig.1).
T1
14 V. 14 V.

E U
RS1 IC1 12,6 V.
S1
M

C1 C2 DS1 C3 C4

RETE 8 V.
220 V.
E U
RS2 IC2 5,6 V.
M
Massa
C5 C6 DS2 C7 C8

Fig.4 Schema elettrico dello stadio di alimentazione da utilizzare per il bus.

delli risultano identiche sar possibile sostituirli


ELENCO COMPONENTI LX.1203
senza problemi.
Il motivo per cui tutti preferiscono i microprocesso- C1 = 2.200 mF elettr. 35 volt
ri riprogrammabili da 4 K ovvio. C2 = 100.000 pF poliestere
I microprocessori riprogrammabili servono e ven- C3 = 100.000 pF poliestere
gono utilizzati unicamente per testare i programmi C4 = 100 mF elettr. 35 volt
e quindi possono essere cancellati e riutilizzati per C5 = 2.200 mF elettr. 35 volt
provare altri programmi. C6 = 100.000 pF poliestere
Dopo aver verificato che il programma funziona, si C7 = 100.000 pF poliestere
pu definitivamente trasferirlo sui microprocessori C8 = 100 mF elettr. 35 volt
non riprogrammabili tipo ST62T10 - ST62T20 o DS1 = diodo 1N.4007
DS2 = diodo 1N.4007
ST62T15 - ST62T25.
RS1 = ponte raddr. 100 V. 1 A.
Poich un microprocessore riprogrammabile vie- RS2 = ponte raddr. 100 V. 1 A.
ne riutilizzato un centinaio di volte, si preferisce IC1 = uA.7812
acquistarne uno da 4 K, perch pu essere usato IC2 = uA.7805
sia per i programmi che occupano 1 - 1,5 - 2 K sia T1 = trasformatore 25 watt (T025.01)
per quelli che occupano 2,5 - 3 - 4 K. sec. 14 V. 1 A. - 8 V. 1 A.
S1 = interruttore

SCHEMA ELETTRICO scheda BUS

Per testare i programmi abbiamo realizzato una


Fig.5 Connessioni dei
scheda in cui si possono utilizzare sia i micropro-
due integrati stabilizza-
cessori da 20 piedini sia quelli da 28 piedini. tori di tensione.
Per questa scheda abbiamo inoltre realizzato un
bus che porta tutti i segnali del microprocessore ai E M U
connettori femmina sui quali potrete inserire diver-
uA 7805
si tipi di schede, ad esempio con dei display a 7
uA 7812
segmenti, oppure con un display LCD o con dei
rel o ancora con dei Triac.
Fig.6 Disegno del circuito stampato dello stadio di alimentazione siglato LX.1203 visto dal
lato rame. Nota: il disegno stato leggermente ridotto per farlo rientrare nella pagina; le
sue misure reali sono Lunghezza = mm 160 ed Altezza = mm 70.

Fig.7 Schema pratico di montaggio dello stadio di alimentazio-


ne. I due integrati stabilizzatori IC1-IC2 vanno fissati sopra le a-
lette di raffreddamento come visibile in fig.8. La tensione alter-
nata dei 14 volt, disponibile nella morsettiera a 2 poli, vi servir
per testare i circuiti con Triac o Scr.
Per la descrizione dello schema elettrico, visibile in
fig.2, iniziamo proprio dai due zoccoli, che, ovvia-
mente, dovranno essere utilizzati solo uno per vol-
ta.

Dunque se avete gi inserito un microprocessore


in uno zoccolo, per inserirne un altro nel secondo
zoccolo dovrete togliere il primo.
Tutti i terminali dei due zoccoli sono collegati tra lo-
ro in modo da sfruttare per entrambi lo stesso quar-
zo per il clock, lo stesso pulsante di reset ed ov-
viamente la stessa alimentazione.
Anche tutte le porte dingresso/uscita sono colle-
gate in parallelo e qui necessario ricordare che
nello zoccolo che ricever i microprocessori
ST62E10 - ST62E20 la porta A inizia da A0 e ter-
mina ad A3, la porta B inizia da B0 e termina a
B7, e che manca la porta C.
Nello zoccolo che ricever i microprocessori
ST62E15 - ST62E25 risultano presenti tutte le por-
te da A0 ad A7 e da B0 a B7, e la porta C inizia
da C4 e termina a C7.

Tutti gli ingressi/uscite raggiungono i connettori


femmina CONN.1 - CONN.2 - CONN.3 nei quali
andranno inserite le schede sperimentali.
Sempre sugli stessi connettori risultano presenti
le piste di alimentazione, cio 5,6 volt positivi -
12,6 volt positivi e la massa.
I diodi al silicio DS1 - DS2, posti in serie sui due
ingressi di alimentazione, sono stati inseriti per
evitare di danneggiare il micro nel caso venisse
applicata su questi terminali una polarit opposta
a quella richiesta.
Poich questi diodi introducono una tensione di cir-
ca 0,6 volt, applicando sullingresso una tensione
di 5,6 volt e 12,6 volt, in uscita si otterranno e-
sattamente 5 volt e 12 volt.

REALIZZAZIONE PRATICA

Sul circuito stampato siglato LX.1202 dovete mon-


tare i pochi componenti visibili in fig.3.
Come noterete, nel kit abbiamo inserito due zoc-
coli, uno da 20 e laltro da 28 piedini, ma qui dob-
biamo aprire una piccola parentesi. Fig.8 Come si presenta a montaggio ulti-
Poich questo progetto verr utilizzato anche da mato lo stadio di alimentazione che vi for-
piccole e medie Industrie per testare i loro micro- nisce tutte le necessarie tensioni per ali-
processori, noi consigliamo di utilizzare, in sostitu- mentare il nostro bus.
zione degli zoccoli inseriti nel kit, degli zoccoli tex- Vi consigliamo di racchiudere lalimentato-
tool provvisti di una levetta di bloccaggio (vedi re dentro un mobile plastico e a questo pro-
fig.1). posito vi indichiamo il mobile codificato
Usando questi zoccoli risulter pi semplice e ve- MTK06.22 del costo di 6,97
loce inserire e togliere i microprocessori, ma que-
sto vantaggio coster 55.000 lire in pi.
Come visibile in fig.3, sullo stampato dovrete mon- che vi servir per collaudare i programmi che pi-
tare i due zoccoli, il pulsante di reset, il quarzo, i lotano i diodi Triac.
connettori per le schede sperimentali ed i pochi Vi conviene racchiudere lalimentatore dentro un
componenti passivi, cio resistenze, condensatori qualsiasi mobile e a tal proposito vi consigliamo il
ed i due diodi al silicio, rispettando il verso della fa- mobile siglato MTK06.22.
scia bianca riportata sul loro corpo. Per le tensioni duscita utilizzate dei fili di diverso
I quattro connettori femmina a 4 terminali, che sul- colore cos da poter subito stabilire il valore della
lo stampato risultano isolati dal circuito, serviranno tensione presente e non correre il rischio di inver-
come punto di appoggio per le schede speri- tirli quando li collegherete alla morsettiera del bus.
mentali che inserirete nel bus. Tanto per fare un esempio, per la massa potrete
Questi connettori vi serviranno anche per evitare di scegliere il colore nero, per i 5,6 volt il colore gial-
inserire le schede sperimentali in senso inverso al lo o marrone e per i 12,6 volt il colore rosso o a-
richiesto. rancio.
Per i due fili dellalternata potrete usare due fili
bianchi oppure di un colore completamente diver-
so da quello scelto per le altre uscite.
ALIMENTAZIONE
Per le schede sperimentali vi rimandiamo allarti-
Le tensioni richieste per alimentare questo bus de- colo pubblicato su questa stessa rivista.
vono risultare, come gi anticipato, di 5,6 e di 12,6
volt.
Come visibile in fig.4, le due tensioni prelevate dai
due secondari del trasformatore T1 vengono rad-
drizzate da RS1 ed RS2, poi stabilizzate a 5,6 volt
dallintegrato uA.7805 (vedi IC2) e a 12,6 volt
dallintegrato uA.7812 (vedi IC1).
Per prelevare sulluscita di questi due integrati una
tensione di 5,6 volt anzich di 5 volt ed una ten-
sione di 12,6 volt anzich di 12 volt, abbiamo in-
serito tra il terminale M e la massa un diodo al si-
licio (vedi DS1 - DS2). COSTO DI REALIZZAZIONE
Dallo stesso trasformatore si preleva anche una
tensione alternata di circa 14 volt, che potr ser- Il solo Bus siglato LX.1202 completo di cir-
vire per testare i circuiti che utilizzano dei Triac. cuito stampato, quarzo, zoccoli normali, con-
Anche se per queste prove possibile applicare nettori, pulsante, cio tutti i componenti visibili in
sulla loro uscita una tensione di 220 volt alterna- fig.3 (sensa textool) ................................... 25,80
ti, noi ve lo sconsigliamo, perch se inavvertita-
mente toccaste con le mani le piste del circuito Costo del solo stampato LX.1202 ............. 17,04
stampato potrebbe risultare molto pericoloso. Costo di uno zoccolo textool a 20 piedini . 19,63
Costo di uno zoccolo textool a 28 piedini . 28,41

Il solo stadio di alimentazione siglato LX.1203 com-


REALIZZAZIONE PRATICA ALIMENTATORE pleto di circuito stampato, due integrati stabilizza-
tori, alette di raffreddamento, due ponti raddrizza-
Sul circuito stampato monofaccia siglato LX.1203 tori, cordone di alimentazione e relativo trasforma-
monterete tutti i componenti visibili in fig.7 cercan- tore ............................................................. 25,80
do come sempre di rispettare la polarit dei termi-
nali dei diodi al silicio, dei ponti raddrizzatori e dei Costo del solo stampato LX.1203 ............... 4,34
condensatori elettrolitici.
Come potete osservare anche dalle foto, i due in- Vi consigliamo di racchiudere lo stadio di alimen-
tegrati stabilizzatori vanno fissati sopra due alette tazione dentro un mobile plastico e a tale scopo vi
di raffreddamento. proponiamo il modello MTK06.22.
Per le tensioni duscita inserite una morsettiera a
3 poli dalla quale potrete prelevare le tensioni sta- Costo del mobile MTK06.22 ........................ 6,97
bilizzate di 12,6 volt - 5,6 volt pi il filo della mas-
sa, ed una morsettiera a 2 poli dalla quale potre- Ai prezzi riportati andranno aggiunte le sole spese
te prelevare una tensione alternata di circa 14 volt di spedizione a domicilio.
Inserendo queste due schede nel bus siglato Sul piedino 22 di data vanno inviati dei bit seriali,
LX.1202, riportato su questo numero, e collocan- che lintegrato M.5450 convertir in bit paralleli ne-
do nel suo zoccolo un microprocessore ST6, che cessari per accendere i segmenti dei quattro di-
voi stessi potrete programmare copiando uno dei splay.
programmi di esempio presenti nel dischetto che La sequenza dei bit necessari per accendere i seg-
vi forniremo, potrete ottenere orologi - contase- menti dei display deve essere preceduta da un bit
condi - timer - cronometri - contaimpulsi ecc. di start (vedi fig.1).
Poich i nostri programmi di esempio si possono In pratica allintegrato giunge una sequenza di 37
facilmente modificare, riuscirete in breve tempo a bit come qui sotto riportato:
capire come scriverne altri per ottenere funzioni che
noi attualmente non abbiamo previsto.
1 bit di Start
Queste schede risulteranno quindi utilissime per te-
32 bit per accendere i display
stare tutti i programmi che scriverete, perch ve-
2 bit per accendere i diodi led
drete dal vivo se appaiono i numeri desiderati e
2 bit di fine caricamento
se i rel si eccitano o si diseccitano nei tempi pre-
visti.
A queste schede ne seguiranno via via altre che u- I segmenti dei quattro display e dei due diodi led
tilizzeranno i display LCD ed i diodi TRIAC. si accendono soltanto quando allintegrato sono
Entrerete cos in possesso di un valido banco di giunti tutti i 37 bit, vale a dire tutta la sequenza so-
test per tutti i tipi di programmi per microproces- pra riportata compresi gli ultimi 2 bit di fine cari-
sori ST6. camento.

SCHEDATEST per ST6


SCHEDA DISPLAY Se guardate la fig.1, in cui sono riportati tutti i 7
segmenti di un display contrassegnati da una let-
tera, potrete ricavare dalla Tabella N.1 i bit che
Lo schema elettrico di questa scheda, riportato in devono giungere al piedino 22 dellintegrato per
fig.6, molto semplice, perch utilizza il solo inte- accendere i vari segmenti.
grato M.5450 (vedi IC1) necessario per pilotare 4 Il bit, come gi sapete, una cifra binaria che pu
display. assumere un livello logico 0 oppure un livello lo-
Nel caso realizzaste un orologio, i due pulsanti gico 1.
presenti nel circuito vi potranno servire per mette- Per accendere i segmenti interessati, i bit che en-
re a punto le ore ed i minuti, mentre i due diodi trano sul piedino 22 devono avere un livello lo-
led potrebbero visualizzare i secondi oppure po- gico 1.
treste impiegarli per altre funzioni da assegnare tra- E poi lintegrato che provvede a commutare le sue
mite software. uscite a livello logico 0 in modo che i segmenti
Il trimmer siglato R1 serve soltanto per variare la ed i diodi led risultino alimentati.
luminosit dei display.
Poich desideriamo che il lettore sappia come si Quindi se volessimo accendere il numero 7 sul di-
riesca a far accendere un qualsiasi numero sui 4 splay N.4, sullingresso di IC1 dovremmo far giun-
display collegando due soli fili allintegrato M.5450 gere la sequenza di bit visibile in fig.2.
(vedi piedini 22-21), dobbiamo a questo punto spie- Se invece volessimo accendere il numero 7 sul di-
gare come vanno gestiti questi piedini. splay N.1, dovremmo far giungere sullingresso di
Sul piedino 21 di clock va applicata una frequen- IC1 la sequenza di bit visibile in fig.3.
za ad onda quadra che faremo generare dallST62 Nel dischetto che vi forniremo abbiamo inserito un
inserendo nel programma le due istruzioni Set-Res programma chiamato DISPLAY per mostrarvi co-
(vedi righe 119-120 nel programma DISPLAY.A- me si possa accendere qualsiasi numero in uno
SM presente nel dischetto). dei quattro display.
Potrete utilizzare queste due schede come orologio, contasecondi, ti-
mer, cronometro, contaimpulsi, e se questo non bastasse potrete ecci-
tare, nei tempi da voi desiderati, dei rel per pilotare una cicalina o per
alimentare una qualsiasi apparecchiatura elettrica.

SCHEDA REL scheda dei display, che gi utilizza le porte B0 -


B1 - B2 - B3, non potevamo servirci della stessa
Lo schema elettrico di questa scheda, riportato in porta per accendere un display ed eccitare un rel.
fig.9, utilizza solo 4 rel pilotati da altrettanti tran- I vari rel si eccitano quando sulle porte B4 - B5
sistor. - B6 - B7 presente un livello logico 1, che, po-
In teoria avremmo potuto inserire ben 20 rel uti- larizzando le Basi dei transistor, li portano in con-
lizzando cos tutte le porte A - B - C, ma poich duzione.
questa scheda viene inserita nel bus assieme alla A rel eccitato si accende il diodo led applicato
TABELLA N. 1 ai suoi capi, quindi se sulla morsettiera duscita
DISPLAY N. 4 applicheremo una lampadina o un motorino, ali-
mentati con una qualsiasi tensione esterna sia in
piedino segmento continua sia in alternata, la lampada si accen-
Bit
IC1 display der ed il motorino inizier a girare.
9 10 A I pulsanti P1 - P2 - P3 - P4, collegati alle porte A0
10 9 B - A1 - A2 - A3, sono stati inseriti per diseccitare o
11 8 C eccitare manualmente uno dei quattro rel.
12 7 D
13 6 E REALIZZAZIONE PRATICA DISPLAY
14 5 F
15 4 G Sul circuito stampato siglato LX.1204 monterete i
16 3 punto pochi componenti visibili in fig.7.
Per iniziare consigliamo di inserire lo zoccolo per
DISPLAY N. 3 lintegrato IC1, poi, dal lato opposto dello stampa-
to, inserite il connettore maschio ad 1 fila provvi-
piedino segmento
Bit sto di 24 terminali e gli altri due connettori maschi,
IC1 display
sempre ad 1 fila, provvisti di 4 terminali, che in se-
1 18 A guito vi serviranno per innestare questa scheda sui
2 17 B connettori femmina della scheda bus siglata
3 16 C LX.1202.
4 15 D Dopo aver stagnato questi componenti, potete in-
5 14 E serire le due resistenze, i quattro condensatori, il
6 13 F
trimmer R1 ed i due pulsanti P1 - P2.
7 12 G
Proseguendo nel montaggio inserite i due diodi led
8 11 punto
rivolgendo il terminale pi lungo, cio lAnodo,
verso sinistra.
DISPLAY N. 2 Se invertirete questo terminale, i diodi led non si
piedino segmento accenderanno.
Bit Per completare il montaggio dovrete saldare diret-
IC1 display
tamente sul circuito i quattro display, controllando
25 33 A che il lato in cui presente il punto decimale ri-
26 32 B sulti rivolto verso il basso, cio verso lintegrato IC1.
27 31 C
Dopo aver inserito tutti i componenti, dovete inse-
28 30 D
rire nel suo zoccolo lintegrato M.5450 rivolgendo
29 29 E
la sua tacca di riferimento ad U verso sinistra, co-
30 28 F
31 27 G me risulta visibile in fig.7.
32 26 punto
REALIZZAZIONE PRATICA REL

DISPLAY N. 1 Sul circuito stampato siglato LX.1205 monterete


segmento tutti i componenti visibili in fig.10.
piedino
Bit Per il montaggio vi consigliamo di iniziare inseren-
IC1 display
17 2 A
18 40 B
19 39 C DIODO LED
20 38 D
21 37 E Bit piedino IC1 diodi led
22 36 F
23 35 G 34 24 DL2
24 34 punto 33 25 DL1

Con queste tabelle potrete sapere quali bit devono giungere sul piedino 22 dellintegrato
M.5450 (vedi fig.4) per accendere i sette segmenti dei quattro display ed i due diodi led.
CLOCK
PIN 21

START 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 RESET
DATA
PIN 22
LOAD

a Fig.1 Sul piedino 22 dellintegrato M.5450 giunge un primo bit di


Start. A questo seguono 32 bit per accendere i segmenti dei di-
f g b splay, 2 bit per accendere i led e 2 bit di fine caricamento. I sette
segmenti del display sono identificati da una lettera (vedi A-B-C-
e c D-E-F-G) quindi per visualizzare il numero 7 dovrete alimentare i
d segmenti A-B-C e per visualizzare il numero 3 dovrete alimentare
dp i segmenti A-B-G-C-D.

CLOCK
PIN 21

START 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 RESET
DATA
PIN 22
N. 7 SU DISPLAY 4

Fig.2 Per accendere il numero 7 sul display 4 dovrete far giungere sullintegrato M.5450
questa sequenza di bit seriali. Con i bit 9-10-11 verranno alimentati i soli segmenti A-B-C
del display n.4 (vedi Tabella posta sulla sinistra).

CLOCK
PIN 21

START 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 RESET
DATA
PIN 22
LOAD
N. 7 SU DISPLAY 1

Fig.3 Per accendere il numero 7 sul display 1 dovrete far giungere sullintegrato M.5450
questa sequenza di bit seriali. Con i bit 17-18-19 verranno alimentati i soli segmenti A-B-
C del display n.1 (vedi Tabella posta sulla sinistra).

Vcc

USCITE PER DISPLAY


GND 1 40 BIT 18
20 BIT 17 2 39 BIT 19
BIT 16 3 38 BIT 20
BIT 15 4 37 BIT 21
LUMIN. 19 BIT 14 5 36 BIT 22
34 OUTPUT BAFFER BIT 13 6 35 BIT 23
BIT 12 7 34 BIT 24
BIT 11 8 33 BIT 25
BIT 10 9 32 BIT 26
BIT 9 10 31 BIT 27
LOAD
34 LATCHES BIT 8 11 30 BIT 28
BIT 7 12 29 BIT 29
ENABLE 23 BIT 6 13 28 BIT 30
BIT 5 14 27 BIT 31
BIT 4 15 26 BIT 32
DATA 22
34 BIT SHIFT REGISTER BIT 3 16 25 BIT 33
BIT 2 17 24 BIT 34
BIT 1 18 23 ENABLE
CLOCK 21
LUMIN. 19 22 DATA
RESET + Vcc 20 21 CLOCK
1

M 5450

Fig.4 Schema a blocchi dellintegrato M.5450 e connessioni dei piedini sullo zoccolo vi-
ste da sopra. Entrando con un segnale seriale nel piedino 22 di questo integrato voi po-
trete accendere i segmenti dei 4 display (vedi fig.6).
Fig.5 Foto della scheda di-
splay notevolmente rimpic-
ciolita per motivi di spazio.

DISPLAY 1 DISPLAY 2 DISPLAY 3 DISPLAY 4

A A A A

DL1

DL2 C1

a b c d e f g dp a b c d e f g dp a b c d e f g dp a b c d e f g dp

2 39 37 35 33 31 29 27 25 24 18 16 14 14 10 8 6 4
40 38 36 34 32 30 28 26 17 15 13 11 9 7 5 3 20

IC1 R1

19
22 21 1 23

D CK C2

R2 R3

C3 P1 C4 P2

CONN. 1 / 2
A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C4 C5 C6 C7 NMI + 5 V. GND + 12 V.

Fig.6 Schema elettrico della scheda display. I segmenti dei display si accendo-
no quando il piedino duscita dellintegrato si porta a livello logico 0.

ELENCO COMPONENTI LX.1204 C4 = 100.000 pF poliestere


DL1 = diodo led
R1 = 50.000 ohm trimmer DL2 = diodo led
R2 = 10.000 ohm 1/4 watt DISPLAY1-4 = display tipo BS.A501
R3 = 10.000 ohm 1/4 watt IC1 = M.5450
C1 = 100.000 pF poliestere P1-P2 = pulsanti
C2 = 1.000 pF poliestere CONN.1/2 = connettore 24 poli
C3 = 100.000 pF poliestere
do, dal lato opposto a quello dei componenti, il con- Lultimo connettore femmina, posto sulla parte su-
nettore maschio ad 1 fila provvisto di 24 termina- periore dello stampato LX.1202, stato previsto
li e gli altri due connettori maschi, sempre ad 1 fi- nelleventualit che vogliate collegare un vostro
la, provvisti di 4 terminali, che in seguito vi servi- personale circuito stampato oppure per prolunga-
ranno per innestare questa scheda sui connettori re il bus.
femmina della scheda bus siglata LX.1202.
Ora voltate lo stampato e sulla parte inferiore del
circuito inserite tutte le resistenze, poi i diodi al I PROGRAMMI
silicio non dimenticando di rivolgere il lato contor-
nato da una fascia nera verso le morsettiere di u- Il nuovo dischetto che vi forniremo in pratica lo
scita. stesso che abbiamo distribuito in precedenza (ve-
Proseguendo nel montaggio inserite tutti i con- di rivista N.172/173), con la differenza che oltre ai
densatori, poi tutti i transistor rivolgendo la parte programmi:
piatta del loro corpo verso sinistra come visibile
nello schema pratico di fig.10. CONTA.ASM
Completata questa operazione, potete inserire i LED.ASM
quattro pulsanti, i quattro rel e le quattro mor- LOTTO.ASM
settiere a 2 poli. STANDARD.ASM
Per ultimi montate i diodi led non dimenticando di
rivolgere il terminale pi lungo dellAnodo verso i abbiamo aggiunto questi nuovi files:
rel.
Le quattro morsettiere presenti nello stampato so- RELE.ASM
no collegate ai contatti dei rel, perci quando il DISPLAY.ASM
rel si ecciter il contatto si chiuder e pertanto lo OROLOGIO.ASM
potrete utilizzare come interruttore per accende- CRONOMET.ASM
re lampadine, alimentare motorini o trasforma- TEMPOR.ASM
tori oppure dei servorel a 220 volt. TIMER.ASM

INSERIMENTO SCHEDE nel BUS Ogni riga di programma stata completata da un


commento che spiega la funzione dellistruzione e
Potete inserire queste schede nel bus siglato quindi permette di sapere come modificare il pro-
LX.1202 indifferentemente su uno dei due connet- gramma per fargli compiere una funzione diversa
tori femmina presenti sullo stampato. da quella per cui era stato scritto.

Fig.7 Schema pratico di montaggio della scheda display siglata LX.1204. Quando inseri-
te i display rivolgete il loro punto decimale verso lintegrato IC1.
Fig.8 Foto ridotta
della scheda rel.

USCITA 1

RELE' 1 RELE' 2 RELE' 3 RELE' 4

DL1 DL2 DL3 DL4


DS1 R3 DS2 R6 DS3 R9 DS4 R12

C C C C
R1 R4 R7 R10
B B B B

R2 E R5 E R8 E R11 E
TR1 TR2 TR3 TR4

R13 R14 R15 R16

C1 P1 C2 P2 C3 P3 C4 P4

B
CONN. 1 / 2
E C A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C4 C5 C6 C7 NMI GND + 5 V. + 12 V.
BC 547

Fig.9 Schema elettrico della scheda rel siglata LX.1205 e connessioni del transistor
BC.547 viste da sotto. Potrete utilizzare i rel per alimentare motorini o lampade.

ELENCO COMPONENTI LX.1205


R8 = 10.000 ohm 1/4 watt R16 = 10.000 ohm 1/4 watt
R1 = 2.200 ohm 1/4 watt R9 = 680 ohm 1/4 watt C1-C4 = 100.000 pF poliestere
R2 = 10.000 ohm 1/4 watt R10 = 2.200 ohm 1/4 watt DS1-DS4 = diodi 1N.4150
R3 = 680 ohm 1/4 watt R11 = 10.000 ohm 1/4 watt DL1-DL4 = diodi led
R4 = 2.200 ohm 1/4 watt R12 = 680 ohm 1/4 watt TR1-TR4 = NPN tipo BC.547
R5 = 10.000 ohm 1/4 watt R13 = 10.000 ohm 1/4 watt RELE1-4 = rel 12 volt
R6 = 680 ohm 1/4 watt R14 = 10.000 ohm 1/4 watt P1-P4 = pulsanti
R7 = 2.200 ohm 1/4 watt R15 = 10.000 ohm 1/4 watt CONN.1/2 = connettore 24 poli
Tanto per fare un esempio, se nel programma TI- Se il computer vi comunica che questa directory e-
MER volete variare i tempi di eccitazione dei rel, siste gi, non preoccupatevi e premete due volte
troverete spiegato in quale riga va modificata li- il tasto S.
struzione e quale numero occorre inserire. A questo punto inizia la scompattazione dei files
Se volete che il programma TIMER ecciti un rel (vedi fig.11) ed al termine delloperazione vedrete
per far suonare un campanello o per accendere u- apparire sul monitor la scritta:
na caldaia ad una precisa ora, vi verr spiegato
quale riga modificare per migliorare in base alle vo- Buon divertimento
stre personali esigenze la funzionalit del pro-
gramma. Premendo un tasto qualsiasi, sul monitor apparir
la scritta:

TRASFERIMENTO file nellHARD-DISK C:\ST6>

Una volta inserito il dischetto nel drive floppy, per Nel dischetto che vi abbiamo preparato, abbiamo
trasferire tutti i suoi files nellHard-Disk dovete scri- incluso un semplice Editor che vi sar molto utile
vere: per visualizzare tutte le righe di ogni programma,
e, se lo desiderate, per modificarle.
C:\>A: poi Enter Potrete usare lo stesso Editor per scrivere nuovi
A:\>INSTALLA poi Enter programmi, ed anche per assemblarli prima di tra-
sferirli nella memoria del microprocessore ST6 tra-
Non usate mai listruzione Copy del Dos o altri co- mite il nostro programmatore siglato LX.1170 pre-
mandi analoghi del PCshell - PCtools - Norton o sentato sulla rivista N.172/173.
il File Manager di Windows, perch il programma
INSTALLA presente nel dischetto provvede a Tutte le istruzioni per utilizzare lEditor sono state
scompattare automaticamente i files inseriti. gi descritte nella rivista N.172/173, in particolare
Dopo aver pigiato Enter apparir la scritta: nellarticolo sul Circuito Test a pag.56, quindi vi
consigliamo di rileggere attentamente questo arti-
Directory C:\ST6 colo.

Fig.10 Schema pratico di montaggio della scheda LX.1205. Potrete modificare il pro-
gramma di base che troverete nel dischetto in modo da adattarlo alle vostre esigenze.
Nelle pagine seguenti ci limiteremo infatti a descri-
vervi le istruzioni pi importanti.

DUPLICARE un FILE con NOME diverso

Anzich modificare i files che trovate nel dischet-


to, vi consigliamo di ricopiarli nellHard-Disk con
un nome diverso, e di apportare su questo nuovo
file le modifiche che riterrete opportune.
In questo modo avrete sempre a disposizione, in
caso di bisogno, il programma originale.
Ammesso che vogliate duplicare il file DISPLAY,
dovrete innanzitutto scegliere un nome che non ab-
bia pi di 8 caratteri, ad esempio DPLPROVA.
Quando siete nel menu principale del nostro Edi- Fig.11 Tutti i files presenti nel dischetto ver-
tor: ranno automaticamente scompattati quan-
do li memorizzerete nellHard-Disk.
premete ALT+F
poi pigiate D
tasto funzione F2 per memorizzare tutte le modi-
fiche che avete effettuato.
apparir la scritta C:\ST6>
A questo punto potete scrivere listruzione:
ASSEMBLAGGIO del PROGRAMMA
C:\ST6>Copy DISPLAY.ASM DPLPROVA.ASM
Un programma corretto, modificato o riscritto, si
poi premete Enter. pu trasferire in un micro ST6 solo dopo averlo as-
Dopo pochi secondi apparir la scritta: semblato.
Dopo aver salvato un programma premendo il ta-
1 file copiato sto funzione F2, per assemblarlo dovrete proce-
dere come segue:
Per ritornare al menu principale dovrete scrivere:
Premete ALT+T
C:\ST6>EXIT poi Enter quindi premete A

Ora con il tasto funzione F3 potrete richiamare il fi- Se nel programma che avete modificato o riscritto
le DPLPROVA sul quale potrete apportare tutte le non presente nessun errore, dopo pochi secon-
modifiche che riterrete opportune. di comparir sul monitor la scritta:

PER MODIFICARE un PROGRAMMA ***SUCCESS***

Premendo il tasto funzione F3, quando siete nel Se avete commesso qualche errore, apparir in
menu principale, appare sul monitor una finestra basso a sinistra sul monitor un numero, che corri-
con lintero elenco dei programmi. sponde alla riga in cui c un errore.
Premendo prima il tasto TAB e poi i tasti freccia Dovrete allora riaprire il file ed andare sulla riga
potrete portare il cursore sui nomi dei programmi. che vi stata segnalata per scoprire quale errore
Quando il cursore si trova sul programma che vo- avete commesso.
lete modificare, premete Enter ed apparir il lista- Terminata la correzione, dovrete nuovamente sal-
to completo del programma selezionato. vare il programma premendo il tasto F2, dopodi-
ch potrete ripetere i comandi gi descritti per as-
Per cancellare una sola parola semblare il vostro programma.
pigiate i tasti CTRL+T.

Per cancellare unintera riga PER TRASFERIRE il programma sullST6


pigiate i tasti CTRL+Y.
Dopo aver assemblato il programma ed aver ot-
Dopo aver corretto, modificato, cancellato una tenuto la scritta ***success***, potrete trasferirlo
riga o una parola dovrete ricordarvi di premere il nella memoria del microprocessore ST6.
Quando siete nel menu principale dovrete: NOTA IMPORTANTE

premere ALT+P Allinizio di tutti i programmi che vi forniamo trove-


rete questa istruzione:
e dopo pochi secondi comparir lintestazione del
software delle SGS in lingua inglese. .ORG 880h
A questo punto, prendete la rivista N.172/173 (se
non lavete potrete sempre richiederla) poi rilegge- che serve per i soli microprocessori ST6 con 2K di
te quanto riportato nelle pagg.39-41, che non ri- memoria, cio i:
scriviamo perch sarebbe uninutile ripetizione di
quanto abbiamo gi spiegato. ST62/E10 - ST62/E15 - ST62/T10 - ST62/T15

TRASFERIRE un FILE sul DISCHETTO Se utilizzerete dei microprocessori ST6 con 4K di


memoria, cio i:
Nel caso voleste trasferire un programma gi as-
semblato dallHard-Disk in un dischetto, ad esem- ST62/E20 - ST62/E25 - ST62/T20 - ST62/T25
pio per darlo ad un amico, dovrete, sempre par-
tendo dal menu principale: dovrete sostituire il numero 880h con il numero
080h, quindi dovrete scrivere:
premere ALT+F
poi premere D .ORG 080h

Apparir la scritta C:\ST6> Pertanto se usate un ST6 da 2K di memoria, do-


A questo punto inserite il dischetto nel drive, ed vrete necessariamente scrivere allinizio del pro-
ammesso che abbiate chiamato il programma che gramma 880h, perch se scriverete 080h, non ri-
volete trasferire DPLPROVA, dovrete scrivere que- sultando presenti in questo ST6 queste celle di
sta istruzione: memoria, non riuscirete a trasferire nessun pro-
gramma, ed il programmatore lo segnaler.
C:\ST6>Copy DPLPROVA.ASM A:\DPLPROVA.ASM Se usate un ST6 da 4K di memoria dovrete scri-
vere allinizio del programma 080h per poter utiliz-
poi Enter zare tutta la sua memoria.
Quando apparir la scritta 1 file copiato dovrete Facciamo presente che se avete un programma da
scrivere: 2K, che ovviamente inizier con lindirizzo di me-
moria 880h, lo potrete tranquillamente trasferire
C:\ST6>EXIT poi Enter con lo stesso indirizzo anche in un ST6 da 4K.
In questo caso partendo dallindirizzo 880h rimar-
TRASFERIRE dal FLOPPY allHARD-DISK ranno inutilizzate tutte le celle di memoria da 080h
a 87Fh.
Per trasferire un programma dal dischetto allHard-
Disk dovrete, quando vi trovate nel menu princi-
pale:
COSTO DI REALIZZAZIONE
premere ALT+F
poi premere D Tutti i componenti per realizzare la scheda Display
siglata LX.1204 visibile nelle figg.6-7 completa di
Apparir la scritta C:\ST6> circuito stampato, integrato M.5450 e 4
A questo punto inserite il dischetto nel drive, ed display ........................................................ 18,60
ammesso che il programma da trasferire si chiami
DPLPROVA, dovrete scrivere questa istruzione: Tutti i componenti per realizzare la scheda Rel si-
glata LX.1205 visibile nelle figg.9-10 completa di
C:\ST6>Copy A:\DPLPROVA.ASM DPLPROVA.ASM circuito stampato e 4 rel .......................... 19,10
poi Enter
Costo del solo stampato LX.1204 ............... 4,34
Quando comparir la scritta 1 file copiato dovre- Costo del solo stampato LX.1205 ............... 5,06
te scrivere:
Ai prezzi riportati andranno aggiunte le sole spese
C:\ST6>EXIT poi Enter di spedizione a domicilio.
Quando un lettore ci scrive che, montato un nostro per capire per quale motivo apparisse un simile er-
progetto non riesce a farlo funzionare, presumia- rore, abbiamo chiesto a 2 lettori residenti a Ra-
mo che abbia commesso un errore, poich prima venna e a Ferrara se fossero disposti a venire a
di pubblicare nella rivista un qualsiasi circuito, no- Bologna portando il loro computer, perch vole-
stra consuetudine farne montare una decina di e- vamo cercare di scoprire la causa di questa ano-
semplari e se constatiamo che uno di questi risul- malia.
ta critico o presenta qualche anomalia lo ripor- Infatti se su 4.738 kit che funzionano in modo per-
tiamo in laboratorio per ricercarne le cause e per fetto solo 16 si rifiutano di farlo, il difetto pu es-
eliminarle. sere causato solo dal computer ed infatti grazie a
Questo modo di procedere lo adottiamo per ridur- questi 2 lettori siamo riusciti ad individuarlo.
re al minimo le riparazioni e per assicurare al let- Abbiamo scoperto che nei loro computer il segna-
tore il sicuro ed immediato funzionamento di ogni le che entrava nel piedino 4 del CONN.1 (vedi nel-
nostro progetto. lo schema elettrico riportato a pag.31 della rivista
A volte si verificano anche delle strane anomalie N.172/173 il segnale D2 che, tramite la R7, giun-
che fanno arrabbiare i lettori ed impazzire i tecni- ge al piedino 1 della porta IC1/E) era strettissi-
ci della consulenza. mo oppure aveva unampiezza ridotta.

NOTA per il programmatore


Se voi foste un tecnico che da anni usa questo pro- Scartata lidea di manomettere il computer, abbia-
grammatore per ST6 senza mai riscontrare nes- mo risolto il problema allargando limpulso con un
sun inconveniente, che conosce tanti amici (esat- piccolo condensatore da 470 picoFarad ceramico
tamente 4.738) che lo hanno realizzato con suc- posto tra la resistenza R7 e la massa come visibi-
cesso, usandolo con diversi tipi di computer, e poi le nelle figg.1-2.
trovaste solo 16 lettori che si lamentano perch il Immediatamente abbiamo comunicato ai 16 letto-
loro montaggio non funziona, cosa rispondereste ri che non riuscivano a programmare gli ST6, di
loro ? aggiungere sul loro programmatore questo con-
Senzaltro che hanno commesso un errore nel densatore da 470 picoFarad e questi ci hanno ri-
montaggio, ed questa anche la nostra risposta. sposto che la scritta:
Ci che ci ha stupito constatare che a tutti e 16
questi lettori sul monitor appariva lo stesso mes- Target chip not present or defective!
saggio, cio:
non appare pi e con questa semplice modifica o-
Target chip not present or defective! ra riescono a programmare qualsiasi ST6.

Subito abbiamo pensato che avessero acquistato Importante = Se il vostro programmatore funzio-
dei microprocessori ST6 difettosi gi allorigine. na correttamente non necessario che inseriate
Per risolvere tale problema ci siamo fatti inviare questo condensatore, comunque se qualche volta
questi ST6 insieme al programmatore per con- vi capita di non riuscire a programmare un ST6,
trollare entrambi in laboratorio. provate a collocare questo condensatore da 470
Appena arrivati, li abbiamo provati su 8 diversi com- pF tra la R7 e la massa ed il difetto sparir.
puter e tutti gli ST6 che ci sono stati inviati si sono Come potete constatare, quando ci imbattiamo in
regolarmente programmati, senza errori. qualche anomalia, facciamo tutto il possibile per
Rispediti i programmatori a questi lettori, tutti e 16 eliminarla, ma se i due lettori di Ravenna e Ferra-
ci hanno risposto che appariva nuovamente il me- ra non ci avessero portato il loro computer, forse
desimo errore. questo caso sarebbe rientrato negli insoluti, per-
Se non ci chiamassimo Nuova Elettronica, a que- ch nessuno poteva supporre che il segnale che
sto punto avremmo abbandonato questi 16 lettori usciva dalla loro presa parallela fosse fuori stan-
con i loro ST6 difettosi, ma per seriet ed anche dard.
Fig.1 Se constatate che il vo-
stro programmatore LX.1170
non sempre riesce a pro-
grammare un ST6, potrete ri-
solvere questo problema col-
legando tra il piedino 1 dellin-
tegrato IC1-E e la massa dello
stampato, un condensatore
da 470 picoFarad.

LX.1170 per micro ST6


GND
22
23 E U
24 IC3 1 28
25 C4 M C5
2 27
C
D1 R4 ST 62 / 15 - 25
B 3 26
3 DZ1
E 4 25
TR3 C6
5 1 20 24

6 2 19 6
23
R7 14 ST 62 / 10 - 20
D2 1 2
4 7 3 18 22
470 pF
IC1 - A 8 4 17 21
R5 IC1 - E
D4 5 6
6 9 5 16 20
IC1 -C
10 11 10 6 15 19
BUSY
11 11 7 14 18
12 13
12 8 13 17
D3
R6 3 4
IC1 - D
5 13 9 12 16

IC1 - B IC1 - F 14 10 11 15
D5 R8
9 8
7
7

Fig.2 Questo condensatore, collegato dopo la resistenza R7, serve per allargare quegli
impulsi che giungono troppo stretti sullingresso dellinverter IC1-E.
A pag.124 della rivista N.175/176 abbiamo riporta- no dovute aggiungere delle altre righe di program-
to il programma N.15 che consente di accendere 5 ma e poich le istruzioni JRC - JRNC - JRZ - JRNZ
diodi led variando la tensione dingresso da 1 a 5 possono fare solo dei salti limitati ad un certo nu-
volt. mero di righe, se queste sono maggiori del richie-
Molti lettori sulla base di questo esempio hanno u- sto appare il messaggio di errore menzionato.
tilizzato i micro ST62E15 o ST62E25, poi hanno In presenza di salti molto lunghi necessario mo-
cercato di modificare il programma per far accen- dificare listruzione presente con quella inversa,
dere 8 diodi led e quando sono andati ad assem- poi scrivere nella riga successiva listruzione JP
blarlo, il computer ha segnalato questo errore: che in grado di fare un salto in qualsiasi punto
del programma anche se molto distante.
5-bit displacement overlow
Le istruzioni andranno quindi modificate:
Con tale indicazione il microprocessore segnala
che non pu fare un salto alletichetta richiesta
perch sono troppe le righe che lo separano da es- da JRC a JRNC
sa. da JRNC a JRC
Nel nostro esempio avevamo usato soltanto 5 dio- da JRZ a JRNZ
di led, quindi utilizzando degli altri diodi led si so- da JRNZ a JRZ

PROGRAMMA per Esempio n.15


LDI pdir_a,00000000B ; in queste tre righe abbiamo settato
LDI popt_a,10000000B ; il piedino A7 come ingresso analogico
LDI port_a,10000000B ;
LDI pdir_b,00011111B ; in queste righe abbiamo settato
LDI popt_b,00011111B ; i piedini da B0 a B4 come uscite
LDI port_b,00000000B ;
ripeti LDI wdog,255 ; carichiamo il watchdog
LDI adcr,00110000B ; provvedi a convertire da analogico a digitale
attendi JRR 6,adcr,attendi ; attendere che avvenga la conversione A/D
LD a,addr ; carica nellaccumulatore A, il numero digitale
CPI a,255 ; compara il valore di A con il numero 255
JRNC LED5 ; se A uguale a 255 salta alletichetta LED5
CPI a,204 ; compara il valore di A con il numero 204
JRNC LED4 ; se A maggiore di 204 salta alletichetta LED4
CPI a,153 ; compara il valore di A con il numero 153
JRNC LED3 ; se A maggiore di 153 salta alletichetta LED3
CPI a,102 ; compara il valore di A con il numero 102
JRNC LED2 ; se A maggiore di 102 salta alletichetta LED2
CPI a,51 ; compara il valore di A con il numero 51
JRNC LED1 ; se A maggiore di 51 salta alletichetta LED1
JP LED0 ; se A minore di 51 salta alletichetta LED0
LED0 LDI port_b,00000000B ; non accendere nessun diodo led
JP ripeti ; salta alletichetta ripeti del watchdog
LED1 LDI port_b,00000001B ; accendi il led sul piedino B0
JP ripeti ; salta alletichetta ripeti del watchdog
LED2 LDI port_b,00000011B ; accendi i led sui piedini B0 - B1
JP ripeti ; salta alletichetta ripeti del watchdog
LED3 LDI port_b,00000111B ; accendi i led sui piedini B0 - B1 - B2
JP ripeti ; salta alletichetta ripeti del watchdog
LED4 LDI port_b,00001111B ; accendi i led sui piedini B0 - B1 - B2 - B3
JP ripeti ; salta alletichetta ripeti del watchdog
LED5 LDI port_b,00011111B ; accendi i led sui piedini B0 - B1 - B2 - B3 - B4
JP ripeti ; salta alletichetta ripeti del watchdog
PROGRAMMA SALTO Esempio n. 15 bis
LDI pdir_a,00000000B ; in queste tre righe abbiamo settato
LDI popt_a,10000000B ; il piedino A7 come ingresso analogico
LDI port_a,10000000B ;
LDI pdir_b,11111111B ; in queste righe abbiamo settato
LDI popt_b,11111111B ; i piedini della porta B come uscite
LDI port_b,00000000B ;
ripeti LDI wdog,255 ; carichiamo il watchdog
LDI adcr,00110000B ; provvedi a convertire da analogico a digitale
attendi JRR 6,adcr,attendi ; attendere che avvenga la conversione A/D
LD a,addr ; carica nellaccumulatore A il numero digitale
CPI a,255 ; compara il valore di A con 255
JRC etich1 ; se A minore di 255 salta a etich1
JP LED8 ; salta a LED8
etich1 CPI a,224 ; compara il valore di A con 224
JRC etich2 ; se A minore di 224 salta a etich2
JP LED7 ; salta a LED7
etich2 CPI a,192 ; compare il valore di A con 192
JRC etich3 ; se A minore di 192 salta a etich3
JP LED6 ; salta a LED6
etich3 CPI a,160 ; compara il valore di A con 160
JRC etich4 ; se A minore di 160 salta a etich4
JP LED5 ; salta a LED5
etich4 CPI a,128 ; compara il valore di A con 128
JRC etich5 ; se A minore di 128 salta a etich5
JP LED4 ; salta a LED4
etich5 CPI a,96 ; compara il valore di A con 96
JRC etich6 ; se A minore di 96 salta a etich6
JP LED3 ; salta a LED3
etich6 CPI a,64 ; compara il valore di A con 64
JRC etich7 ; se A minore di 64 salta a etich7
JP LED2 ; salta a LED2
etich7 CPI a,32 ; compara il valore di A con 32
JRC etich8 ; se A minore di 32 salta a etich8
JP LED1 ; salta a LED1
etich8 JP LED0 ; salta a LED0
LED0 LDI port_b,00000000B ; non accendere nessun diodo led
JP ripeti ; salta alletichetta ripeti del watchdog
LED1 LDI port_b,00000001B ; accendi il led sul piedino B0
JP ripeti ; salta alletichetta ripeti del watchdog
LED2 LDI port_b,00000011B ; accende i led sui piedini B0 - B1
JP ripeti ; salta alletichetta ripeti del watchdog
LED3 LDI port_b,00000111B ; accende i led sui piedini B0 - B1 - B2
JP ripeti ; salta alletichetta ripeti del watchdog
LED4 LDI port_b,00001111B ; accende i led sui piedini B0 - B1 - B2 - B3
JP ripeti ; salta alletichetta ripeti del watchdog
LED5 LDI port_b,00011111B ; accende i led sui piedini B0 - B1 - B2 - B3 - B4
JP ripeti ; salta alletichetta ripeti del watchdog
LED6 LDI port-b,00111111B ; accende i led sui piedini da B0 a B5
JP ripeti ; salta alletichetta ripeti del watchdog
LED7 LDI port-b,01111111B ; accende i led sui piedini da B0 a B6
JP ripeti ; salta alletichetta ripeti del watchdog
LED8 LDI port-b,11111111B ; accende i led sui piedini da B0 a B7
JP ripeti ; salta alletichetta ripeti del watchdog
Nel programma presentato a pag.124 come E- lo A/D converter, potevamo utilizzare come in-
sempio N.15 abbiamo scritto nella 12 riga que- gresso per segnali analogici un solo piedino.
sta istruzione: In pratica possibile utilizzare anche pi piedini
come ingressi analogici, sempre che si scriva un
JRNC LED5 ; se A uguale a 255 salta alleti- programma che vada a leggere in multiplexer le
chetta LED5 tensioni presenti su tutti i piedini dingresso che ab-
biamo prescelto per questa funzione.
Nel caso in cui si desiderino aggiungere degli altri Per farvi comprendere come un solo A/D conver-
led, sar necessario modificare il programma co- ter possa leggere le tensioni poste su diversi pie-
me segue: dini, vi proponiamo qui di seguito un esempio.
Ammesso di possedere un solo voltmetro e di vo-
JRC etich1; se A minore di 255 salta a etich1 ler leggere con questo valori di tensione presenti
JP LED8; salta a LED8 su punti diversi, potremo farlo se sullingresso del
Etich1; etichetta 1 che proseguir con il pro- voltmetro applicheremo il cursore di un commu-
gramma tatore rotativo e sui terminali di commutazione le
diverse tensioni che vorremo leggere.
Se ancora tutto questo non vi risulta chiaro, con- Ruotando il commutatore sulle diverse posizioni,
frontate il primo programma Esempio N.15 con il potremo leggere pi tensioni pur disponendo di
secondo programma modificato, che abbiamo chia- un solo voltmetro.
mato Esempio N.15 BIS. Vogliamo comunque ricordarvi che come ingressi
analogici potremo usare qualsiasi piedino ad ec-
cezione dei soli piedini A0-A1-A2-A3.
CONVERTITORE A/D Nel programma che qui riportiamo come Pro-
gramma A/D vi facciamo vedere come bisogner
Nella rivista N.175/176 a pag.123 abbiamo scritto scrivere le istruzioni per poter leggere le tensioni
che, risultando presente allinterno dellST6 un so- presenti sui piedini dingresso di B5-B6-B7.

PROGRAMMA A/D
LDI pdir_b,00000000B ; nelle prime cinque righe
LDI popt_b,00000000B ; abbiamo settato il piedino B7
LDI port_b,00000000B ; come ingresso analogico
LDI port_b,10000000B ;
LDI popt_b,10000000B ;
LDI adcr,00110000B ; provvedi a convertire da analogico a digitale
AD1 JRR 6,adcr,AD1 ; attendere che avvenga la conversione A/D
LD a,ADDR ; copia in A il valore dellA/D
LD VOLT1,a ; copia in VOLT1 il valore di a
LDI pdir_b,00000000B ; nelle prime cinque righe
LDI popt_b,00000000B ; abbiamo settato il piedino B6
LDI port_b,00000000B ; come ingresso analogico
LDI port_b,01000000B ;
LDI popt_b,01000000B ;
LDI adcr, 00110000B ; provvedi a convertire da analogico a digitale
AD2 JRR 6,adcr,AD2 ; attendere che avvenga la conversione A/D
LD a,ADDR ; copia in A il valore dellA/D
LD VOLT2,a ; copia in VOLT2 il valore di a
LDI pdir_b,00000000B ; nelle prime cinque righe
LDI popt_b,00000000B ; abbiamo settato il piedino B5
LDI port_b,00000000B ; come ingresso analogico
LDI port_b,00100000B ;
LDI popt_b,00100000B ;
LDI adcr,00110000B ; provvedi a convertire da analogico a digitale
JRR 6,adcr,AD3 ; attendere che avvenga la conversione A/D
LD a,ADDR ; copia in A il valore dellA/D
LD VOLT3,a ; copia in VOLT3 il valore di a
Se avete gi acquistato il kit per testare gli ST6 si- I tre programmi CONTA-LED-LOTTO che sono as-
glato LX.1202 e le due schede, una con quattro di- semblati in .HEX sono gi pronti per essere cari-
splay siglata LX.1204 e laltra con quattro rel si- cati allinterno della memoria dellST6.
glata LX.1205 pubblicate nella rivista N.179, avre- Tutti gli altri programmi che terminano con .ASM li
te ricevuto anche un dischetto con codice potrete tranquillamente modificare, ampliare e, co-
DF.1202/3 = DF.1170/3 contenente diversi pro- me gi accennato, prima di passarli nella memoria
grammi formato .ASM che, caricati nellhard-disk, di un ST6 li dovrete assemblare per convertirli in
vi serviranno per gestire le due schede sperimen- files .HEX.
tali apparse nella rivista N.179 e quella che appa-
re su questo numero con quattro triac siglata Le modifiche in questi programmi sono sempre ne-
LX.1206. cessarie per adattarli alle vostre esigenze. Ad e-
Prossimamente vi forniremo altre due schede per sempio, noi abbiamo predisposto i programmi TI-
display LCD alfanumerici ed altri nuovi program- MER.ASM e TEMPOR.ASM per eccitare un rel o
mi. un Triac in un tempo di 3 minuti sia contando allin-
Anche se lo abbiamo gi precisato negli articoli pre- dietro (TEMPOR.ASM) che in avanti (TIMER.ASM)
cedenti, vi ricordiamo che i programmi .ASM li po- e poich questo tempo non vi servir per nessuna
trete trasferire singolarmente nella memoria di un delle vostre applicazioni, baster leggere allinter-
microprocessore ST6 solo dopo averli assembla- no del programma i vari commenti per sapere qua-
ti, cio convertiti in files formato .HEX. le riga dovrete correggere e quale numero inse-

SCHEDA con 4 TRIAC


Nel dischetto DF.1202/3 identico al DF.1170/3 che rire per modificarla.
da oggi forniamo, troverete questi 18 programmi: Anche in tutti gli altri programmi troverete di lato ad
ogni riga un commento che vi spiegher se pote-
te modificarla, sostituirla, o cancellarla.
1^ CONTA.ASM Le modifiche non fatele mai sul nostro file, ma su
2^ LED.ASM un identico file che duplicherete attribuendogli un
3^ LOTTO.ASM nome diverso, in modo da avere sempre a dispo-
4^ STANDARD.ASM sizione il file originale per poterlo consultare o con-
frontare per scoprire eventuali errori sui files modi-
5^ CRONOMET.ASM ficati.
6^ DISPLAY.ASM
7^ LM093.ASM
Tutte le istruzioni richieste per poter duplicare un
8^ OROLOGIO.ASM
file le troverete in questo articolo.
9^ RELE.ASM
Non dovrete mai modificare i programmi presen-
10^ TEMPOR.ASM
ti allinterno del dischetto che terminano con BAT
11^ TIMER.ASM
- EXE - COM - DEV - HEX.
12^ TRIAC.ASM
Sul disco che vi forniremo, oltre ai programmi .A-
13^ CLOCK.ASM
SM, presente anche un EDITOR che vi servir
14^ TIME90.ASM
per scrivere dei programmi e per ASSEMBLARE i
15^ TEMP90.ASM
files prima di caricarli sui microprocessori ST6 tra-
mite il programmatore LX.1170 (leggere la rivista
16^ CONTA.HEX
N.172-173).
17^ LED.HEX
18^ LOTTO.HEX
Una volta comprese le funzioni dei vari blocchi,
potrete ampliarli, modificarli oppure trasferirli su
Nota = I primi 4 programmi ve li avevamo gi for- un vostro programma per poter gestire, secondo la
niti con il primo disco floppy assieme al program- vostra fantasia, queste ed altre schede speri-
matore per ST6 (vedi rivista n.172-173). mentali.
per microprocessori ST6
Sul precedente numero della rivista vi abbiamo presentato due schede
per ST6, una per accendere dei normali display a 7 segmenti ed unal-
tra per eccitare dei rel. In questo numero vi presentiamo una scheda
per eccitare quattro diodi Triac, spiegandovi anche come si possono
modificare i programmi da noi forniti.

UN PROMEMORIA blicato nella rivista N.172/173, che sar indispen-


sabile per poter trasferire il programma che sce-
Anche se nel numero 179 della rivista abbiamo glierete o che avrete scritto dal computer alla me-
spiegato che occorre necessariamente inserire moria del microprocessore ST6.
queste schede sperimentali nel bus siglato Dopo aver trasferito il programma nel microproces-
LX.1202, molti ci chiedono se e su quale tipo di sore, dovrete togliere questultimo dallo zoccolo Tex-
computer occorra collegarle e se per le prove con- tool del programmatore LX.1170 ed inserirlo nella
venga usare un ST6 cancellabile o non cancel- scheda bus siglata LX.1202 per poter gestire le sche-
labile. de sperimentali che applicherete su questo bus.
Vi ricordiamo che il solo programmatore LX.1170
- La scheda bus siglata LX.1202 risulta progettata andr collegato alla porta parallela del vostro com-
per ricevere tutte le schede sperimentali che vi ab- puter, purch questo sia un IBM o un compatibi-
biamo presentato e anche le future con display le serie XT - AT - SX - DX tipo 8088 - 286 - 386 -
LCD. Questa scheda non andr collegata a nes- 486 - Pentium con qualsiasi frequenza di clock,
sun computer, ma serve per inserirvi lST6 che ab- compresi anche i portatili con installato il sistema
biamo programmato. operativo DOS dal 3 al 6.2.
Ripetiamo nuovamente che il software per ST6
- Oltre alla scheda bus vi servir anche il Pro- non assolutamente compatibile per computer ti-
grammatore per micro ST6 siglato LX.1170 pub- po Commodore, Apple, Amiga, ecc.
- Per le prove sperimentali conviene scegliere un
microprocessore tipo ST62E20 con 4 K di Rom (il
micro ST62E10 stato messo fuori produzione dal-
la SGS), perch, anche se risulta molto costoso,
lo potrete cancellare e riutilizzare diverse centinaia
di volte per memorizzare degli altri nuovi e diver-
si programmi.

- Per cancellare uno di questi microprocessori po-


trete usare la lampada ad ultravioletti siglata
LX.1183 presentata sulla rivista N.174.

- Se volete usare i pi economici microprocessori


tipo ST62T10 o ST62T20 potete farlo, ma poich
Fig.1 Per duplicare il programma STAN- questi non sono cancellabili, se sbaglierete nel-
DARD.ASM dovrete prima richiamare lEdi- lo scrivere un programma, dovrete buttarli ed ac-
tor, scrivendo C:\>ST6 poi Enter. Dopodi- quistarne degli altri.
ch scriverete C:\ST6>ST6 e a questo pun- Normalmente i microprocessori non cancellabili
to potrete premere il tasto Enter. vengono utilizzati solo dopo aver testato pi di u-
na volta il micro cancellabile tipo ST62E20, per a-
vere la certezza che nel vostro programma non
vi siano degli errori.

TABELLA N.1 micro NON CANCELLABILI


Sigla memoria Ram zoccolo piedini utili
Micro utile utile piedini per i segnali
ST62T.10 2 K 64 byte 20 pin 12
ST62T.15 2 K 64 byte 28 pin 20
ST62T.20 4 K 64 byte 20 pin 12
ST62T.25 4 K 64 byte 28 pin 20

Fig.2 Premete i tasti ALT F poi F3 e, cos fa-


cendo, vi appariranno tutti i files ASM. Por- TABELLA N.2 micro CANCELLABILI
tate il cursore sulla riga STANDARD.ASM,
Sigla memoria Ram zoccolo piedini utili
premete Enter e, in tal modo, vi apparir la
Micro utile utile piedini per i segnali
finestra di fig.3.
ST62E.20 4K 64 byte 20 pin 12
ST62E.25 4K 64 byte 28 pin 20

- Quando vorrete scrivere dei nuovi programmi do-


vrete sempre caricare il file STANDARD.ASM, per-
ch questo il file sorgente che definisce la loca-
zione dei 5 registri del micro e fa il settaggio del-
le periferiche, cio una inizializzazione completa.

IL SORGENTE STANDARD.ASM
Fig.3 Portate il cursore sulla riga SAVE as
... poi premete Enter. Per duplicare questo Ritenevamo di aver spiegato abbastanza bene a
file con un nome diverso ripremete i due cosa serva il file STANDARD.ASM, ma leggendo
tasti ALT F e, in tal modo, vi apparir la fi- i quesiti che ci sono pervenuti in proposito abbia-
nestra di fig.4. mo capito di non essere stati sufficientemente e-
saurienti.
Per riparare, ve lo rispiegheremo proponendovi an-
che qualche esempio.
Quando si scrive un programma, occorre sempre
iniziare con dei dati ripetitivi che non varino mai
da un programma ad un altro, quindi per non ri-
scriverli ogni volta con il rischio di commettere de-
gli errori, ve li ritroverete gi tutti impostati nel pro-
gramma STANDARD.ASM con una nota relativa
a cosa dovrete modificare.
Ad esempio, quando arriverete al paragrafo SET-
TAGGIO INIZIALE, subito dopo INIZIO PRO-
GRAMMA troverete tra le prime righe listruzione:
.org 0880h
Fig.4 Per cambiare il nome del file STAN-
Se usate un micro da 2K di memoria, cio un DARD.ASM con ALIBABA dovrete scrivere
ST62E10 - ST62T10 - ST62E15 - ST62T15, non C:\ST6\ALIBABA.ASM e poi premere ALT
dovrete modificare questo numero. F3. Se desiderate cambiare il listato del file
TIMER dovrete scrivere C:\ST6\TIMER.ASM.
Se usate un micro da 4K, cio un ST62E20 -
ST62T20 - ST62E25 - ST62T25, dovrete invece
modificare questo numero come segue:
.org 080h

Ammettiamo ad esempio di voler creare un nuovo


programma chiamato ALIBABA.
La prima operazione da effettuare sar quella di u-
scire da qualsiasi programma in utilizzo, come ad
esempio Windows, Pcshell, Norton, ecc., in mo-
do da vedere in alto a sinistra del vostro schermo
il solo Prompt dei comandi, cio C:\>
A questo punto potrete richiamare il programma
ST6 scrivendolo indifferentemente sia in maiusco-
Fig.5 In tutti i listati troverete di lato un
lo che in minuscolo:
commento condensato che vi aiuter a
capire quale funzione esplicano le varie ri-
C:\>CD ST6 poi premete Enter
ghe. Con un po di esperienza riuscerete
molto facilmente a modificarle.
e in questo modo vi apparir:

C:\ST6>

poi scrivete ST6 come sotto riportato:

C:\ST6>ST6 poi premete Enter

e subito vedrete apparire sul monitor del computer


la finestra dellEDITOR (vedi fig.1).

A questo punto premete contemporaneamente i ta-


sti ALT F, poi F3 e vi apparir una seconda fine-
stra con gli elenchi di tutti i files .ASM (vedi fig.2).
Premete il tasto Enter e vedrete che il cursore an-
dr sul primo file .ASM colorandolo di verde. Fig.6 Corretto o riscritto, dovrete salvare
il nuovo programma premendo il tasto F2,
dopodich lo potrete ASSEMBLARE pre-
Utilizzando i tasti freccia presenti sulla tastiera,
mendo i tasti ALT T poi A. Se non avete
portate il cursore sulla riga STANDARD.ASM, poi
commesso errori apparir SUCCESS.
premete Enter e vedrete apparire sul monitor il li-
stato di questo programma che potrete leggere
dallinizio fino alla fine.
A questo punto se premerete contemporaneamen- ELENCO COMPONENTI LX.1206
te i due tasti ALT F vedrete apparire una nuova
maschera (vedi fig.3). R1 = 1.000 ohm 1/4 watt
Con il tasto freccia gi andate alla riga dove scrit- R2 = 100 ohm 1/4 watt
to: R3 = 1.000 ohm 1/4 watt
R4 = 100 ohm 1/4 watt
SAVE as.... poi premete Enter R5 = 1.000 ohm 1/4 watt
R6 = 100 ohm 1/4 watt
Cos facendo vi apparir una riga con scritto: R7 = 1.000 ohm 1/4 watt
R8 = 100 ohm 1/4 watt
C:\ST6\STANDARD.ASM R9 = 220 ohm 1/4 watt
R10 = 220 ohm 1/4 watt
Poich intendiamo chiamare il nuovo programma R11 = 220 ohm 1/4 watt
ALIBABA, questa riga la dovrete riscrivere come R12 = 220 ohm 1/4 watt
segue: R13 = 10.000 ohm 1/4 watt
R14 = 10.000 ohm 1/4 watt
R15 = 10.000 ohm 1/4 watt
C:\ST6\ALIBABA.ASM poi premete Enter
R16 = 10.000 ohm 1/4 watt
C1 = 47.000 pF pol. 400 V.
Nota = I nomi dei files non debbono mai avere pi
C2 = 47.000 pF pol. 400 V.
di 8 caratteri escluso ovviamente .ASM
C3 = 47.000 pF pol. 400 V.
Corretta questa riga, premete i tasti ALT F3 e vi C4 = 47.000 pF pol. 400 V.
apparir nuovamente la maschera dellEDITOR. C5 = 100.000 pF poliestere
A questo punto dovrete premere i due tasti ALT F, C6 = 100.000 pF poliestere
poi F3 e nella lista dei files troverete il nuovo file C7 = 100.000 pF poliestere
denominato ALIBABA.ASM. C8 = 100.000 pF poliestere
TRC1 = triac tipo 500 V. 5 A.
Dopo aver premuto Enter, con i tasti delle frecce TRC2 = triac tipo 500 V. 5 A.
portate il cursore sul file ALIBABA.ASM e, in que- TRC3 = triac tipo 500 V. 5 A.
sto modo, vi apparir il listato duplicato del file TRC4 = triac tipo 500 V. 5 A.
STANDARD.ASM, che potrete tranquillamente OC1 = fototriac tipo MOC.3020
modificare perch ora lavorerete sul file ALIBA- OC2 = fototriac tipo MOC.3020
BA.ASM. OC3 = fototriac tipo MOC.3020
Se, per ipotesi, tutte le modifiche che apporterete OC4 = fototriac tipo MOC.3020
sul file ALIBABA.ASM non lo faranno funzionare P1 = pulsante
per qualche errore da voi commesso, lo potrete P2 = pulsante
cancellare e nuovamente ricopiare, utilizzando il P3 = pulsante
file originale STANDARD.ASM come vi abbiamo P4 = pulsante
appena spiegato.
Nel programma che in precedenza si chiamava
STANDARD.ASM e che ora avete chiamato ALI-
BABA.ASM dovrete ricordarvi che la riga:
.org 0880h

non va modificata se userete dei micro con 2K di


memoria, vale a dire se userete degli ST62E10, ingressi o uscite a seconda delle esigenze del vo-
ST62E15, ST62T10, ST62T15. stro programma.
Nel caso non sappiate come si faccia a settare le
Se invece userete dei micro con 4K, vale dire de- porte, vi consigliamo di leggere larticolo Impara-
gli ST62E20, ST62E25, ST62T20, ST62T25, que- re a programmare i microprocessori ST6 pub-
sta riga va modificata come segue: blicato nella rivista n.175-176.

.org 080h Terminate tutte le modifiche e scritto il nuovo pro-


gramma che si chiama ALIBABA.ASM, lo dovre-
A questo punto dovrete modificare il settaggio di te salvare premendo il tasto F2.
tutte le porte A-B-C, cio dovrete impostarle come Ricordatevi di premere il tasto funzione F2 tutte le
LP1 LP2 LP3 LP4

USCITA 1 USCITA 2 USCITA 3 USCITA 4

ENTRATA
TENSIONE
ALTERNATA
TRC1 A2
TRC2 A2
TRC3 A2
TRC4 A2
R1 R3 R5 R7
C1 G C2 G C3 G C4 G
A1 A1 A1 A1

6 5 4

R2 R4 R6 R8
6 4 6 4 6 4 6 4

OC1 OC2 OC3 OC4


1 2 1 2 1 2 1 2 1 2 3

R9 R10 R11 R12 MOC 3020

R13 R14 R15 R16


A1 A2 G

C5 P1 C6 P2 C7 P3 C8 P4

BT 137

CONN. 1 / 2
A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C4 C5 C6 C7 NMI GND + 5 V. + 12 V.

Fig.7 Schema elettrico della scheda Triac siglata LX.1206 e connessioni del fototriac vi-
sto da sopra e del triac BT.137. Sulle uscite dei Triac dovrete collegare delle lampadi-
ne o altre apparecchiature elettriche che funzionino con il valore della tensione alternata
che applicherete sulla morsettiera dingresso (vedi fig.8).

volte che eseguirete una variazione o farete unag- Se, in sostituzione di questa scritta, vi apparir un
giunta nel programma, diversamente queste non numero in basso a sinistra sul monitor, significa
verranno memorizzate. che nella riga del programma che avete modifica-
Una volta memorizzato, lo dovrete anche assem- to o variato avete commesso un errore, ad esem-
blare premendo i tasti: pio avete scritto lp anzich ld.

ALT T poi il tasto A (vedi fig.6) Un errore che molti commettono quello di cari-
care direttamente nel registro Y il contenuto del
Se non avrete commesso degli errori nello scrive- registro X scrivendo:
re unistruzione, sul monitor vi apparir la scritta:

***success*** ld y,x
Per caricare il contenuto del registro X nel registro REALIZZAZIONE PRATICA
Y dovrete prima caricare il registro X nellaccumu-
latore A, poi caricare su questo il registro Y, quin- Sul circuito stampato siglato LX.1206 dovrete mon-
di questa istruzione andr scritta su due righe: tare tutti i componenti visibili in fig.8.
Per il montaggio vi consigliamo di saldare sul la-
ld a,x to opposto di questo stampato il connettore ma-
ld y,a schio a 1 fila provvisto di 24 terminali (vedi
CONN 1-2) e vicino alle due morsettiere Uscita 1
e Uscita 4 i due connettori a 1 fila provvisti di so-
Tutti i files una volta assemblati diventeranno dei li 4 terminali, che vi serviranno per innestare i
.HEX, cio convertiti in esadecimale, perch que- connettori femmina presenti sulla scheda bus
sto il solo linguaggio che il microprocessore in siglata LX.1202.
grado di interpretare. Nella parte di stampato visibile in fig.8 inserirete i
Vi ricordiamo che i files .HEX non potranno pi es- quattro zoccoli per i fotoaccoppiatori, tutte le re-
sere modificati. sistenze, poi condensatori e le 5 morsettiere a
due poli.
Proseguendo nel montaggio, inserirete i 4 Triac si-
SCHEMA ELETTRICO glati TRC1-TRC2-TRC3-TRC4, rivolgendo la parte
metallica del loro corpo verso destra come visibi-
Lo schema elettrico di questa scheda per Triac le nello schema pratico di fig.8.
visibile in fig.7.
In teoria, potevamo sfruttare tutte le porte A-B-C Completata questa operazione, potrete inserire ne-
del microprocessore ST6 come uscite ed in tal mo- gli zoccoli i quattro fotoaccoppiatori rivolgendo
do potevamo inserire in questa scheda ben 20 verso sinistra il lato del loro corpo provvisto del
Triac con il micro da 28 piedini e 12 Triac con il piccolo foro di riferimento.
micro da 20 piedini.

In pratica, non potremo mai farlo, perch dobbia-


mo tenere impegnate diverse porte A e B per ge- INSERIMENTO SCHEDA nel BUS
stire anche le altre schede che inseriremo nel bus
assieme alla scheda Triac o Rel. Questa scheda la potrete inserire nel bus siglato
LX.1202, indifferentemente su un qualsiasi con-
Quando sui piedini della porta B siglati B4-B5-B6- nettore femmina presente su questo stampato e lo
B7 (vedi fig.7) apparir un livello logico 1, vale a stesso dicasi per la scheda dei display che utiliz-
dire una tensione positiva, questa polarizzer il zerete per visualizzare i relativi tempi.
diodo emittente presente allinterno dei fotoac- Sulle morsettiere di destra indicate Entrata Ten-
coppiatori siglati OC1-OC2-OC3-OC4 e di conse- sione Alternata dovrete applicare la tensione che
guenza si ecciter il Triac ad essi collegato. servir per alimentare i motorini o le lampade che
Questi quattro fotoaccoppiatori li abbiamo utiliz- applicherete sulle quattro morsettiere duscita.
zati per separare elettricamente luscita del micro- Per le prime prove vi consigliamo di utilizzare una
processore dalla tensione che applicheremo sul- tensione alternata di 14 volt fornita dallapposito
le due boccole visibili a destra indicate con la scrit- alimentatore LX.1203, presentato sulla rivista
ta Entrata Tensione Alternata. N.179, collegando alle uscite dei Triac delle nor-
Per alimentare i Triac potremo usare qualsiasi ten- mali lampadine da 12 volt massimo 3 watt.
sione alternata partendo da un minimo di 4,5 volt Se lo ritenete opportuno potrete anche entrare nel-
per arrivare ad un massimo di 220 volt. la morsettiera di destra con una tensione alterna-
Ovviamente sulle morsettiere indicate uscita 1 - ta di 220 volt collegando alluscita dei Triac delle
uscita 2 - uscita 3 - uscita 4 dovremo applicare lampadine da 220 volt, ma attenzione, se usere-
delle lampadine, dei motorini in alternata, o qual- te la tensione di rete ricordatevi di non toccare mai
siasi altra apparecchiatura elettrica che funzioni le parti metalliche dei Triac e le uscite dei fotoac-
con il valore di tensione utilizzata per alimentare i coppiatori per evitare che la tensione dei 220 volt
Triac. si scarichi sul vostro corpo.
Non utilizzate una tensione continua per alimen- Con questa scheda potrete utilizzare tutti i pro-
tare i Triac. Se volete usare una tensione conti- grammi che abbiamo usato per la scheda REL
nua dovrete necessariamente servirvi della sche- siglata LX.1025. A fine articolo abbiamo ripor-
da REL siglata LX.1205 presentata nella rivista tato come si possono modificare i tempi e le fun-
N.179. zioni.
Fig.8 Schema pratico di montaggio della scheda LX.1206. Il circuito stampato che vi for-
niremo un doppia faccia con fori metallizzati, quindi non cercate mai di allargare que-
sti fori con una punta da trapano perch, cos facendo, asportereste il sottile strato di ra-
me applicato per via galvanica al loro interno e che necessario per collegare le piste
presenti sotto al circuito stampato con quelle presenti sopra.

Fig.9 Foto della scheda LX.1206 come si presenter a montaggio ultimato. Questa sche-
da andr posta sul Bus siglato LX.1202 (vedi fig.10) assieme al microprocessore ST6 che
avrete gi programmato con uno dei programmi necessari per gestirlo. Consigliamo di ri-
leggere le riviste N.172/173 - 174 - N.175/176 - N.179 per sapere come si deve procede-
re per memorizzare un micro e per settare tutte le PORTE.
INSTALLAZIONE programmi nellHARD-DISK Per copiare il dischetto relativo allST6 nellHard-
Disk di un computer dovrete procedere come se-
Riportiamo in forma condensata quanto gi scritto gue:
nelle riviste numero 172/173 - 174 - 175/176 - 179,
perch ad alcuni lettori potrebbe essere sfuggito u- 1 - Uscite da qualsiasi programma tipo Windows
no o pi di questi numeri in cui sono apparsi i se- - Pcshell - Norton, ecc.
guenti articoli:
2 - Quando sul monitor apparir il prompt C:\>, in-
Programmatore per micro ST6 serite nel drive floppy A il dischetto contenente i
Circuito test per microprocessore ST62E10 programmi, poi digitate:
Impariamo a programmare i micro ST6
Lampada per cancellare Eprom C:\>A: poi premete il tasto Enter
Impariamo a programmare i micro ST6
Bus per testare i micro ST6 e vi apparir A:\>
Scheda test per Rel
Scheda test per display A questo punto potrete scrivere:

Facciamo presente che sono ancora reperibili pres- A:\>installa poi premete Enter
so la nostra Sede alcune centinaia di copie delle
riviste sopra elencate, quindi chi ne fosse sprovvi- Subito vi apparir sul monitor la richiesta su quale
sto e volesse avere la serie completa di articoli i- directory volete installare il contenuto del disco.
nerenti il microprocessore ST6, potr richieder- La directory da noi predefinita ST6, quindi se di-
cele fino al loro esaurimento. giterete Enter (vedi fig.11) il programma creer u-

Fig.10 A quanti desiderano se-


guire questo corso sugli ST6 con-
sigliamo di procurarsi il kit
LX.1170 che servir per trasferire
i programmi che abbiamo as-
semblato da .ASM in .HEX, pi il
BUS siglato LX.1202 completo
del suo alimentatore LX.1203.
Questo BUS LX.1202 servir,
prossimamente, per controllare
la scheda con un display LCD nu-
merico e la scheda con un display
LCD alfanumerico.
na directory con questo nome e copier nellHard-
Disk tutto il contenuto del dischetto scompattan-
do i files.

Se volete trasferire il contenuto su una diversa di-


rectory, ad esempio LX1202, quando sul monitor
vi apparir:

C:\ST6

dovrete cancellare il nome della directory prece-


dente, cio ST6 (vedi fig.11), scrivendo in sua so-
stituzione LX1202 come qui sotto riportato:

C:\LX1202 poi premete Enter Fig.11 Quando trasferite il programma dal


dischetto nellHard-Disk, se volete chiama-
re la directory ST6 in LX1202, quando vi ap-
Ricordatevi che qualsiasi nome di directory sce- pare questa riga sostituite C:\ST6 con la
glierete non dovrete mai superare gli 8 caratteri e scritta C:\LX1202 e poi premete Enter.
nemmeno utilizzare dei caratteri che il sistema o-
perativo DOS non accetta, quali ad esempio bar-
re, punto interrogativo, segno di uguale, ecc.
Se farete questo errore il DOS ve lo segnaler im-
mediatamente con la scritta ERROR su uno sfon-
do rosso.

Ad alcuni lettori che ci avevano segnalato di non


riuscire a trasferire il contenuto del dischetto
nellHard-Disk perch sul computer appariva subi-
to la scritta error o la mancanza di un file, abbia-
mo consigliato di creare prima una directory con
il nome ST6, poi di trasferire su questa tutto il con-
tenuto del dischetto e da ultimo di scompattare il
programma procedendo come segue: Fig.12 Immediatamente tutti i files com-
pattati si scompatteranno. Ricordatevi che
Quando sul monitor appare il prompt C:\> dovrete il programma occupa circa 1 MEGA di me-
scrivere: moria. Non premete nessun tasto durante
la fase di scompattazione.
C:\>MD ST6 poi premete Enter

In questo modo riapparir il prompt C:\> e a que-


sto punto dovrete inserire nel driver il disco che vi
abbiamo fornito con la sigla DF1170.3 o DF1202.3
(il contenuto dei due dischetti identico) e scrive-
re quanto segue:

C:\>COPY A: *.* C:\ST6 poi premere Enter

Nota = Rispettate gli spazi: per agevolarvi abbia-


mo colorato in azzurro le scritte che il computer
far apparire sul monitor, senza colore quelle che
dovrete scrivere voi inserendo come spaziatura un
Fig.13 Solo quando sul monitor apparir la
rettangolo in azzurro.
scritta BUON DIVERTIMENTO potrete pre-
mere un qualsiasi tasto per uscire. Per ri-
Terminato di copiare il contenuto del dischetto chiamare il programma dovrete scrivere
nellHard-disk, apparir nuovamente la scritta C:\>, C:\>ST6 poi C:\ST6>ST6 ed Enter.
ma non potrete ancora usare il programma ST6
perch non lavete ancora scompattato. I kit che vi serviranno per provare tutte le nostre
Per farlo dovrete scrivere: schede sperimentali sono i seguenti:

C:\>CD ST6 poi premete Enter LX.1170 = Questo kit, pubblicato nella rivista
N.172/173, serve per trasferire i programmi che ab-
Quando vi apparir C:\ST6>, scrivete: biamo assemblato e convertito da .ASM in .HEX
dallHard-disk del computer alla memoria di un ST6
C:\ST6>installa poi premete Enter vergine. Questo kit va collegato alla presa uscita
parallela del computer.
Non appena premerete il tasto Enter, sul monitor
vi apparir la scritta che questa directory esiste
LX.1202 = Questo kit, pubblicato nella rivista
gi, ma di ci non preoccupatevi e premete nuo-
N.179, serve per ricevere tutte le schede speri-
vamente Enter e quando vi sar chiesta la con-
mentali che abbiamo gi pubblicato e quelle che
ferma premete per una seconda volta il tasto En-
pubblicheremo in seguito. Questa scheda, che non
ter.
va collegata al computer, andr alimentata con il
kit LX.1203.
Subito vedrete sul monitor tutti i nomi dei files che,
abbastanza velocemente, si stanno scompattan-
do (vedi fig.12). LX.1203 = Questo kit, pubblicato nella rivista
N.179, serve per alimentare la scheda LX.1202 e
tutte le schede sperimentali che inserirete in que-
sta stessa scheda.

I PROGRAMMI LX.1204 = Questo kit, pubblicato nella rivista


N.179, provvisto di 4 display a sette segmenti ser-
Prima di trasferire tutti i files con lestensione .A- ve per realizzare dei cronometri-orologi-timer, ecc.
SM nella memoria di un micro ST6, li dovrete as- Questa scheda va inserita nei connettori presenti
semblare per ottenere un file in estensione .HEX nella scheda LX.1202.
Eseguita questa operazione, nel computer trove-
rete sempre due identici files, uno ASM ed uno LX.1205 = Questo kit, pubblicato nella rivista
HEX. N.179, provvisto di 4 rel serve per alimentare lam-
Se tenterete di trasferire dallHard-disk alla memo- pade-motorini o accendere qualsiasi apparecchia-
ria di un micro ST6 un file ASM, il computer se- tura elettronica. Questa scheda va inserita nei con-
gnaler errore con questa scritta in inglese: nettori presenti nella scheda LX.1202.

error cant open file


LX.1206 = Questo kit, pubblicato nella rivista
N.180, provvisto di 4 Triac serve per alimentare
oppure con: delle lampade - motorini o altre apparecchiature e-
lettroniche che funzionano con tensioni alternate.
enter name of source HEX file Questa scheda va inserita nei connettori presenti
nella scheda LX.1202.
Per sapere se il file richiesto risulta convertito nelle-
stensione HEX, potrete procedere come segue.
Quando sul monitor del computer apparir la fine-
stra dellEditor (vedi fig.1) premete i tasti ALT F,
poi F3 e quando sul monitor vi apparir la fascia CRONOMET.HEX
con la scritta:
Questo programma un semplice cronometro,
quindi per visualizzare i tempi occorre inserire nel
*.ASM
bus LX.1202 la sola scheda dei display siglata
LX.1204.
sostituitela con: Se nel bus inserirete le schede dei rel o dei triac,
non potrete renderle attive perch nel programma
*.HEX poi premete Enter non presente nessuna istruzione per gestirle.
Una volta caricato su un micro ST6 vergine il pro-
e, in questo modo, vi appariranno tutti i files in gramma CRONOMET.HEX ed inserito nello zoc-
.HEX. colo presente sulla scheda bus LX.1202, appena
alimenterete il circuito sui 4 display apparir il nu- Quindi basta cambiare il numero dopo la virgola
mero: in questi registri per modificare il numero visualiz-
zato.
00:00 Poich questo programma fa molto poco, vi consi-
gliamo di visualizzarlo solo sul monitor e di non me-
Premendo il pulsante P1 il micro comincer a con- morizzarlo su un ST6.
tare in avanti ad intervalli di tempo di un secondo,
quindi sui display vedrete apparire i numeri:

00:01 - 00:02 - 00:03 ecc.


OROLOGIO.HEX
Sui primi due display di sinistra vedrete i minuti e
sui display di destra i secondi. Questo programma un semplice orologio.
I due led che separano i display dei minuti e dei Per poter visualizzare le ore ed i minuti dovrete
secondi lampeggeranno con una cadenza di un se- inserire nel bus LX.1202 la sola scheda dei display
condo. siglata LX.1204.
Come noterete, quando si raggiunto un tempo di Se nel bus inserirete le schede dei rel o dei triac,
00:59 secondi, subito dopo si passer al tempo non potrete renderle attive, perch nel programma
successivo di 01:00, cio 1 minuto e 00 secondi. non presente nessuna istruzione per gestirle.
Il massimo numero che potrete visualizzare sar Una volta caricato su un micro ST6 vergine il pro-
quindi di 99 minuti e 59 secondi, dopodich ap- gramma OROLOGIO.HEX ed inserito nello zocco-
parir 00:00. lo presente nella scheda bus LX.1202, non appe-
Se in fase di conteggio premerete P1, il conteggio na alimenterete il circuito sui 4 display apparir il
si bloccher sul tempo raggiunto e premendolo numero:
nuovamente questo ripartir dal numero sul quale
si era fermato. 00:00
Se invece premerete il pulsante P2, il conteggio ri-
partir da zero, cio il tempo visualizzato si azze- I primi due display di sinistra segneranno le ore,
rer. mentre i due di destra i minuti.
I due diodi led che separano i due display lam-
peggeranno con una cadenza di 1 secondo.
Come noterete, raggiunte le ore 23 ed i 59 minu-
DISPLAY.HEX ti, dopo 1 minuto si passer alle 24 ore che ver-
ranno visualizzate con 00:00.
Questo programma serve solo per far capire come Per mettere a punto le ore dellorologio si utiliz-
si possa visualizzare il numero desiderato sui 4 zer il pulsante P2 e, per mettere a punto i minu-
display della scheda siglata LX.1204. ti, il pulsante P1.
Una volta caricato su un micro ST6 vergine il pro- Facciamo presente che potrete solo far avanzare
gramma DISPLAY.HEX ed inserito nello zoccolo i numeri e non indietreggiare.
presente sulla scheda bus LX.1202, non appena
alimenterete il circuito sui 4 display apparir il nu-
mero:

12:34 RELE.HEX

e nientaltro. Questo programma serve solo per far eccitare dei


Questo programma labbiamo composto soltanto rel o dei triac, quindi nella scheda bus LX.1202
per farvi capire come si deve scrivere una istru- potrete inserire la sola scheda dei Rel siglata
zione per gestire in modo seriale lintegrato M.5450. LX.1205 o la sola scheda dei Triac siglata
Le righe da utilizzare per cambiare questo nume- LX.1206.
ro sono quelle numerate dalla numero 159 alla nu- Se inserirete nel bus anche la scheda dei display
mero 162 del listato DISPLAY.ASM: siglata LX.1204 non potrete renderla attiva, perch
nel programma non presente nessuna istruzione
ldi bcd3,1 ; 159 accende 1 sul display 1 per gestirla.
ldi bcd4,2 ; 160 accende 2 sul display 2 Una volta caricato su un micro ST6 vergine il pro-
ldi bcd1,3 ; 161 accende 3 sul display 3 gramma RELE.HEX ed inserito nello zoccolo pre-
ldi bcd2,4 ;162 accende 4 sul display 4 sente sulla scheda bus LX.1202, non appena ali-
menterete il circuito tutti i rel risulteranno disec- plicemente scrivere 12 al posto di 3 come qui sot-
citati. to riportato:
Non appena premerete uno o pi dei pulsanti da
P1 a P4 si ecciter il rel o il triac corrispondente. ldi minuti,12 ; 240 carica 12 minuti
Premendolo una seconda volta, il rel o il triac si
disecciter. Se volete cambiare anche i secondi dovrete mo-
dificare il numero sulla riga 239 che attualmente
0:

TEMPOR.HEX ldi secondi,0 ; 239 carica 0 secondi

Questo programma un semplice temporizzato- Ammesso che ai 12 minuti gi presenti vogliate


re con conteggio allindietro. sommare 28 secondi, dovrete scrivere nella riga
Nel bus LX.1202 dovrete inserire, oltre alla sche- 239 il numero 28 come qui sotto riportato:
da display siglata LX.1204, anche la scheda Rel
siglata LX.1205, oppure la scheda Triac siglata ldi secondi,28 ; 239 carica 28 secondi
LX.1206.
Una volta caricato su un micro ST6 vergine il pro-
gramma TEMPOR.HEX ed inserito nello zoccolo Cos facendo il conteggio partir da 12:28 e quando
presente nella scheda bus LX.1202, non appena raggiunger lo 00:00 si ecciter il rel 1 o il triac 1.
alimenterete il circuito, tutti i rel o i triac risulte-
ranno diseccitati e sui 4 display vedrete apparire Nota = Anche se nella riga 241 troverete:
il numero:
ldi ore,0 ; 241 carica 0 ore
03:00
questo parametro ore non viene utilizzato, pertan-
che indica 03 minuti e 00 secondi. to questa istruzione non dovrete mai modificarla.
Immediatamente, partendo da questo numero, il
conteggio inizier a contare allindietro con una ca- Se in sostituzione del rel 1 volete eccitare un al-
denza di un secondo, quindi sui display vedrete i tro rel ad esempio il rel 2, o un corrispondente
numeri: triac, dovrete modificare la riga 262:

02:59 - 02:58 - 02:57 ecc. loop3 set 4,port_b ; 262 accende RL1

Quando apparir il numero 00:00, si ecciter il so- sostituendo dopo il set il numero 4 con il numero
lo rel 1 presente nella scheda LX.1205 oppure il 5 come qui sotto riportato:
solo triac 1 presente nella scheda LX.1206.
Per ricominciare il ciclo baster premere il pulsan- loop3 set 5,port_b ; 262 eccita RL2
te P1 presente sulla scheda bus LX.1202.
Tutti i pulsanti presenti sulla scheda del rel o del Se volete eccitare il rel RL3, dovrete sostituire il
triac non risultano attivati. numero 4 con il numero 6:

loop3 set 6,port_b ; 262 eccita RL3

PER cambiare i TEMPI Se volete eccitare il rel RL4 dovete sostituire il nu-
mero 4 con il numero 7:
Per cambiare il tempo da noi prefissato 03:00 ba-
ster modificare i valori impostati sulle righe 239 e loop3 set 7,port_b ; 262 eccita RL4
240 nel listato del programma TEMPOR.ASM.
Come tempo massimo potrete partire da 99 mi-
nuti e 59 secondi. Se volete eccitare contemporaneamente tutti e 4 i
Attualmente sulla riga 240 che la riga dei minu- rel, dovrete aggiungere tutte queste righe:
ti troverete riportato il numero 3:
loop3 set 4,port_b ; 262 eccita RL1
ldi minuti,3 ; 240 carica 3 minuti set 5,port_b ; 262.1 eccita RL2
set 6,port_b ; 262.2 eccita RL3
quindi se volete partire da 12 minuti baster sem- set 7,port_b ;262.3 eccita RL4
In pratica, se vi interessa eccitare i soli rel RL1, Attualmente sulla riga 248, che la riga dei se-
RL3 ed RL4 dovrete scrivere queste tre righe: condi, troverete riportato il numero 0:

loop3 set 4, port_b ; 262 eccita RL1 cpi a,0 ; 248 compara con zero
set 6, port_b ; 262.1 eccita RL3
set 7, port_b ; 262.2 eccita RL4
e nella riga 252, che quella dei minuti, trovere-
te riportato:
Vi ricordiamo che tutte le volte che modificherete
un programma, lo dovrete salvare digitando il ta-
cpi a,3 ; 252 compara con 3
sto F2, poi lo dovrete riassemblare premendo i ta-
sti ALT T, poi il tasto A, dopodich lo potrete tra-
sferire nella memoria di un ST6. Se volete ad esempio eccitare il rel RL1 dopo 15
secondi dallaccensione, baster inserire nella ri-
ga 248:

TIMER.HEX cpi a,15 ; 248 compara con 15 secondi

Questo programma un semplice temporizzato- ed inserire il numero 0 nella riga 252 dei minuti:
re con conteggio in avanti.
Nel bus LX.1202 dovrete inserire oltre alla scheda
cpi a,0 ; 252 compara con 0 minuti
display siglata LX.1204, anche la scheda rel si-
glata LX.1205, oppure la scheda triac siglata
LX.1206. Con queste modifiche, quando sul display apparir
Una volta caricato su un micro ST6 vergine il pro- il numero 00:15 il rel RL1 si ecciter.
gramma TIMER.HEX ed inserito nello zoccolo pre- Se volete far eccitare il rel dopo 30 minuti e
sente sulla scheda bus LX.1202, non appena ali- 5 secondi baster inserire il numero 5 nella ri-
menterete il circuito, tutti i rel o i triac risulteran- ga 248:
no diseccitati e sui 4 display vedrete apparire il
numero: cpi a,5 ; 248 compara con 5 secondi

00:00 ed inserire il numero 30 nella riga 252 dei minuti:

Immediatamente, partendo da questo numero, il cpi a,30 ; 252 compara con 30 minuti
conteggio inizier a contare in avanti con una ca-
denza di un secondo, quindi sui display vedrete i
numeri salire: Con queste modifiche, quando sul display apparir
il numero 30:05 il rel RL1 si ecciter.
00:01 - 00:02 - 00:03 ecc.
Nota = Anche se nella riga 256 troverete riportato:
e quando raggiungerete il numero 03:00, corri-
spondente a 3 minuti e 00 secondi, subito si ec- Idi ore,0 ; 256 carica 0 ore
citer il rel 1 presente nella scheda LX.1205 op-
pure il solo triac 1 presente nella scheda LX.1206.
questo parametro ore non viene utilizzato, per-
Per ricominciare il ciclo baster premere il pulsan-
tanto non dovrete mai modificare questa istru-
te P1 presente sulla scheda bus LX.1202.
zione.
Tutti i pulsanti presenti sulla scheda dei rel o dei
triac non risultano attivati.
Se in sostituzione del rel 1 volete eccitare un al-
tro rel, ad esempio il rel 2, o un corrispondente
triac, dovrete modificare la riga 259:
PER cambiare i TEMPI
loop3 set 4,port_b ; 259 eccita RL1

Per cambiare il tempo da noi prefissato 03:00 ba-


ster modificare i valori impostati sulle righe 248 e sostituendo dopo il set il numero 4 con il numero
252 nel listato del programma TEMPOR.ASM. 5 come qui sotto riportato:
Come tempo massimo potrete raggiungere i 99 mi-
nuti e 59 secondi. loop3 set 5,port_b ;259 eccita RL2
Se volete eccitare il rel RL3 dovrete sostituire il re delle coppie di triac, ecc., modificando sempli-
numero 4 con il numero 6: cemente il numero binario riportato nelle righe 74-
76-78-80-82-84-86-88 .
loop3 set 6,port_b ; 259 eccita RL3
Idi port_b,10000000b ; 74 eccita il triac TRC4
Per eccitare il rel RL4 dovrete sostituire il nume- Idi port_b,01000000b ; 76 eccita il triac TRC3
ro 4 con il numero 7: Idi port_b,00100000b ; 78 eccita il triac TRC2
Idi port_b,00010000b ; 80 eccita il triac TRC1
loop3 set 7,port_b ; 259 eccita RL4 Idi port_b,00100000b ; 82 eccita il triac TRC2
Idi port_b,01000000b ; 84 eccita il triac TRC3
Per eccitare contemporaneamente tutti e 4 i rel Idi port_b,10000000b ; 86 eccita il triac TRC4
dovrete aggiungere le seguenti righe: Idi port_b,00000000b ; 88 diseccita tutti i triac

loop3 set 4,port_b ; 259 eccita RL1 Come noterete, dopo la dicitura port_b ci sono ot-
set 5,port_b ; 259.1 eccita RL2 to numeri, ma quelli che dovrete modificare sono
set 6,port_b ; 259.2 eccita RL3 solo i primi quattro, cio 1000 - 0100 - 0010 - 0001.
set 7,port_b ; 259.3 eccita RL4 Se nella riga 88 sostituirete i quattro 0000 con 1111,
tutti i quattro triac si ecciteranno anzich disecci-
Se vi interessa eccitare i soli rel RL1, RL3 ed RL4, tarsi.
dovrete scrivere queste tre righe: Per far lampeggiare per una infinit di volte il so-
lo TRC4, dovrete scrivere in tutte le righe 74-76-
loop3 set 4,port_b ; 259 eccita RL1 78-80-82-84-86 solo 1000.
set 6,port_b ; 259.1 eccita RL3 Per accendere contemporaneamente TRC4-TRC3
set 7,port_b ; 259.2 eccita RL4 dovrete scrivere nelle righe 74-76 il numero 1100.

Vi ricordiamo che tutte le volte che modificherete


un programma, lo dovrete salvare premendo il ta-
sto F2, poi lo dovrete riassemblare premendo i ta- PER cambiare i TEMPI
sti ALT T, poi il tasto A, dopodich lo potrete tra-
sferire nella memoria di un ST6. Per modificare i tempi di intervallo tra laccensio-
ne di un triac e quella del successivo, occorre mo-
dificare la subroutine chiamata delay.
Anche se prima non le abbiamo riportate, tra una
TRIAC.HEX riga e laltra delle 74-76-78-80-82-84-86-88 trove-
rete una istruzione call delay che chiama una su-
Questo programma una dimostrazione di come broutine:
si possano eccitare in sequenza dei Triac o dei
Rel. Idi port_b,10000000b ; 74 eccita il triac TRC4
Nel bus LX.1202 dovrete inserire la sola scheda call delay ; 75 esegue ritardo
siglata LX.1206 o, in sua sostituzione, quella dei Idi port_b,01000000b ; 76 eccita il triac TRC4
rel siglata LX.1205.
Una volta caricato su un micro ST6 vergine il pro- questa subroutine la troverete nelle righe 59 - 60.
gramma TRIAC.HEX ed inserito nello zoccolo pre-
sente sulla scheda bus LX.1202, non appena ali- Idi x,255 ; 59 carica in x 255
menterete il circuito vedrete eccitarsi in sequen- del1 Idi y,255 ; 60 carica in y 255
za, con un intervallo di 1 secondo, i quattro triac
o i quattro rel se avrete inserito la scheda Il massimo ritardo che potete ottenere di circa 1
LX.1205. secondo, perch disponendo di registri X-Y ad 8
bit non potrete mettere un numero maggiore di
Nota = In questo programma i pulsanti P1-P2-P3- 255.
P4 presenti nella scheda dei triac o dei rel non ri- Volendo ridurre il ritardo, dovrete inserire dei nu-
sultano attivati, quindi anche se li premerete non meri minori, ad esempio per ottenere allincirca 1/2
accadr nulla. secondo dovrete caricare nella riga 59 il numero
127 come qui sotto riportato:
Questo programma pu essere modificato per ec-
citare i triac in senso inverso a quello indicato, mo- Idi x,127 ; 59 carica in x 127
dificando anche i tempi oppure facendo accende- del1 Idi y,255 ;60 carica in y 255
Se volete ottenere 1/4 di secondo dovrete cam- Facciamo presente che possibile soltanto far a-
biare le due righe come segue: vanzare i numeri e non indietreggiare.
Appena accenderete lorologio tutti i 4 rel o triac
Idi x,127 ; 59 carica in x 127 partiranno eccitati.
del1 Idi y,127 ; 60 carica in y 127 Se volete che allaccensione dellorologio tutti i rel
risultino diseccitati, dovrete andare alla riga N.59
dove troverete questa istruzione:
Se anzich ridurli li voleste aumentare, potrete
farlo utilizzando questo trucchetto. Idi port_b,11110011b
Tutte le istruzioni che trovate inserite tra le righe
delle istruzioni dal numero 74 alla 88 con la paro-
e modificarla inserendo in sostituzione degli 1 de-
la call delay, le dovrete scrivere due-tre-quattro
gli 0 come qui sotto riportato:
o pi volte, ad esempio:
Idi port_b,00000011b
Idi port_b,10000000b ; 74 eccita TRC4
call delay ; 75 esegue ritardo Nota = Anche se questa riga composta da 8 nu-
call delay ; raddoppia tempo meri, dovrete modificare solo i primi 4 di sinistra.
call delay ; triplica tempo
Idi port_b,01000000b ; 76 eccita TRC3 Se volete far eccitare allaccensione il solo rel
RL4, dovrete mettere un 1 in corrispondenza del-
Quindi inserendo pi o meno righe di call delay tra la prima cifra di sinistra come qui sotto riportato:
una riga e laltra potrete variare i tempi di eccita-
Idi port_b,10000011
zione tra un triac e laltro.
A questo punto vi spieghiamo che cosa sintende
per 8 cicli o periodi da utilizzare nellarco delle 24
ore che troverete riportati in queste righe:
CLOCK.HEX
1 periodo = righe 309 - 310 - 311
Questo programma CLOCK anche se funziona co- 2 periodo = righe 316 - 317 - 318
me orologio totalmente diverso dal precedente 3 periodo = righe 323 - 324 - 325
programma OROLOGIO, perch oltre a visualiz- 4 periodo = righe 330 - 331 - 332
zare le ore e i minuti permette di eccitare un rel 5 periodo = righe 337 - 338 - 339
o un triac ad unora prestabilita e di diseccitarlo 6 periodo = righe 344 - 345 - 346
dopo un tempo che voi stessi potrete prefissare mo- 7 periodo = righe 351 - 352 - 353
dificando alcune righe del programma. 8 periodo = righe 358 - 359 - 360
Per farlo funzionare occorre inserire nel bus
LX.1202 la scheda dei display siglata LX.1204 e Ogni ciclo composto da 3 righe distruzioni, quin-
quella dei rel siglata LX.1205, oppure quella dei di nel 1 ciclo o periodo del nostro programma tro-
triac siglata LX.1206. verete:
Prima di spiegarvi quali righe dovrete modificare,
.byte 02 ; 309 riga delle ore
consigliamo ai meno esperti di leggere attenta-
.byte 30 ; 310 riga dei minuti
mente tutto larticolo, dopodich potranno modifi-
.byte 11100000b ; 311 riga per comando rel
care i parametri nelle sole righe che noi indiche-
remo.
Come abbiamo accennato, il programma Attualmente il 1 ciclo inizia alle ore 2,30 di not-
CLOCK.HEX ci d la possibilit di eccitare o di- te.
seccitare uno o pi rel anche contemporanea- Per modificare lorario baster mettere nella prima
mente, su orari che noi stessi potremo stabilire, pur- riga lora che vi interessa, ad esempio 05-06-10, e
ch non si superino pi di 8 cicli o periodi nellar- nella seconda riga i relativi minuti, ad esempio 00
co delle 24 ore. - 10 - 30 - 50.
Questo programma potr servire per accendere o Nella terza riga sono riportati i rel che desiderate
spegnere una o pi caldaie, delle insegne lumino- eccitare e quelli che non desiderate eccitare allo-
se ad orari prestabiliti, ecc. rario da noi prestabilito.
Per mettere a punto le ore dellorologio si utiliz- Mettendo un 1 il rel si ecciter, mettendo uno 0
zer il pulsante P2 e per mettere a punto i minuti si disecciter.
il pulsante P1. Ci che dovrete modificare in questa terza riga so-
no solo i primi quattro numeri di sinistra posti do- Se alle 24,00 vorrete diseccitare anche questo
po la parola byte. rel, dovrete scrivere nelle righe 351 - 352 - 353
Tenete presente che il primo numero di sinistra pi- (7 ciclo) questi numeri:
loter il rel RL4 e lultimo numero di destra il rel
RL1, quindi avrete in ordine: .byte 00 ; 351 riga delle ore
.byte 00 ; 352 riga dei minuti
RL4-RL3-RL2-RL1 .byte 00000000b ; 353 riga per comando rel

Per farvi capire come modificare tutti questi nume- Avendo utilizzato solo 7 cicli degli 8 disponibili, se
ri vi faremo un semplice esempio. lultimo non vi interessa lo potrete cancellare op-
Ammesso che alle 06,10 desideriate eccitare i rel pure inibire, mettendo davanti alle righe 358 - 359
RL2-RL1, scriverete nelle righe 309 - 310 - 311 (1 - 360 un punto e virgola o mettendo sulla terza ri-
ciclo) questi numeri: ga 000000b.
Potrete aggiungere altri cicli se 8 risultassero in-
.byte 06 ; 309 riga delle ore sufficienti.
.byte 10 ; 310 riga dei minuti
.byte 00110000b ; 311 riga per comando rel Facciamo presente che questi cicli si ripeteranno
automaticamente allinfinito agli stessi orari tutti i
Se alle 09,30 vorrete diseccitare ed eccitare il so- giorni.
lo rel RL4, dovrete scrivere nelle righe 316 - 317
- 318 (2 ciclo) questi numeri:

.byte 09 ; 316 riga delle ore TIME90.HEX


.byte 30 ; 317 riga dei minuti
.byte 10000000b ; 318 riga per comando rel Questo programma un timer che, contando in a-
vanti, ecciter un rel o un triac quando raggiun-
Se alle 12,00 vorrete diseccitare anche il rel RL4, ger i minuti e i secondi da noi prefissati.
dovrete scrivere nelle righe 323 -324 -325 (3 ci- Per farlo funzionare occorre inserire nel bus
clo) questi numeri: LX.1202 la scheda dei display siglata LX.1204 e
quella dei rel siglata LX.1205, oppure quella dei
.byte 12 ; 323 riga delle ore triac siglata LX.1206.
.byte 00 ; 324 riga dei minuti Non appena alimenterete il circuito, il conteggio
.byte 00000000b ; 325 riga per comando rel partir da 00:00 e inizier a contare in avanti; a
questo punto potrete utilizzare i pulsanti P1 e P2
Se alle 18,45 vorrete eccitare tutti i rel, dovrete presenti sulla scheda display LX.1204.
scrivere nelle righe 330 - 331 - 332 (4 ciclo) que-
sti numeri: Premendo P1 il conteggio si ferma.
Premendo nuovamente P1 il conteggio riparte dal
.byte 18 ; 330 riga delle ore numero sul quale si era fermato.
.byte 45 ; 331 riga dei minuti Premendo P2 il contatore si resetta.
.byte 11110000b ; 332 riga per comando rel Premendo P1 il contatore riparte da 00:00.

Se alle 22,30 vorrete diseccitare i rel RL4-RL3, Nota = Il pulsante P2 di reset sar attivo solamente
dovrete scrivere nelle righe 337 - 338- 339 (5 ci- se avrete fermato il conteggio con P1. Se preme-
clo) questi numeri: rete P2 mentre attivo il conteggio, questo non si
azzerer.
.byte 22 ; 337 riga delle ore I pulsanti presenti sulle schede Triac e Rel non ri-
.byte 30 ; 338 riga dei minuti sultano attivati.
.byte 00110000b ; 339 riga per comando rel Il conteggio del display arriva ad un massimo di 89
minuti e 59 secondi.
Se alle 23,40 vorrete lasciare eccitato il solo rel
RL1, dovrete scrivere nelle righe 344 - 345 - 346 Il programma TIME90.ASM, come potrete notare,
(6 ciclo) questi numeri: dispone di 4 cicli perch quattro sono i rel e i
triac presenti sulle schede sperimentali.
.byte 23 ; 344 riga delle ore
.byte 40 ; 345 riga dei minuti 1 ciclo = Dopo 20 secondi dallaccensione si ec-
.byte 00010000b ;346 riga per comando rel citer il solo rel RL1.
Ovviamente sui display vedrete apparire 19 e, Nelle righe 292/293 - 298/299 - 304/305 - 310/311
quando questo numero raggiunger 00:00, il rel sono riportate le sigle dei rel che volete eccitare
si ecciter. e di quelli che volete rimangano diseccitati.
Guardando lesempio riportato nel programma
2 ciclo = Passando al secondo ciclo, questo rel CLOCK.ASM saprete gi che scrivendo questa i-
rimarr eccitato per un tempo da noi prefissato in struzione:
1 minuto e 30 secondi e raggiunto questo tempo
il rel RL1 si disecciter e automaticamente si ec- Idi port_b,11110011b
citer il rel RL2.
Il rel RL2 si ecciter un secondo dopo che sui di- potrete eccitare ad ogni ciclo anche pi rel a vo-
splay sar apparso il numero 01:29 che cambier stra scelta.
in 00:00. Nei primi quattro numeri di sinistra (vedi 1111) do-
vrete mettere un 1 sul rel che volete far eccitare
3 ciclo = Dopo 47 secondi, cio quando sul di- ed uno 0 se non lo volete eccitare.
splay il numero 46 passer sullo 00, il rel RL2 si
disecciter e si ecciter il terzo rel RL3.

4 ciclo = Il conteggio continuer ed allo scoccare


dei 3 minuti e 00 secondi (tempo da noi prefis- TEMP90.HEX
sato) si disecciter il rel RL3 e si ecciter il rel
RL4, cio si ritorner al 1 ciclo per ripetere allin- Questo programma un timer che fa esattamen-
finito i quattro cicli. te linverso del programma TIME90, cio conta
allindietro e quando raggiunge lo 00:00 eccita i
Per variare i tempi che noi abbiamo prefissato do- rel.
vrete variare queste righe: I rel, come per il programma precedente, li ecci-
terete in 4 cicli e come tempo massimo di par-
1 ciclo = righe 289 - 290 tenza potrete impostare 90 minuti e 00 secondi.
2 ciclo = righe 295 - 296 Non appena alimenterete il circuito, il conteggio
3 ciclo = righe 301 - 302 partir da 00:20 (questo tempo lo abbiamo pre-
4 ciclo = righe 307 - 308 scelto noi, ma poi vi spiegheremo come modificar-
lo) e proceder allindietro.
Se volete che il 1 ciclo abbia una durata di 1 mi- Dopo che avr avuto inizio il conteggio, potrete u-
nuto e 30 secondi, dovrete inserire nelle sue ri- tilizzare i pulsanti P1 e P2 presenti sulla scheda di-
ghe questi numeri: splay LX.1204.

Idi stsex,30 ; 289 secondi per RL1


Premendo P1 il conteggio si ferma.
Idi stmix,1 ; 290 minuti per RL1
Premendo nuovamente P1 il conteggio riparte dal
numero sul quale si era fermato.
Se volete che il 2 ciclo abbia una durata di 50 se- Premendo P2 il contatore si resetta.
condi, dovrete inserire nelle sue righe questi numeri: Premendo P1 il contatore riparte dal tempo che a-
Idi stsex,50 ; 295 secondi per RL1
vete impostato come partenza per il conteggio
Idi stmix,00 ; 296 minuti per RL1
allindietro.

Se volete che il 3 ciclo abbia una durata di 15 mi- Nota = Il pulsante P2 di reset sar attivo solamente
nuti e 20 secondi, dovrete inserire nelle sue righe se avrete fermato il conteggio con P1. Se preme-
questi numeri: rete P2 mentre attivo il conteggio, questo non si
azzerer. Premendo P2 per resettarlo, intuitivo
Idi stsex,20 ; 301 secondi per RL1 che contando allindietro sul display ritorni il tem-
Idi stmix,15 ; 302 minuti per RL1 po di partenza, cio 00:20.

Se volete che il 4 ciclo abbia una durata di 2 mi- Nei 4 cicli impostati otterrete queste condizioni:
nuti e 10 secondi, dovrete inserire nelle sue righe
questi numeri: 1 ciclo = Allaccensione si ecciter il solo rel RL1
e sui display apparir 00:20 e a questo punto avr
Idi stsex,10 ; 307 secondi per RL1 inizio il conteggio alla rovescia che si fermer sul-
Idi stmix,2 ;308 minuti per RL1 lo 00:00.
2 ciclo = Dopo un secondo si ecciter il rel RL2 sono riportate le sigle dei rel che si ecciteranno
e a questo punto inizier il secondo ciclo, che far e di quelli che si disecciteranno.
apparire sui display 01:30 (tempo 1 minuto e 30 Anche in questo programma possiamo sostituire le
secondi) che, secondo per secondo, decremen- righe sopra menzionate con questa sola riga di-
ter fino ad arrivare a 00:00. struzione:

3 ciclo = A questo punto si ecciter il rel RL3 e Idi port_b,11110011b


sui display apparir 00:47 che decrementer fino
ad arrivare allo 00:00. Nei primi quattro numeri di sinistra (vedi 1111) do-
ve metterete 1 il rel si ecciter, dove metterete 0
si disecciter.
4 ciclo = Lultimo ciclo far eccitare il rel RL4 e
far apparire sui display il numero 03:00 (3 minu-
ti). Quando con il conteggio alla rovescia si arri- NOTA
ver al numero 00:00, questo rel si disecciter e
contemporaneamente si disecciter il rel RL1, I programmi che vi abbiamo fornito e che in segui-
cio si ritorner al 1 ciclo per ripetere allinfinito i to vi forniremo sono a sfondo didattico e servono
quattro cicli. per far capire ai principianti come si debba scrive-
re unistruzione per ottenere una specifica funzio-
Per variare i tempi prefissati dovrete variare que- ne e per questo abbiamo aggiunto, di fianco ad o-
ste righe: gni riga di programma, un commento.
Blocchi di un programma si possono prelevare e
1 ciclo = righe 290 - 291 trasferire su un altro programma, cosa che potrete
2 ciclo = righe 296 - 297 fare quando avrete gi acquisito una certa espe-
3 ciclo = righe 302 - 303 rienza.
4 ciclo = righe 308 - 309

Se volete che il 1 ciclo abbia una durata di 1 mi-


nuto e 30 secondi, dovrete inserire nelle sue ri-
ghe questi numeri:

Idi stsex,30 ; 290 secondi per RL1


Idi stmix,1 ; 291 minuti per RL1

Se volete che il 2 ciclo abbia una durata di 50 se-


condi, dovrete inserire nelle sue righe questi nu-
meri:

Idi stsex,50 ; 296 secondi per RL1


Idi stmix,00 ; 297 minuti per RL1
COSTO DI REALIZZAZIONE

Tutti i componenti necessari per la realizzazione di


questa scheda, compresi circuito stampato, con-
Se volete che il 3 ciclo abbia una durata di 15 mi-
nettore, triac da 500 Volt 5 Amper, fotoaccopiato-
nuti e 20 secondi, dovrete inserire nelle sue righe
ri, zoccoli, pulsanti, morsettiere, condensatori e re-
questi numeri:
sistenze (vedi fig.8) ................................... 18,60
Idi stsex,20 ; 302 secondi per RL1
Il solo circuito stampato LX.1206 ................ 4,91
Idi stmix,15 ; 303 minuti per RL1

Nota = Nel kit non incluso il dischetto dei pro-


Se volete che il 4 ciclo abbia una durata di 2 mi- grammi DF1202.3 perch gi fornito agli acquiren-
nuti e 10 secondi, dovrete inserire nelle sue righe ti del kit LX.1202.
questi numeri: A chi non avesse acquistato questo kit e volesse il
solo dischetto dei programmi, possiamo inviarlo a
Idi stsex,10 ; 308 secondi per RL1 6,20 pi le spese postali.
Idi stmix,2 ; 309 minuti per RL1
Ai prezzi riportati, gi comprensivi di IVA, andranno
Nelle righe 292/293 - 298/299 - 304/305 - 310/311 aggiunte le sole spese di spedizione a domicilio.
Chiss quanti di voi essendo in possesso di un di- - il piedino 23 dellEnable lo dovremo collegare a
splay LCD avranno tentato di far apparire un nu- massa.
mero senza riuscirci, pur avendolo alimentato cor- - il piedino 22 del Data serve per ricevere i dati se-
rettamente, collegato i vari segmenti e controllato riali necessari per far accendere i vari segmenti.
pi volte il montaggio per verificare di non aver - il piedino 21 del Clock serve per ricevere un tre-
commesso involontariamente qualche errore. no di onde quadre per sincronizzare i segnali.
Il motivo per il quale non siete riusciti ad accen- I due piedini supplementari duscita corrispondenti
derlo ve lo spiegheremo in questo articolo, quindi ai bit 33-34 potrebbero risultare utili per far lam-
ammesso che non vi interessi sapere come si pro- peggiare ad una cadenza di 1 secondo due diodi
grammi un microprocessore ST6 per pilotare un di- led interposti tra i due numeri delle ore e dei mi-
splay LCD, vi consigliamo ugualmente di leggerlo. nuti, se realizzeremo un orologio.
I piedini duscita di questo integrato, come visibi-
le in fig.1, vengono indicati BIT1 - BIT2 - BIT3,
GESTIRE un DISPLAY a 7 SEGMENTI ecc.
Quando tutti i segmenti dei display sono spenti,
Se volessimo pilotare 4 display a 7 segmenti con nel piedino del clock entrer un treno di onde qua-
un integrato driver, questo dovrebbe avere come dre e nel piedino data il solo impulso di Start (bit

SCHEDA con DISPLAY


Dopo avervi presentato una scheda per eccitare dei rel, una per pilo-
tare dei triac e una terza per pilotare dei normali display a 7 segmenti,
oggi vogliamo proporvi una scheda per display numerici LCD dopodi-
ch passeremo ai display alfanumerici.

minimo 32 piedini duscita, infatti oltre ai 7 seg- 0) e due impulsi, uno di Load (bit 35) ed uno di Re-
menti presenti su ogni display per un totale di 4 x set (bit 36)(vedi fig.2).
7 = 28 terminali, essendo presente su ognuno di A questo punto potremo assegnare ciascuno di
questi il punto decimale, dovremo aggiungere al- questi 34 bit ad un singolo segmento presente in
tri 4 terminali e, in tal modo, otterremo un totale di ogni display come visibile in fig.2 e come riportato
32 piedini. nella Tabella N.1).
Come gi saprete, per accendere uno o pi seg-
Se in questi 4 display volessimo accendere il nu-
menti baster alimentarli con una tensione che po-
mero 1 0 3 2 tramite il programma software, do-
tremo prelevare da una normale pila.
vremmo portare a livello logico 1 tutti i bit corri-
Per pilotare 4 display esistono degli integrati prov-
spondenti ai segmenti che desideriamo accendere.
visti di 34 piedini duscita necessari per accende-
re tutti i vari segmenti. Sul display N.1, dovendo accendere i segmenti B-
Per lingresso troviamo invece solo 3 piedini per- C, dovremo portare a livello logico 1 i bit 2-3.
ch questi lavorano in modo seriale. Sul display N.2, dovendo accendere i segmenti A-
Questi 3 piedini dingresso sono chiamati: B-C-D-E-F, dovremo portare a livello logico 1 i bit
9-10-11-12-13-14.
Enable Sul display N.3, dovendo accendere i segmenti A-
Data B-C-D-G, dovremo portare a livello logico 1 i bit
Clock 17-18-19-20-23.
Sul display N.4, dovendo accendere i segmenti A-
Nellintegrato driver tipo M.5450 in grado di pilo- B-G-E-D, dovremo portare a livello logico 1 i bit
tare 4 display a 7 segmenti: 25-26-31-29-28 (vedi fig.3).
LCD pilotata con un ST6
TABELLA N.1
BIT segmento piedino BIT segmento piedino
comando DISPLAY 1 INTEGRATO comando DISPLAY 3 INTEGRATO
1 A 18 17 A 2
2 B 17 18 B 40
3 C 16 19 C 39
4 D 15 20 D 38
5 E 14 21 E 37
6 F 13 22 F 36
7 G 12 23 G 35
8 punto 11 24 punto 34

BIT segmento piedino BIT segmento piedino


comando DISPLAY 2 INTEGRATO comando DISPLAY 4 INTEGRATO
9 A 10 25 A 33
10 B 9 26 B 32
11 C 8 27 C 31
12 D 7 28 D 30
13 E 6 29 E 29
14 F 5 30 F 28
15 G 4 31 G 27
16 punto 3 32 punto 26

BIT diodi piedino


Per accendere un numero su un normale di- comando LED INTEGRATO
splay a 7 segmenti sufficiente portare a li-
vello logico 1 i bit che pilotano i segmenti in- 33 led 1 24
teressati (vedi figg.2-3). 34 led 2 25
Come avrete intuito, basta portare a livello logico Questi due punti vengono spesso utilizzati negli o-
1 uno di questi 34 bit per far apparire un numero rologi per dividere le ore dai minuti.
oppure anche una lettera, ad esempio una L, una A differenza del drive M.5450, utilizzato per pilo-
C o una H. tare i display a 7 segmenti, che dispone di tre in-
Tramite software, il display 1 potremo farlo diven- gressi chiamati Enable-Data-Clock, il drive
tare il 4 oppure il 3 in modo da adattarlo al dise- M.8438/AB6, utilizzato per i display LCD, dispone
gno del circuito stampato. di tre ingressi chiamati:
Un altro particolare molto importante da sottoli-
neare quello di non confondere il livello logico Strobe
del bit con il livello logico che in pratica ci ritrovere- Data
mo sul piedino duscita dellintegrato che, come Clock
potrete constatare, risulta invertito, quindi portan-
do ad esempio i bit 25-26 a livello logico 1, sui cor- - Il piedino 2 dello Strobe si porta a livello logico
rispondenti piedini 33-32 dellintegrato M.5450 (ve- 1 ogni volta che deve inviare al display il treno dei
di Tabella N.1) ci ritroveremo un livello logico 0. dati.
Quindi se qualcuno andasse a controllare con un - Il piedino 34 del Data serve per ricevere i dati se-
tester la tensione presente sui piedini duscita che riali necessari per far accendere i vari segmenti.
accendono un segmento, troverebbe 0 volt e non - Il piedino 40 del Clock invia un treno di onde qua-
una tensione positiva. dre per sincronizzare i segnali (vedi fig.5).

Come potrete notare, il drive per un display LCD


GESTIRE un DISPLAY LCD ha lingresso Strobe che mancava nel drive per di-
splay a 7 segmenti a led ed ha in pi un piedino
Come gi spiegato, se volessimo pilotare un di- chiamato Back/Plane (piedino 30) che viene uti-
splay a led con 4 cifre con un integrato driver, lizzato per alimentare il display con unonda qua-
questo dovrebbe avere 34 piedini duscita. dra di circa 80 Hertz.
Per quanto riguarda i display LCD dobbiamo far Quindi i quattro display LCD non vengono alimen-
presente che il punto decimale che dovrebbe ri- tati da una tensione continua, ma da una tensio-
sultare presente sul 4 display spesso viene so- ne che cambia in continuit il suo livello logico da
stituito da due punti posti tra le prime due e le ul- 1 a 0 e questo, come vedremo, indispensabile
time due cifre. per poter accendere i vari segmenti.

Vcc

1
USCITE PER DISPLAY 34
GND 1 40 BIT 18 = B1
20 BIT 17 = A1 2 39 BIT 19 = C1
BIT 16 = DP4 3 38 BIT 20 = D1
BIT 15 = G4 4 37 BIT 21 = E1
LUMIN. 19 BIT 14 = F4 5 36 BIT 22 = F1
34 OUTPUT BUFFER BIT 13 = E4 6 35 BIT 23 = G1
BIT 12 = D4 7 34 BIT 24 = DP1
BIT 11 = C4 8 33 BIT 25 = A2
BIT 10 = B4 9 32 BIT 26 = B2
BIT 9 = A4 10 31 BIT 27 = C2
LOAD
34 LATCHES BIT 8 = DP3 11 30 BIT 28 = D2
BIT 7 = G3 12 29 BIT 29 = E2
ENABLE 23 BIT 6 = F3 13 28 BIT 30 = F2
BIT 5 = E3 14 27 BIT 31 = G2
DATA 22 BIT 4 = D3 15 26 BIT 32 = DP2
34 BIT SHIFT REGISTER BIT 3 = C3 16 25 BIT 33 = DL1
BIT 2 = B3 17 24 BIT 34 = DL2
BIT 1 = A3 18 23 ENABLE
CLOCK 21
LUMIN. 19 22 DATA
RESET + Vcc 20 21 CLOCK
1

M 5450

Fig.1 Per pilotare 4 display a 7 segmenti occorre un integrato drive tipo M.5450 o altri equiva-
lenti. Dei tre piedini dingresso, quello indicato Enable viene collegato a massa, e quelli indica-
ti Data e Clock vengono utilizzati per ricevere i dati seriali e i segnali di sincronismo.
DISPLAY 1 DISPLAY 2 DISPLAY 3 DISPLAY 4 LED
a a a a

f g b f g b f g b f g b

e c e c e c e c
d d d d
dp dp dp dp

CLOCK
PIN 21

START 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 RESET
DATA
PIN 22
LOAD

BIT

Fig.2 Poich per ogni display sono necessari 8 bit (uno serve per il punto decimale - ve-
di Tabella N.1), lintegrato drive M.5450 convertir i dati seriali applicati sugli ingressi in
dati paralleli a 34 bit. Oltre a questi 34 bit lintegrato invia in uscita un bit di Start, uno di
Load (carica dati) ed uno di Reset.

DISPLAY 1 DISPLAY 2 DISPLAY 3 DISPLAY 4 LED


a a a a

f g b f g b f g b f g b

e c e c e c e c
d d d d
dp dp dp dp

CLOCK
PIN 21

START 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 RESET
DATA
PIN 22
LOAD

BIT

Fig.3 Per accendere il numero 1032, sul primo display dovremo portare a livello logico
1 i bit 2-3, sul secondo display i bit 9-10-11-12-13-14, sul terzo display i bit 17-18-19-20-23
e sullultimo display i bit 25-26-28-29-31. Non confondete il livello logico del bit con quel-
lo che apparir sul piedino duscita che risulta invertito.

Fig.4 Per pilotare un display LCD


dovremo sempre portare a livel-
lo logico 1 i bit dei segmenti che
vogliamo accendere, ma come
potete vedere in fig.7 i segmenti
che rimangono spenti non ven-
gono portati a livello logico 0.
I piedini duscita di questo integrato, come visibile Sul display N.1, dovendo accendere i segmenti B-
in fig.5, indicati A1 - B1 - C1, ecc., andranno col- C, dovremo portare a livello logico 1 i bit 2-3.
legati ad ogni singolo segmento presente in cia- Sul display N.2, dovendo accendere i segmenti A-
scun display (vedi fig.6 e Tabella N.2). B-C-D-E-F, dovremo portare a livello logico 1 i bit
9-10-11-12-13-14.
Sul display N.3, dovendo accendere i segmenti A-
B-C-D-G, dovremo portare a livello logico 1 i bit
TABELLA N.2 17-18-19-20-23.
Sul display N.4, dovendo accendere i segmenti A-
BIT segmento piedino B-G-E-D, dovremo portare a livello logico 1 i bit
comando DISPLAY 1 INTEGRATO 25-26-31-29-28.
1 A 10
2 B 9 A questo punto si potrebbe pensare che un drive
3 C 8 per pilotare un display a 7 segmenti possa servi-
4 D 7 re anche per pilotare un display LCD, ma purtrop-
5 E 6 po questo non possibile perch i suoi segmenti
6 F 5 non vengono pilotati da una tensione continua,
7 G 4 ma da un treno di onde quadre che lo stesso in-
8 punto 11 tegrato M.8438/AB6 invia al segmento da accen-
dere, sfasandolo di 180 rispetto alle onde quadre
BIT segmento piedino che giungono sui segmenti che debbono rimanere
comando DISPLAY 2 INTEGRATO spenti.
9 A 18
10 B 17 Quindi se controllassimo con un oscilloscopio tutti
11 C 16 i 32 piedini duscita di questo integrato, troverem-
12 D 15 mo in tutti delle onde quadre, perci potrebbe ri-
13 E 14 sultare alquanto complesso capire come si riesca-
14 F 13 no ad accendere questi segmenti.
15 G 12
16 punto 19 Per spiegarvelo in modo che possiate compren-
derlo perfettamente vi proponiamo questo sempli-
BIT segmento piedino
ce esempio.
comando DISPLAY 3 INTEGRATO
Ammesso di voler accendere in un display i seg-
17 A 26 menti B-C in modo da far apparire il numero 1, in
18 B 25 questi due soli segmenti giungeranno delle onde
19 C 24 quadre invertite rispetto alle onde quadre che giun-
20 D 23 gono invece sul Back/Plane (vedi fig.7).
21 E 22 Di questa inversione del segnale ad onda quadra
22 F 21 non dovremo preoccuparci, perch sar lintegrato
23 G 20
M.8438/AB6 che provveder ad invertirlo quando,
24 punto 27
tramite software, gli diremo di accendere i segmenti
BIT segmento piedino B-C.
comando DISPLAY 4 INTEGRATO
Il software per i display LCD in pratica molto si-
25 A 39 milare a quello per i display a 7 segmenti, sempre
26 B 38
che si rispettino le connessioni duscita dellinte-
27 C 37
grato M.8438/AB6 con i piedini che fanno capo ai
28 D 33
segmenti dei quattro display (vedi Tabelle N.1 e
29 E 32
30 F 29 N.2).
31 G 28
32 punto 3 Nelle connessioni del display tipo S.5126 oppu-
re LC.513040 riportate in fig.8, abbiamo indica-
to con A1-B1-C1, ecc., tutti i segmenti del di-
Anche in un display LCD se volessimo accende- splay N.1, con A2-B2-C2, ecc., tutti i segmenti
re i numeri 1 0 3 2 tramite il programma softwa- del display N.2 e cos dicasi per il display N.3 e
re, dovremmo portare a livello logico 1 tutti i seg- N.4.
menti che desideriamo accendere. Se abbiamo un display con una sigla diversa, do-
LCD

Vcc 1 40 CLOCK
40 STROBE 2 39 BIT 25 = A4
BIT 32 = DP4 3 38 BIT 26 = B4
BACK/ P

BIT 7 = G1 4 37 BIT 27 = C4
1 32 BIT 6 = F1 5 36 GND
Vcc BIT 5 = E1 6 35 D OUT
BIT 4 = D1 7 34 DATA
BIT 3 = C1 8 33 BIT 28 = D4
BIT 2 = B1 9 32 BIT 29 = E4
BIT 1 = A1 10 31 OSC.
31 BIT 8 = DP1 11 30 BACK/P
LCD 1 BIT 15 = G2
OSCIL.
32 OUTPUT BUFFER 12 29 BIT 30 = F4
BIT 14 = F2 13 28 BIT 31 = G4
BIT 13 = E2 14 27 BIT 24 = DP3
BIT 12 = D2 15 26 BIT 17 = A3
BIT 11 = C2 16 25 BIT 18 = B3
32 LATCHES BIT 10 = B2 17 24 BIT 19 = C3
BIT 9 = A2 18 23 BIT 20 = D3
STROBE 2 BIT 16 = DP2 19 22 BIT 21 = E3
BIT 23 = G3 20 21 BIT 22 = F3
DATA 34
32 BIT SHIFT REGISTER
M 8438
CLOCK 40

36

Fig.5 Per pilotare 4 display LCD occorre un integrato drive tipo M.8438 o altri equivalen-
ti. Dei tre piedini dingresso, quello indicato Strobe si porta a livello logico 1 quando de-
ve caricare i dati, quelli indicati Data e Clock vengono utilizzati per ricevere i dati seriali
e i segnali di sincronismo. Il display LCD viene alimentato direttamente dallintegrato
M.8438 tramite il piedino Back/Plane.

DISPLAY 1 DISPLAY 2 DISPLAY 3 DISPLAY 4


a a a a

f g b f g b f g b f g b

e c e c e c e c
d d d d
dp 1 dp 2 dp 3 dp 4

STROBE
PIN 2

CLOCK
PIN 40

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
DATA
PIN 34

BIT

Fig.6 Ogni bit corrisponde ad un singolo segmento di ogni display (vedi Tabella N.2) e
per agevolarvi abbiamo riportato su ogni piedino dellintegrato M.8438 (vedi fig.5) sia il
numero del bit sia quale segmento si accender sui display 1-2-3-4.
vremo controllare a quali piedini fanno capo i seg-
menti A-B-C-D-E-F-G del primo, del secondo, del
terzo e del quarto display, per collegarli in ordine
BACK / PLANE
ai piedini duscita dellintegrato drive.

SCHEMA ELETTRICO
A SPENTO
Dopo avervi spiegato la differenza che esiste tra
un display a 7 segmenti a led ed uno a LCD pos-
siamo passare a presentarvi lo schema elettrico. B ACCESO
Guardando la fig.9 possibile notare che dal con-
nettore siglato CONN. 1/2 preleviamo:
C ACCESO

- dal piedino B0 i dati da inviare al piedino 34 dellin-


tegrato M.8438/AB6. D SPENTO
- dal piedino B1 il segnale del Clock da inviare al
piedino 40 di IC1.
- dal piedino C4 il segnale di Strobe da inviare al E SPENTO

piedino 2 di IC1.
- dal piedino +5V la tensione di alimentazione per F SPENTO
lintegrato.

Gli altri due piedini B2-B3 sono collegati ai pulsanti G SPENTO

P1-P2 che ci servono, realizzando un orologio, per


mettere a punto le ore e i minuti.
Poich lintegrato M.8438/AB6 ha bisogno del se- Fig.7 Per accendere un segmento in un di-
gnale di Strobe, dovremo necessariamente utiliz- splay LCD lintegrato IC1 invier sul piedi-
zare dei microprocessori ST6 con 28 piedini, cio: no corrispondente unonda quadra sfasata
di 180 rispetto a quella del Back/Plane.
ST62E25 (da 4K cancellabile) In questo esempio risultano accesi i soli
ST62T25 (da 4K non cancellabile) segmenti B-C.
ST62T15 (da 2K non cancellabile)

BACK/P F1 B1 F2 B2 G3 A3 G4 A4
G1 A1 G2 A2 DP4 F3 B3 F4 LC 513040 o S 5126
LC 513040 o S 5126
1 2 3 4

A
RIF. DP4

F B
DP1 DP2 DP3 G

E C

E1 C1 E2 C2 E3 C3 E4 C4
BACK/P D1 DP1 D2 DP2 D3 DP3 D4 B4 D DP

Fig.8 Connessioni del display LCD. Su ogni terminale abbiamo riportato la lettera dei set-
te segmenti A-B-C ecc. seguita dai numeri del display cio 1-2-3-4. La tacca di riferimen-
to costituita da una goccia di vetro o dal segno > posto da un lato del corpo.
LCD

40
BACK / PLANE

35 34 7 6 5 36 37 8 30 29 11 10 9 31 32 12 25 24 15 14 13 26 27 16 21 20 19 18 17 22 23 28

A B C D E F G DP1 A B C D E F G DP2 A B C D E F G DP3 A B C D E F G DP4

10 8 6 4 11 18 16 14 12 19 26 24 22 20 27 39 37 32 28 3 OSCILLATORE
30 9 7 5 17 15 13 25 23 21 38 33 29 31
1
IC1 C2
C1
36 34 40 2
STROBE
CLOCK
DATA

R1 R2

C3 P1 C4 P2

CONN. 1 / 2
A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C4 C5 C6 C7 NMI + 5 V. GND + 12 V.

Il motivo per il quale si obbligati ad utilizzare dei


micro ST6 a 28 piedini dovuto al fatto che ci ser-
ve la porta C4 per il segnale di Strobe.
Fig.9 Schema elettrico da noi utilizzato per A questo punto qualcuno ci potr far osservare che
pilotare un display LCD. il segnale di Strobe potevamo benissimo prelevarlo
da una bit libero della porta A oppure B e, in tal
modo, potevamo ancora utilizzare un micro ST6
con soli 20 piedini.
ELENCO COMPONENTI LX.1207 Purtroppo nel bus siglato LX.1202 (vedi rivista
N.179) se oltre alla scheda di questo display vo-
R1 = 10.000 ohm 1/4 watt lessimo inserire anche la scheda LX.1205 che pi-
R2 = 10.000 ohm 1/4 watt lota dei rel, oppure la scheda LX.1206 che pilota
C1 = 100.000 pF poliestere dei triac, constateremmo che tutti i bit delle porte
C2 = 22 pF ceramico A-B risultano occupati.
C3 = 100.000 pF poliestere Poich in questa scheda utilizziamo anche la por-
C4 = 100.000 pF poliestere ta C, il programma che vi forniremo per questo di-
IC1 = M.8438-AB6 o M.8438-B6 splay LCD sar completamente diverso rispetto al
LCD = display LCD tipo S.5126 software che vi avevamo gi fornito per la scheda
CONN.1/2 = connettore 24 poli display LX.1204 e questo potr risultarvi molto uti-
CONN. = 2 connettori 4 poli
le perch, confrontando i due programmi, potrete
P1 = pulsante
notare le differenze.
P2 = pulsante
Comunque questo programma per display LCD
svolger le stesse funzioni che svolge tuttora il pro-
gramma per il display a 7 segmenti.
Fig.10 Scheda vista
dal lato del display.

Fig.11 Circuito stam-


pato visto dal lato
dellintegrato.

Ritornando al nostro schema elettrico, non dovre- REALIZZAZIONE PRATICA


te preoccuparvi delle connessioni dellintegrato IC1
con il display LCD, perch queste vengono auto- Realizzare questa scheda per display LCD che ab-
maticamente effettuate tramite le piste in rame pre- biamo siglato LX.1207 molto semplice.
senti sul circuito stampato. Nel circuito stampato a doppia faccia con fori me-
In questo schema di critico c il solo condensato- tallizzati dovrete inserire tutti i componenti richiesti
re C2 collegato tra il piedino 31 e la massa. e per iniziare vi consigliamo di saldare lo zoccolo
Questo condensatore, come potrete leggere nelle- per lintegrato IC1.
lenco componenti, deve risultare da 22 picoFarad Dopo aver saldato tutti i piedini sulle piste dello
e tale valore serve per generare, tramite uno sta- stampato, potrete inserire i due connettori maschi
dio oscillatore interno, una frequenza di circa da 4 piedini e da 24 piedini, che vi serviranno per
20.500 Hz che, divisa internamente per 256, far innestare questa scheda nel bus siglato LX.1202
uscire dal piedino 30 di IC1 unonda quadra di cir- (vedi rivista N.179).
ca 80 Hz. Terminata questa operazione, capovolgete lo stam-
Questa frequenza chiamata Back/Plane, quella pato e da questo lato inserite i due connettori fem-
che ci servir per alimentare i piedini 1-40 del di- mina da 20 piedini che vi serviranno come zocco-
splay LCD. lo per il display LCD.
Fig.12 La scheda del display LCD siglata LX.1207 andr inserita nel Bus LX.1202 con-
giunta anche alla scheda dei Rel o dei Triac. Come microprocessore ST6 dovrete ne-
cessariamente utilizzare quelli a 28 piedini, cio lST62.E25 che riprogrammabile o i ti-
pi ST62.T15 e ST62.T25 che non sono riprogrammabili.
Per completare il montaggio dovrete inserire le re-
sistenze R1-R2, i due pulsanti P1-P2, i tre con-
densatori poliestere ed il ceramico da 22 picoFa-
rad ed innestare nello zoccolo lintegrato
M.8438/AB6, orientando la tacca a forma di U im-
pressa sul suo corpo come visibile nella fig.10.
Dal lato opposto dovrete inserire nei due connet-
tori femmina tutti i piedini presenti nel display LCD
e qui forse incontrerete qualche difficolt, perch
spesso i piedini del display risultano troppo divari-
cati.
Per poterli restringere in modo uniforme potrete
premere sul piano di un tavolo tutti i terminali.
Prima di inserire il display nei connettori, dovrete
ricercare sul suo corpo la tacca di riferimento, per-
ch se lo inserirete in senso inverso non potr fun- Fig.13 Quando sul monitor appare la fine-
zionare. stra dellEditor potete premere i tasti ALT+F
In questi display questa tacca di riferimento non poi F3 e vedrete apparire tutti i files con le-
molto visibile, perch quasi sempre costituita da stensione .ASM.
una piccola goccia di vetro posta su una sola e-
stremit.
Da questo stesso lato troverete spesso sulla cor-
nice nera che contorna linterno del display il se-
gno > (vedi fig.8).
Questa tacca di riferimento va sempre rivolta ver-
so i condensatori C1-C2.
Spingete il display in corrispondenza dei lati in cui
sono presenti i terminali e mai del centro perch
potrebbe spezzarsi.

PROGRAMMI

Per far funzionare questa scheda display LCD ab- Fig.14 Nel nuovo dischetto LX1207 non tro-
biamo preparato 5 programmi che troverete inse- verete nessuno dei vecchi programmi (ve-
riti in un dischetto floppy da 3 pollici siglato di foto), ma i soli programmi da utilizzare
DF1207.3. per questa scheda con display LCD.
Una volta in possesso del dischetto, per caricarlo
nellHard-Disk dovrete procedere come di seguito
spiegato.

Uscite da qualsiasi programma che stavate utiliz-


zando, Windows - Pcshell - Norton ecc., e quan-
do sul monitor del computer appare C:\> inserite il
dischetto nel drive A, quindi digitate:

C:\>A poi premete Enter

Quando appare A:\> scrivete:

A:\>installa e premete Enter


Fig.15 Potrete trasferire il programma scel-
Il programma vi chieder subito in quale directory to nella memoria di un ST6 solo dopo averlo
volete installare il contenuto del disco. assemblato. Per assemblarlo dovrete pre-
Noi abbiamo gi definito una directory che abbia- mere i tasti ALT+T poi Enter.
mo chiamato LX1207, quindi se premete Enter il
programma creer automaticamente una directory C:\LX1207>ST6 poi premere Enter
con questo nome e, scompattandolo, copier il
contenuto del dischetto allinterno dellHard-Disk. Con questo comando apparir la finestra dellEdi-
Se sul monitor dovesse apparire la scritta error, tor (vedi fig.13).
potrete ricaricare il dischetto con questo diverso si- A questo punto dovrete premere prima i tasti
stema. ALT+F poi il tasto F3 e sul monitor vedrete ap-
parire tutti i files con estensione .ASM (vedi
Quando appare C:\> dovrete creare la directory fig.14).
scrivendo:
LCDCLOCK.ASM
C:\>MD LX1207 poi premete Enter LCDCRONO.ASM
LCDOROLO.ASM
Quando riapparir il prompt di C:\> inserite il di- LCDTEM90.ASM
schetto floppy nel drive A poi scrivete: LCDTIM90.ASM
C:\>COPY A:*.* C:\LX1207 poi premete Enter
Per posizionare il cursore su uno dei cinque files
premete ALT+F poi premete i tasti freccia gi/su e
Nota = Poich nella digitazione necessario ri-
quando sarete sul file che vi interessa premete En-
spettare la spaziatura, per agevolarvi abbiamo in-
ter.
terposto una barra in colore che corrisponde allo
Entrerete cos nelleditor del file selezionato e a-
spazio che occorre lasciare tra le lettere.
vrete in linea le istruzioni del programma.
Per assemblare il programma dovete premere i ta-
Quando il computer avr terminato di copiare dal
sti ALT+T e poi Enter (vedi fig.15).
dischetto tutti i programmi, questi non saranno an-
Ammesso che abbiate scelto il file LCDCLOCK, do-
cora stati scompattati quindi dovrete farlo voi scri-
po pochi secondi apparir sul monitor la scritta:
vendo:

CD:\>CD LX1207 poi premete Enter *** success ***

Quando appare C:\LX1207> digitate: con il tempo di compilazione e di seguito la scritta:

C:\LX1207>installa poi premete Enter C:\LX1207>

In questo modo vedrete via via comparire sul mo- Premendo Enter rientrerete nel programma LCD-
nitor i nomi dei files che si stanno scompattando. CLOCK.
Per uscire dovrete premere ALT+F3.
Vedrete nuovamente la maschera dellEditor e a
questo punto premendo i tasti:
CONVERTIRE i files .ASM in .HEX
ALT+F poi F3 poi Enter
Prima di trasferire un file nella memoria di un ST6
occorre, come abbiamo precisato nei precedenti apparir nuovamente la maschera di tutti i files con
numeri, assemblarlo in modo da ottenere un se- estensione .ASM.
condo ed identico file, ma con lestensione .HEX. Nella riga in alto dovrete sostituire la scritta .ASM
Se tenterete di trasferire un file .ASM nella memo- con la scritta .HEX poi premere Enter.
ria del micro vi verr segnalato error. In questo modo apparir lelenco dei files conver-
Il micro da usare per i display LCD deve necessa- titi in .HEX, e poich stato convertito il solo file
riamente avere 28 piedini, quindi potrete adopera- LCDCLOCK comparir:
re un ST62.E25 se volete riprogrammarlo e cancel-
larlo pi volte, oppure un ST62.T15 o un ST62.T25 LCDCLOCK.HEX
che come sapete non sono cancellabili.
Anche se nei precedenti articoli vi abbiamo spie- Vi ricordiamo che per modificare le righe di un pro-
gato come procedere per trasformare un file .ASM gramma dovrete sempre lavorare nellestensione
in un file .HEX, lo ripeteremo nuovamente. .ASM. Dopo aver fatto le modifiche le dovrete sal-
vare premendo il tasto F2, poi dovrete assembla-
Quando sul monitor appare C:\LX1207> dovete re il programma per convertirlo in un file .HEX co-
scrivere: me pocanzi vi abbiamo spiegato.
I 5 programmi che abbiamo inserito in questo di- inserire nel bus LX.1202 la sola scheda dei display
schetto hanno le stesse funzioni dei programmi che siglata LX.1207.
vi abbiamo presentato per i display a 7 segmenti, Se nel bus inserirete le schede dei rel o dei triac,
ma sono stati riscritti e adattati per pilotare in se- non potrete renderle attive, perch nel program-
riale lintegrato M.8438/B6, quindi le righe che po- ma non presente nessuna istruzione per gestir-
trete modificare hanno un diverso numero. le.
Una volta caricato su un micro ST6 vergine il pro-
gramma LCDOROLO.HEX ed inserito nello zoc-
colo presente nella scheda bus LX.1202, non ap-
LCDCRONO.HEX pena alimenterete il circuito sui 4 display apparir
il numero:
Questo programma un semplice cronometro,
quindi per visualizzare i tempi occorre inserire nel 00:00
bus LX.1202 la sola scheda dei display siglata
LX.1207. I primi due display di sinistra segneranno le ore,
Se nel bus inserirete le schede dei rel o dei triac, mentre i due di destra i minuti.
non potrete renderle attive perch nel programma I due punti che separano i due display lampegge-
non presente nessuna istruzione per gestirle. ranno con una cadenza di 1 secondo.
Una volta caricato su un micro ST62.E25 ripro- Come noterete, raggiunte le ore 23 ed i 59 minu-
grammabile vergine il programma LCDCRO- ti, dopo 1 minuto si passer alle 24 ore che ver-
NO.HEX ed inserito nello zoccolo presente sulla ranno visualizzate con 00:00.
scheda bus LX.1207, appena alimenterete il cir- Per mettere a punto le ore dellorologio si utiliz-
cuito sui 4 display apparir il numero: zer il pulsante P2 e, per mettere a punto i minu-
ti, il pulsante P1.
00:00 Facciamo presente che potrete solo far avanzare
i numeri e non indietreggiare.
Premendo il pulsante P1 il micro comincer a con-
tare in avanti ad intervalli di tempo di un secondo,
quindi sui display vedrete apparire i numeri:

00:01 - 00:02 - 00:03 ecc. LCDCLOCK.HEX

Sui primi due display di sinistra vedrete i minuti e Questo programma totalmente diverso dal pre-
sui display di destra i secondi. cedente programma LCDOROLO, perch oltre a
I due punti che separano i display dei minuti e dei visualizzare le ore e i minuti permette di eccitare
secondi lampeggeranno con una cadenza di un se- un rel o un triac ad unora prestabilita e di di-
condo. seccitarlo dopo un tempo che voi stessi potrete
Come noterete, quando si raggiunto un tempo di prefissare modificando alcune righe del program-
00:59 secondi, subito dopo si passer al tempo ma.
successivo di 01:00, cio 1 minuto e 00 secondi. Per farlo funzionare occorre inserire nel bus
Il massimo numero che potrete visualizzare sar LX.1202 la scheda dei display siglata LX.1207 e
quindi di 99 minuti e 59 secondi, dopodich ap- quella dei rel siglata LX.1205, oppure quella dei
parir 00:00. triac siglata LX.1206.
Se in fase di conteggio premerete P1, il conteggio Prima di spiegarvi quali righe dovrete modificare,
si bloccher sul tempo raggiunto e premendolo consigliamo ai meno esperti di leggere attenta-
nuovamente ripartir dal numero sul quale si era mente tutto larticolo, dopodich potranno modifi-
fermato. care i parametri nelle sole righe che noi indiche-
Se invece premerete il pulsante P2, il conteggio ri- remo.
partir da zero, cio il tempo visualizzato si azze- Come abbiamo accennato, il programma LCD-
rer. CLOCK.HEX ci d la possibilit di eccitare o di-
seccitare uno o pi rel anche contemporanea-
mente, su orari che noi stessi potremo stabilire, pur-
ch non si superino pi di 8 cicli o periodi nellar-
LCDOROLO.HEX co delle 24 ore.
Questo programma potr servire per accendere o
Questo programma un semplice orologio. spegnere una o pi caldaie, delle insegne lumino-
Per poter visualizzare le ore ed i minuti dovrete se ad orari prestabiliti, ecc.
Per mettere a punto le ore dellorologio si utiliz-
zer il pulsante P2 e per mettere a punto i minuti
il pulsante P1.
Facciamo presente che possibile soltanto far a-
vanzare i numeri e non indietreggiare.
Appena accenderete lorologio tutti i 4 rel o triac
partiranno eccitati.
Se volete che allaccensione dellorologio tutti i rel
risultino diseccitati, dovrete andare alla riga N.57
dove troverete questa istruzione:

Idi port_b,11110011b

e modificarla inserendo in sostituzione degli 1 de-


gli 0 come qui sotto riportato:
Fig.16 Dopo aver assemblato il programma
Idi port_b,00000011b prescelto (vedi fig.15) pigiate ALT+T poi la
lettera P. Quando apparir questa finestra
Nota = Anche se questa riga composta da 8 nu- dovrete premere un tasto qualsiasi.
meri, dovrete modificare solo i primi 4 di sinistra.

Se volete far eccitare allaccensione il solo rel


RL4, dovrete mettere un 1 in corrispondenza del-
la prima cifra di sinistra come qui sotto riportato:

Idi port_b,10000011

A questo punto vi spieghiamo che cosa sintende


per 8 cicli o periodi da utilizzare nellarco delle 24
ore che troverete riportati in queste righe:

1 periodo = righe 299 - 300 - 301


2 periodo = righe 306 - 307 - 308
3 periodo = righe 313 - 314 - 315
4 periodo = righe 320 - 321 - 322 Fig.17 Come vedrete, sullo schermo appa-
5 periodo = righe 327 - 328 - 329 rir una finestra con tutti i tipi di ST62. Con
6 periodo = righe 334 - 335 - 336 i tasti freccia ricercate la sigla ST62E25 poi
7 periodo = righe 341 - 342 - 343 pigiate il tasto Enter.
8 periodo = righe 348 - 349 - 350

Ogni ciclo composto da 3 righe distruzioni, quin-


di nel 1 ciclo o periodo del nostro programma tro-
verete:

.byte 02 ; 299 riga delle ore


.byte 30 ; 300 riga dei minuti
.byte 11100000b ; 301 riga per comando rel

Attualmente il 1 ciclo inizia alle ore 2,30 di not-


te.
Per modificare lorario baster mettere nella prima
riga lora che vi interessa, ad esempio 05-06-10, e
nella seconda riga i relativi minuti, ad esempio 00 Fig.18 Prima di programmare lST62E25
- 10 - 30 - 50. controllate attentamente che nel riquadro in
Nella terza riga sono riportati i rel che desiderate basso appaia ST62E25. Se appare unaltra
eccitare e quelli che non desiderate eccitare allo- sigla dovrete ritornare alla fig.17.
rario da noi prestabilito.
Mettendo un 1 il rel si ecciter, mettendo uno 0 .byte 23 ; 334 riga delle ore
si disecciter. .byte 40 ; 335 riga dei minuti
Ci che dovrete modificare in questa terza riga so- .byte 00010000b ; 336 riga per comando rel
no solo i primi quattro numeri di sinistra posti do-
po la parola byte. Se alle 24,00 vorrete diseccitare anche questo
Tenete presente che il primo numero di sinistra pi- rel, dovrete scrivere nelle righe 341 - 342 - 343
loter il rel RL4 e lultimo numero di destra il rel (7 ciclo) questi numeri:
RL1, quindi avrete in ordine:
.byte 00 ; 341 riga delle ore
RL4-RL3-RL2-RL1 .byte 00 ; 342 riga dei minuti
.byte 00000000b ; 343 riga per comando rel
Per farvi capire come modificare tutti questi nume-
ri vi faremo un semplice esempio. Avendo utilizzato solo 7 cicli degli 8 disponibili, se
Ammesso che alle 06,10 desideriate eccitare i rel lultimo non vi interessa lo potrete cancellare op-
RL2-RL1, scriverete nelle righe 299 - 300 - 301 (1 pure inibire, mettendo davanti alle righe 348 - 349
ciclo) questi numeri: - 350 un punto e virgola o mettendo sulla terza ri-
ga 00000000b.
.byte 06 ; 299 riga delle ore Potrete aggiungere altri cicli se 8 risultassero in-
.byte 10 ; 300 riga dei minuti sufficienti.
.byte 00110000b ; 301 riga per comando rel
Facciamo presente che questi cicli si ripeteranno
Se alle 09,30 vorrete eccitare il solo rel RL4, do- automaticamente allinfinito agli stessi orari tutti i
vrete scrivere nelle righe 306 - 307 - 308 (2 ciclo) giorni.
questi numeri:

.byte 09 ; 306 riga delle ore


.byte 30 ; 307 riga dei minuti
.byte 10000000b ; 308 riga per comando rel LCDTIM90.HEX

Questo programma un timer che, contando in a-


Se alle 12,00 vorrete diseccitare anche il rel RL4,
vanti, ecciter un rel o un triac quando raggiun-
dovrete scrivere nelle righe 313 -314 -315 (3 ci-
ger i minuti e i secondi da noi prefissati.
clo) questi numeri:
Per farlo funzionare occorre inserire nel bus
LX.1202 la scheda dei display LCD siglata LX.1207
.byte 12 ; 313 riga delle ore
e quella dei rel siglata LX.1205, oppure quella dei
.byte 00 ; 314 riga dei minuti
triac siglata LX.1206.
.byte 00000000b ; 315 riga per comando rel
Non appena alimenterete il circuito, il conteggio
partir da 00:00 e inizier a contare in avanti; a
Se alle 18,45 vorrete eccitare tutti i rel, dovrete questo punto potrete utilizzare i pulsanti P1 e P2
scrivere nelle righe 320 - 321 - 322 (4 ciclo) que- presenti sulla scheda display LCD LX.1207.
sti numeri:
Premendo P1 il conteggio si ferma.
.byte 18 ; 320 riga delle ore Premendo nuovamente P1 il conteggio riparte dal
.byte 45 ; 321 riga dei minuti numero sul quale si era fermato.
.byte 11110000b ; 322 riga per comando rel Premendo P2 il contatore si resetta.
Premendo P1 il contatore riparte da 00:00.
Se alle 22,30 vorrete diseccitare i rel RL4-RL3,
dovrete scrivere nelle righe 327 - 328- 329 (5 ci- Nota = Il pulsante P2 di reset sar attivo solamente
clo) questi numeri: se avrete fermato il conteggio con P1. Se preme-
rete P2 mentre attivo il conteggio, questo non si
.byte 22 ; 327 riga delle ore azzerer.
.byte 30 ; 328 riga dei minuti I pulsanti presenti sulle schede Triac e Rel non ri-
.byte 00110000b ; 329 riga per comando rel sultano attivati.
Il conteggio del display arriva ad un massimo di 89
Se alle 23,40 vorrete lasciare eccitato il solo rel minuti e 59 secondi.
RL1, dovrete scrivere nelle righe 334 - 335 - 336
(6 ciclo) questi numeri: Il programma LCDTIM90.ASM, come potrete no-
tare, dispone di 4 cicli perch quattro sono i rel nuti e 10 secondi, dovrete inserire nelle sue righe
e i triac presenti sulle schede sperimentali. questi numeri:

1 ciclo = Dopo 20 secondi dallaccensione si ec- Idi stsex,10 ; 310 secondi per RL1
citer il solo rel RL1. Idi stmix,2 ; 311 minuti per RL1
Ovviamente sui display vedrete apparire 19 e,
quando questo numero raggiunger 00:00, il rel
si ecciter. Nelle righe 295/296 - 301/302 - 307/308 - 313/314
sono riportate le sigle dei rel che volete eccitare
2 ciclo = Passando al secondo ciclo, questo rel e di quelli che volete rimangano diseccitati.
rimarr eccitato per un tempo da noi prefissato in Guardando lesempio riportato nel programma
1 minuto e 30 secondi e raggiunto questo tempo LCDCLOCK.ASM saprete gi che scrivendo que-
il rel RL1 si disecciter e automaticamente si ec- sta istruzione:
citer il rel RL2.
Idi port_b,11110011b
Il rel RL2 si ecciter un secondo dopo che sui di-
splay sar apparso il numero 01:29 che cambier
in 00:00. potrete eccitare ad ogni ciclo anche pi rel a vo-
stra scelta.
3 ciclo = Dopo 47 secondi, cio quando sul di- Nei primi quattro numeri di sinistra (vedi 1111) do-
splay il numero 46 passer sullo 00, il rel RL2 si vrete mettere un 1 sul rel che volete far eccitare
disecciter e si ecciter il terzo rel RL3. ed uno 0 se non lo volete eccitare.

4 ciclo = Il conteggio continuer ed allo scoccare


dei 3 minuti e 00 secondi (tempo da noi prefis-
sato) si disecciter il rel RL3 e si ecciter il rel
RL4, cio si ritorner al 1 ciclo per ripetere allin- LCDTEM90.HEX
finito i quattro cicli.
Questo programma un timer che fa esattamen-
Per variare i tempi che noi abbiamo prefissato do- te linverso del programma LCDTIM90, cio con-
vrete variare queste righe: ta allindietro e quando raggiunge lo 00:00 eccita
i rel.
1 ciclo = righe 292 - 293 I rel, come per il programma precedente, li ecci-
2 ciclo = righe 298 - 299 terete in 4 cicli e come tempo massimo di par-
3 ciclo = righe 304 - 305 tenza potrete impostare 90 minuti e 00 secondi.
4 ciclo = righe 310 - 311 Non appena alimenterete il circuito, il conteggio
partir da 00:20 (questo tempo lo abbiamo pre-
Se volete che il 1 ciclo abbia una durata di 1 mi- scelto noi, ma poi vi spiegheremo come modificar-
nuto e 30 secondi, dovrete inserire nelle sue ri- lo) e proceder allindietro.
ghe questi numeri: Dopo che avr avuto inizio il conteggio, potrete u-
tilizzare i pulsanti P1 e P2 presenti sulla scheda di-
Idi stsex,30 ; 292 secondi per RL1
splay LCD LX.1207.
Idi stmix,1 ; 293 minuti per RL1

Se volete che il 2 ciclo abbia una durata di 50 se- Premendo P1 il conteggio si ferma.
condi, dovrete inserire nelle sue righe questi numeri: Premendo nuovamente P1 il conteggio riparte dal
numero sul quale si era fermato.
Idi stsex,50 ; 298 secondi per RL1 Premendo P2 il contatore si resetta.
Idi stmix,00 ; 299 minuti per RL1 Premendo P1 il contatore riparte dal tempo che a-
vete impostato come partenza per il conteggio
allindietro.
Se volete che il 3 ciclo abbia una durata di 15 mi-
nuti e 20 secondi, dovrete inserire nelle sue righe
questi numeri: Nota = Il pulsante P2 di reset sar attivo solamente
se avrete fermato il conteggio con P1. Se preme-
Idi stsex,20 ; 304 secondi per RL1 rete P2 mentre attivo il conteggio, questo non si
Idi stmix,15 ; 305 minuti per RL1 azzerer. Premendo P2 per resettarlo, intuitivo
che contando allindietro sul display ritorni il tem-
Se volete che il 4 ciclo abbia una durata di 2 mi- po di partenza, cio 00:20.
Nei 4 cicli impostati otterrete queste condizioni:
Se volete che il 4 ciclo abbia una durata di 2 mi-
nuti e 10 secondi, dovrete inserire nelle sue righe
1 ciclo = Allaccensione si ecciter il solo rel RL1 questi numeri:
e sui display apparir 00:20 e a questo punto avr
inizio il conteggio alla rovescia che si fermer sul- Idi stsex,10 ; 313 secondi per RL1
lo 00:00. Idi stmix,2 ; 314 minuti per RL1

2 ciclo = Dopo un secondo si ecciter il rel RL2 Nelle righe 297/298 - 303/304 - 309/310 - 315/316
e a questo punto inizier il secondo ciclo, che far sono riportate le sigle dei rel che si ecciteranno
apparire sui display 01:30 (tempo 1 minuto e 30 e di quelli che si disecciteranno.
secondi) che, secondo per secondo, decremen- Anche in questo programma possiamo sostituire le
ter fino ad arrivare a 00:00. righe sopra menzionate con questa sola riga di-
struzione:
3 ciclo = A questo punto si ecciter il rel RL3 e
sui display apparir 00:47 che decrementer fino Idi port_b,11110011b
ad arrivare allo 00:00.
Nei primi quattro numeri di sinistra (vedi 1111) do-
4 ciclo = Lultimo ciclo far eccitare il rel RL4 e ve metterete 1 il rel si ecciter, dove metterete 0
far apparire sui display il numero 03:00 (3 minu- si disecciter.
ti). Quando con il conteggio alla rovescia si arri-
ver al numero 00:00, questo rel si disecciter e
contemporaneamente si disecciter il rel RL1, NOTA
cio si ritorner al 1 ciclo per ripetere allinfinito i
quattro cicli. Per imparare a programmare i microprocessori ST6
vi consigliamo di rileggere tutti i precedenti articoli
riportati sulle riviste N.172/173 - 174 - 175/176 -
Per variare i tempi prefissati dovrete modificare 179 - 180, perch da oggi in avanti non ripeteremo
queste righe: pi quello che vi abbiamo gi spiegato.
Sul prossimo numero vi presenteremo un progetto
1 ciclo = righe 295 - 296 completo dei relativi programmi per gestire un di-
2 ciclo = righe 301 - 302 splay LCD ALFANUMERICO a pi righe, quindi
3 ciclo = righe 307 - 308 proseguiremo spiegandovi come si dovr proce-
4 ciclo = righe 313 - 314 dere per ottenere dei programmi sempre pi per-
fetti e funzionali.
Se volete che il 1 ciclo abbia una durata di 1 mi-
nuto e 30 secondi, dovrete inserire nelle sue ri-
ghe questi numeri: KIT ESAURITO
perch lintegrato M.8438/AB6
Idi stsex,30 ; 295 secondi per RL1
fuori produzione
Idi stmix,1 ; 296 minuti per RL1

Se volete che il 2 ciclo abbia una durata di 50 se- COSTO DI REALIZZAZIONE


condi, dovrete inserire nelle sue righe questi nu-
meri: Tutti i componenti per realizzare questa scheda
con display LCD, cio circuito stampato, connet-
Idi stsex,50 ; 301 secondi per RL1 tori maschi, pulsanti, integrato M.8438/AB6, di-
Idi stmix,00 ; 302 minuti per RL1 splay a cristalli liquidi tipo S.5126 o LC.513040
(escluso il solo software inserito nel dischetto
DF.1207/3)...............................................L.58.000
Se volete che il 3 ciclo abbia una durata di 15 mi-
nuti e 20 secondi, dovrete inserire nelle sue righe Costo del solo stampato LX.1207 ..............L.9.000
questi numeri:
Nota = Per far funzionare questa scheda vi servo-
Idi stsex,20 ; 307 secondi per RL1 no i 5 programmi inseriti nel dischetto siglato
Idi stmix,15 ;308 minuti per RL1 DF.1207/3 del costo di .............................L.12.000
Se guardiamo il lato posteriore di un normale LCD con 1-2-3 righe, ecc., anche se nel nostro caso ne
vedremo il vetro del suo supporto, se guardiamo abbiamo scelto uno con 16 caratteri 2 righe per
quello di un LCD alfanumerico vedremo un cir- spiegarvi come si possa scrivere nella riga supe-
cuito stampato con sopra fissati due integrati in riore ed in quella inferiore.
SMD provvisti di 62-80 piedini (vedi fig.2). La definizione 16 caratteri sta ad indicare che vi
Se potessimo osservare anteriormente linterno di sono 16 caselle per riga, quindi avendo scelto un
un normale LCD vedremmo quattro caselle con i Display con 2 righe avremo un totale di 32 casel-
soliti 7 segmenti che, accendendosi, ci permetto- le e poich in ciascuna vi sono 40 punti potremo
no di far apparire un numero qualsiasi da 0 a 9. accendere ben:
Poich questo Display pu visualizzare solo dei nu-
meri viene definito numerico. 40 x 32 = 1.280 punti
Se si potesse osservare, sempre anteriormente,
linterno di un Display alfanumerico, si vedrebbe- Ammesso di voler visualizzare su un normale Di-
ro tante caselle rettangolari che, anzich essere splay a 7 segmenti il numero 3, potremo risolvere
composte da 7 segmenti, presentano ben 40 pun- il problema con estrema facilit alimentando i soli

UNA SCHEDA per pilotare


ti distribuiti 8 in senso verticale e 5 in senso oriz- segmenti a-b-g-c-d, ma in un Display a matrice
zontale (vedi fig.3). composto da 40 punti le cose diverrebbero ben pi
Questi Display, conosciuti anche con il nome di complesse perch dovremmo alimentare, nella pri-
DMLCD (vale a dire Dot Matrix Liquid Cristal Di- ma riga superiore i 5 punti in orizzontale, nella se-
splay che in italiano significa Display a Cristalli Li- conda-terza-quarta-quinta riga 1 punto nella posi-
quidi con Matrice di Punti), sono chiamati alfanu- zione richiesta, nella sesta riga 2 punti, uno alli-
merici. nizio della riga ed uno alla fine e nella settima riga
Infatti, accendendo questi 40 punti nelle varie com- 3 punti centrali.
binazioni, potremo far apparire un qualsiasi carat- Immaginatevi quindi quanto sarebbe complicato
tere alfabetico maiuscolo o minuscolo, tutti i nu- scrivere nelle 32 caselle delle frasi o dei numeri.
meri da 0 a 9, un qualsiasi simbolo grafico, co- In teoria lo si potrebbe fare con un microproces-
me ad esempio frecce, , , e, volendo, an- sore da 1.280 bit, ma poich non esiste, vi chie-
che caratteri cinesi - arabi - greci - cirillici, ecc. derete come si possano scrivere in tutte queste ca-
Questi display alfanumerici li possiamo reperire selle lettere - numeri - simboli.

Fig.1 Le dimensioni di un display


alfanumerico (vedi a sinistra) so-
no nettamente superiori a quelle
del display numerico riprodotto a
destra.

Fig.2 Dal lato opposto del solo di-


splay alfanumerico presente un
micro HD.44780 piu un integrato
siglato HD.44100.
un DISPLAY alfanumerico
Oltre ai normali display LCD a 7 segmenti presentati nella rivista N.181,
in grado di visualizzare 4 numeri, esistono anche dei display LCD al-
fanumerici in grado di riprodurre un qualsiasi carattere grafico. In que-
sto articolo vi spiegheremo come dovrete pilotarli per poter far appari-
re parole - numeri - simboli.

Per questi Display alfanumerici si sfrutta la stes- re tutti i punti necessari per far apparire sul Display
sa tecnica utilizzata per far apparire sul monitor la lettera o il simbolo da noi prescelti, il micropro-
del vostro computer tutte le lettere e i numeri pre- cessore HD.44780 attender una conferma dal se-
senti sulla tastiera. condo integrato siglato HD.44100.
Quando sulla tastiera digitiamo la lettera A ge- Detto questo, molti potrebbero pensare che sia suf-
neriamo un codice che, entrando in un integrato ficiente applicare sui piedini DB0 - DB1 - DB2 -
generatore di caratteri, viene trasformato in un DB3 - DB4 - DB5 - DB6 - DB7 dei livelli logici 1-0
codice ASCII che provvede a far accendere sul per far apparire una lettera o un numero.
monitor tutti i punti richiesti per creare il simbo- Chi tentasse di farlo non vedrebbe accendersi
lo A. nessun punto, perch i due integrati HD.44780 e
Lo stesso avviene in questi Display, i quali vengo- HD.44100 devono essere gestiti con un comples-
no gestiti da un codice di 8 bit che, applicato sui so set di istruzioni che potremo ottenere solo u-
piedini DB0 - DB1 - DB2 - DB3 - DB4 - DB5 - DB6 tilizzando un microprocessore esterno apposita-
- DB7 (piedini dal numero 7 al numero 14), entrer mente programmato.
negli ingressi del microprocessore siglato
HD.44780 (presente sul retro del display) al cui in- - Di questo set di istruzioni una parte viene utiliz-
terno presente una CGROM. zata per inizializzare il microprocessore esterno,
La parola CGROM significa Characters Generator cio lST6.
Read Only Memory, cio lista di caratteri gi me- Le rimanenti istruzioni sono necessarie al Display
morizzati al suo interno. per prepararsi a ricevere tutti i nostri dati, cio per
Allinterno di questa CGROM sono memorizzate tut- configurarsi correttamente per ricevere i dati in 8
te le lettere e i simboli visibili nella Tabella N . 1, bit oppure in 4+4 bit.
quindi, se sui suoi piedini dingresso faremo giun-
gere un codice composto da livelli logici 0-1, se- Se non utilizzeremo questo set di istruzioni non
lezioneremo nella sua memoria la lettera o il sim- riusciremo mai a visualizzare sul Display alcun ca-
bolo abbinati a questo codice; per poter accende- rattere.
Fig.3 In un display 16 x 2 sono presenti 2 colonne di 16 caselle. In ogni casella vi sono
40 punti per accendere i quali occorrerebbe un microprocessore da 1.280 bit.

Per comunicare con il Display con 8 bit si utilizza- Questi Display vengono chiamati intelligenti, solo
no tutti i piedini siglati da DB0 a DB7, mentre per perch dispongono di una memoria con un archi-
comunicare con 4+4 bit si utilizzano i soli piedini vio di caratteri, ma per poter funzionare necessi-
siglati da DB4 a DB7 (gli altri piedini da DB0 a DB3 tano sempre di un microprocessore esterno (nel
non vengono utilizzati). nostro caso un ST62/E25 con 28 piedini) che in-
Usando 4+4 bit, verranno inviati al Display i primi dichi loro quali caratteri desideriamo far apparire
4 bit, poi i successivi 4 bit. nelle 32 caselle.
Nota = Nei nostri programmi abbiamo utilizzato il
sistema dei 4+4 bit.
TABELLA dei CARATTERI PREDEFINITI
- Come abbiamo detto, quando invieremo un co-
dice allHD.44780 per far apparire un carattere, Nella Tabella N.1 abbiamo riprodotto tutti i carat-
per poterlo visualizzare questo attender tutta una teri presenti allinterno della CGROM.
serie di istruzioni, ad esempio in quale delle 32 Come potrete notare, sul lato destro sono presenti
caselle presenti nel Display vogliamo far apparire 4 bit indicati con x x x x seguiti da altri 4 bit pre-
il segno grafico, se desideriamo utilizzare en- definiti con 0 e 1, ad esempio:
trambe le righe del Display oppure 1 sola, ecc.
Queste istruzioni verranno accettate solo quando xxxx0001
sul piedino 4 del display, denominato R/S, sar
presente un livello logico 0. In alto sono riportati altri 4 bit predefiniti con 0 e 1,
ad esempio:
- Dopo aver inserito tutte le istruzioni richieste, do-
vremo mettere a livello logico 1 il piedino 4 del di- 0011
splay e solo a questo punto potremo inviare i da-
ti, cio la lettera - numero - simbolo che deside- Questa Tabella si usa come una Tavola Pitago-
riamo far apparire. rica, quindi se volessimo far apparire sul display
la lettera A, dovremmo sostituire le x presenti sul
- Ai due integrati HD.44780 - HD.44100 occorre un lato destro con i bit riportati nella casella in al-
certo tempo per eseguire tutte queste operazioni to.
e questo tempo di lavoro lo dovremo considerare In questo esempio dovremo scrivere:
e rispettare anche se si tratta di pochi millise-
condi, diversamente nella casella interessata po- 0100-0001
trebbero apparire dei caratteri strani e non signi-
ficativi. Nota = Abbiamo messo un segno - tra i primi quat-
tro bit e i secondi quattro, solo per rendere le-
Nei programmi dei vari esempi che troverete nel sempio pi chiaro, ma questo segno non dovrete
dischetto DF1208 troverete tutte queste istruzioni mai inserirlo.
di ritardo, che dovrete necessariamente rispettare
quando vi accingerete a scrivere dei vostri perso- Se volessimo far apparire una a (minuscola) do-
nali programmi. vremmo scrivere:
Se non le rispetterete, non riuscirete mai a far fun-
zionare un qualsiasi Display alfanumerico. 0110-0001
DISPLAY

6 4 5 7 8 9 10 11 12 13 14 15 2 3 1

ENABLE

R/S
R3

DB4
DB5
DB6
DB7
R1 R2 C3

P1 C1 P2 C2

A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C4 C5 C6 C7 NMI + 5 V. GND + 12 V.
CONN. 1 / 2

C4 C5
IC1 - A DS1
5 R4
8
7
6
4 C6 R5 V. INP.
DS2

Fig.4 Per accendere il display useremo solo 4 bit,


pi precisamente DB4-DB5-DB6-DB7, collegati ai
piedini C4-C5-C6-C7 del Connettore dingresso.

ELENCO COMPONENTI LX.1208

R1 = 10.000 ohm 1/4 watt


R2 = 10.000 ohm 1/4 watt
R3 = 10.000 ohm trimmer
R4 = 10.000 ohm 1/4 watt
R5 = 1 megaohm 1/4 watt
C1 = 100.000 pF poliestere
C2 = 100.000 pF poliestere
C3 = 100.000 pF poliestere
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 C4 = 100.000 pF poliestere
C5 = 10 mF elettr. 63 volt
C6 = 1 mF poliestere
+ 5 V.

+ 5 V.
ENABLE
Massa

Massa
LUMINOSITA'
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0

R/S

LM 093 LN DS1 = diodo tipo 1N.4150


DS2 = diodo tipo 1N.4150
IC1 = LM.358
DISPLAY = LCD tipo LM.093X
Fig.5 Gli altri bit che non vengono utilizzati, cio DB0- CONN.1/2 = connettore 24 poli
DB1-DB2-DB3 che fanno capo ai piedini 7-8-9-10, an- P1 = pulsante
dranno collegati a massa. P2 = pulsante
Se volessimo far apparire il segno grafico > do- a vedere nella Tabella N. 1 noteremo che il nu-
vremmo scrivere: mero decimale 53 corrisponde effettivamente al
carattere grafico 5.
0011-1110 Pertanto, listruzione che dovremo scrivere per
svolgere questa operazione sar:
Anzich utilizzare questo codice binario per scri-
vere una lettera o un carattere, potremo usare an- ldi a,3
che un codice decimale e per questo motivo ab- addi a,2
biamo inserito sotto ad ogni casella il rispettivo nu- addi a,48
mero decimale. ld ddata,a
Quindi scrivendo 65 sul Display apparir la lettera call dsend
A maiuscola e scrivendo 97 apparir la lettera a
minuscola. Se svolgiamo questa seconda operazione 9+7 =
16 otterremo un risultato di due cifre, quindi per far
Esempio in codice Binario apparire questi due segni grafici dovremo somma-
re a 1 la costante 48 e, in tal modo, otterremo 49;
Per scrivere la lettera A in codice binario dovremo consultando la Tabella N. 1 noteremo che il nu-
scrivere questa istruzione: mero 49 corrisponde al segno grafico 1.
Sommando al numero 6 la costante 48 otterremo 6
ldi car,01000001b + 48 = 54 e sempre guardando la Tabella N. 1 sco-
priremo che 54 corrisponde al segno grafico 6.
Esempio in codice Decimale Pertanto listruzione che dovremo scrivere per
questa operazione sar:
Per scrivere la lettera A in codice decimale do-
vremo scrivere questa istruzione: ldi a,1
addi a,48
ldi car,65 ld ddata,a
call dsend
Esempio in codice ASCII
ldi a,6
Anzich utilizzare un codice binario o decimale, addi a,48
potremo scrivere direttamente in ASCII ed in que- ld ddata,a
sto caso listruzione sar la seguente: call dsend

car .ascii A
ISTRUZIONI di INIZIALIZZAZIONE
Tra i programmi dimostrativi riportati nel dischetto
DF1208 ne abbiamo inseriti diversi utilizzando que- Come abbiamo gi detto, quando scriverete dei
sti tre diversi codici, quindi leggeteli attentamente nuovi programmi dovrete sempre iniziare con tut-
perch con le istruzioni riportate comprenderete ta una serie di istruzioni di inizializzazione.
con estrema facilit quello che risulterebbe assai Nei due programmi che troverete nel dischetto
pi complesso spiegare a parole. DF1208 questo set di istruzioni sono riportate:

nel programma DISP093 nelle righe 77-109


OPERAZIONI MATEMATICHE nel programma TESTER nelle righe 81-113

Molti si trovano in difficolt con le operazioni ma- In questi due programmi questo set di istruzioni
tematiche, perch non pensano che il numero che posizionato nelle righe 77-109 e nelle righe 81-113
desiderano far apparire un carattere grafico che solo perch prima di queste abbiamo dovuto ripor-
verr prelevato allinterno della CGROM. tare due diverse serie di variabili necessarie per
Nel caso della somma 3+2 che ci d come risulta- far funzionare i due programmi.
to 5, consultando la Tabella N. 1 vedremo che sot-
to al numero 5 indicato il numero 53. Come noterete questi due set di istruzioni, anche se
posti in righe diverse, sono perfettamente identici.
Per far apparire sul display il segno grafico 5, a Dovrete sempre riportare nei vostri programmi per-
questo numero dovremo sommare la costante 48 sonalizzati tutte queste righe senza apportare al-
e cos facendo otterremo 5+48 = 53 e se andiamo cuna modifica, dopo tutte le vostre variabili.
TABELLA n. 1
0010 0011 0100 0101 0110 0111 1010 1011 1100 1101 1110 1111

xxxx0000
32 48 64 80 96 112 160 176 192 208 224 240

xxxx0001
33 49 65 81 97 113 161 177 193 209 225 241

xxxx0010
34 50 66 82 98 114 162 178 194 210 226 242

xxxx0011
35 51 67 83 99 115 163 179 195 211 227 243

xxxx0100
36 52 68 84 100 116 164 180 196 212 228 244

xxxx0101
37 53 69 85 101 117 165 181 197 213 229 245

xxxx0110
38 54 70 86 102 118 166 182 198 214 230 246

xxxx0111
39 55 71 87 103 119 167 183 199 215 231 247

xxxx1000
40 56 72 88 104 120 168 184 200 216 232 248

xxxx1001
41 57 73 89 105 121 169 185 201 217 233 249

xxxx1010
42 58 74 90 106 122 170 186 202 218 234 250

xxxx1011
43 59 75 91 107 123 171 187 203 219 235 251

xxxx1100
44 60 76 92 108 124 172 188 204 220 236 252

xxxx1101
45 61 77 93 109 125 173 189 205 221 237 253

xxxx1110
46 62 78 94 110 126 174 190 206 222 238 254

xxxx1111
47 63 79 95 111 127 175 191 207 223 239 255
PER PASSARE dalla 1 alla 2 RIGA NOTA per lEDIT dellST6

Poich normalmente si scrive partendo dalla 1 ri- Dobbiamo precisare che lEDIT, che vi avevamo
ga per poi passare alla 2 riga, le prime istruzioni fornito nei precedenti dischetti LX.1207 con lin-
che dovrete scrivere saranno: tento di semplificare tutte le operazioni, risulta in-
sufficiente per programmi molto lunghi come
res 1,port_b prepararsi per listruzione quelli utilizzati per questo Display alfanumerico si-
ldi ddata,00000010b istruzione per la 1 riga glato LX.1208.
call dsend subroutine per invio dati Infatti questo EDIT accetta solo programmi che non
superino i 30 Kilobyte quindi, quando li andrete a
Continuerete quindi con le istruzioni che servono salvare, tutto quello che eccede i 30 K verr ine-
ad incrementare di una casella, cio a far s che sorabilmente cancellato.
la prima lettera o numero che vorrete far apparire Se perci vorrete modificare e trasferire nella me-
si posizioni automaticamente nella prima casella, moria dellST6 un programma per questo Display
la seconda lettera nella seconda casella, ecc. alfanumerico o altri che superino i 30 K, dovrete
Ammesso di voler scrivere A, dovrete scrivere il necessariamente utilizzare lEditor del DOS pre-
suo numero decimale, quindi: sente nel vostro computer.

ldi ddata,00000110b incrementa di una casella Per caricare i due programmi presenti nel dischet-
call dsend subroutine per invio dati to DF1208 dovrete procedere come segue:
set 1,port_b fine set istruzioni
ldi ddata,65 trasferisci A in ddata Quando sul monitor appare C:\> dovrete inserire il
call dsend subroutine per invio dati dischetto nel drive A e scrivere:

Per scrivere 16 caratteri in ogni riga si potrebbe C:\>A: poi premete Enter
scrivere 16 volte questa istruzione, mettendo nella A:\> installa poi premete Enter
riga ldi ddata il numero decimale che si desidera
far apparire, ma poich questa soluzione risulta po- Il programma vi chieder su quale directory vole-
co pratica, vi consigliamo di andare a vedere nel te installare il contenuto del dischetto e, poich noi
programma DISP093 come abbiamo risolto in mo- labbiamo gi definita LX1208, dovrete solo pre-
do pi elegante il problema per far apparire sul Di- mere il tasto Enter.
splay la parola N.ELETTRONICA.
Si creer cos automaticamente la directory
Per scrivere nella 2 riga posta sotto la 1, dovre- LX1208 e mentre verranno trasferiti nellHard-Disk
te scrivere queste istruzioni: tutti i programmi presenti nel dischetto floppy ver-
ranno anche scompattati.
res 1,port_b prepararsi per listruzione
ldi ddata,11000000b posizionamento in 2 riga Se usando questo metodo vi apparir la scritta er-
call dsend subroutine per invio dati ror, vi consigliamo di ricaricare il dischetto
set 1,port_b fine set istruzioni nellHard-Disk utilizzando questo secondo metodo:

Ammesso di voler far apparire nella seconda ca- C:\>MD LX1208 poi premete Enter
sella la lettera B, dovrete scrivere: C:\>COPY A:*.* C:\LX1208 poi premete Enter
C:\>CD LX1208 poi premete Enter
ldi ddata,66 trasferisci B in ddata C:\LX1208>installa poi premete Enter
call dsend subroutine per invio dati
Nota = Per agevolarvi a rispettare le spaziature,
Vorremmo aggiungere che anche se sul display so- abbiamo utilizzato una barra in colore che corri-
no visibili solo 16 caselle per riga, in pratica ve sponde ad uno spazio.
ne sono per ogni riga altre 24 nascoste e queste
righe nascoste possono servire nel caso si desi- Ammesso che desideriate modificare il programma
derino far scorrere sul display delle scritture da TESTER presente nel disco DF.1208, quando sul
destra verso sinistra o viceversa. monitor appare C:\> scrivete:
Nel programma DISP093 che troverete nel di-
schetto DF1208, oltre a tutte le sorgenti abbiamo C:\>CD LX1208 (chiama la directory)
riportato anche degli esempi per ottenere questa C:\LX1028>Edit TESTER.ASM (chiama Editor del
funzione. Dos)
Fig.6 La scheda di questo di-
play andr inserita nel Bus si-
glato LX.1202, non dimenti-
cando di innestare nello zoc-
colo textool un micro ST6 tipo
ST6/E25 per trasferire il pro-
gramma DISP093.HEX oppure
il TESTER.HEX.

IMPORTANTE SP093, quando sul monitor apparir C:\LX1208>


dovrete scrivere:
Con questo programma LX.1208 non viene pi u-
tilizzato lEditor dellST6 ma lEditor del DOS, C:\LX1208>A DISP093.ASM
quindi per trasferire i programmi dallHard-Disk al-
la memoria dellST62/E25 non dovrete pi con- Nota = Dopo la lettera A non mettete : perch
vertire i programmi da .ASM in .HEX come vi ave- questa A un programma Batch.
vamo insegnato in precedenza per tutti i program-
mi presenti nel dischetto LX.1207, ma dovrete pro- Con questa istruzione convertirete automatica-
cedere in modo completamente diverso. mente il programma da .ASM a .HEX.

Dopo aver eseguito tutte le modifiche sui pro- Per trasferire i programmi gi compilati in .HEX nel
grammi dovrete premere i tasti ALT F, poi portare microprocessore posto sullinterfaccia LX.1202,
il cursore sulla riga SALVA e premere Enter ed in- dovrete richiamare la directory LX1208 e poi scri-
fine sulla riga ESCI e premere Enter. vere semplicemente:

Ammesso di voler compilare il programma DI- C:\LX1208>ST6PGM poi premere Enter


A questo punto sul monitor apparir una masche- REALIZZAZIONE PRATICA
ra che vi chieder quale programma intendete tra-
sferire e quale micro avete scelto e, una volta che Sul circuito stampato siglato LX.1208 dovrete mon-
avrete risposto a queste domande, potrete memo- tare tutti i componenti visibili in fig.7.
rizzare il vostro micro ST62/E25. Vi consigliamo di iniziare dal connettore maschio
Tutte le istruzioni relative a come trasferire un pro- a 24 terminali e di procedere inserendo gli altri due
gramma dallHard-Disk ad un micro ST6 le abbia- connettori maschi a 4 terminali (nello schema
mo riportate negli articoli pubblicati sulle riviste pratico si vede solo quello di destra) ed il connet-
N.172/173-174-175/176-179-180-181, quindi a chi tore femmina a 15 terminali che userete come
fosse interessato a questo argomento suggeriamo zoccolo per il display.
di procurarsi tali numeri al pi presto prima che ven- Completata questa operazione, potrete inserire lo
gano esauriti. zoccolo per lintegrato IC1 e tutti gli altri compo-
nenti richiesti, cio pulsanti, trimmer, condensatori
e resistenze.
SCHEMA ELETTRICO Nel montaggio dovrete solo rispettare la polarit
dei due diodi al silicio DS1-DS2, posizionando il
Lo schema elettrico di questo progetto, come po- lato del loro corpo contornato da una fascia nera
tete vedere in fig.4, quanto di pi semplice si pos- come appare ben visibile nello schema pratico di
sa immaginare. fig.7.
Abbiamo contrassegnato otto dei 15 piedini del di- Completato il montaggio, dovrete inserire nello zoc-
splay con le sigle da DB0 a DB7 per non confon- colo lintegrato IC1, rivolgendo la tacca di riferi-
derli con i segnali da B0 a B7 presenti nel connet- mento a forma di U presente sul suo corpo verso
tore che va inserito nella scheda bus LX.1202. il condensatore C4.
Nellarticolo abbiamo spiegato che per gestire que- Per fissare il display dovrete inserire nei quattro
sto display bisogna usare un codice di 8 bit, che fori presenti sullo stampato i distanziatori plastici
andr applicato sui piedini DB0 - DB1 - DB2 - DB3 inclusi nel kit, dopodich potrete innestare i termi-
- DB4 - DB5 - DB6 - DB7 (piedini dal numero 7 al nali del display nello zoccolo femmina, facendo en-
numero 14), mentre osservando lo schema elettri- trare i perni dei distanziatori nei fori presenti sullo
co riportato in fig.4 si potr notare che i piedini da stampato del display.
DB0 a DB3 sono collegati a massa e che il se-
gnale entra nei soli piedini da DB4 a DB7.
Questa configurazione stata adottata perch per PROGRAMMI PER LM093
gestire questo display abbiamo usato un codice
4+4 bit. Nel dischetto DF1208 sono riportati due program-
Oltre al display, nello schema elettrico presente mi per utilizzare il display alfanumerico in tutti i
anche un amplificatore operazionale siglato IC1/A; modi possibili.
a questo proposito vi chiederete se tale amplifica-
tore sia indispensabile per far funzionare questo di- Questi due programmi sono denominati:
splay e noi vi rispondiamo che non serve.
Infatti labbiamo inserito soltanto per potervi dimo- DISP093.ASM
strare come sia possibile, con il programma Te- TESTER.ASM
ster, trasformare questo display in un voltmetro.
Dobbiamo subito precisare che nellingresso di A questi due programmi occorrono altri due files
questo operazionale non possibile inserire del- chiamati:
le tensioni superiori ai 5 volt; per poterlo fare sar
necessario applicare sullingresso dei partitori re- TB_CGR01.ASM
sistivi da 1/10 - 1/100. TB_CGR02.ASM
Oltre a questo particolare, dobbiamo anche ricor-
darvi di rispettare la polarit della tensione sullin- Questi due ultimi files TB_CGR sono in pratica del-
gresso, perch se invertirete il positivo con il ne- le tabelle che vi serviranno per utilizzare una di-
gativo sul display appariranno 0 volt. rettiva denominata .input.
Il trimmer R3 collegato al piedino 3 serve per va- Questa direttiva altro non che una istruzione in-
riare la luminosit delle lettere o dei numeri che serita nel file sorgente, che in fase di compilazio-
appariranno nelle diverse caselle. ne richiama una serie di dati contenuti in un file
Tutti i piedini del display e quello duscita dello- diverso dal sorgente.
perazionale vengono collegati al Connettore 1/2
che andr innestato nella scheda bus LX.1202. Quando assemblerete il programma DISP093.A-
DISPLAY

V. INPUT

R5

P1
8021 XL
15 1
C1 C6
R4
R1 P2
R2 DS2
C2
DS1
IC1

R3
C3 C4

DISTANZIATORE
C5

CONN. 1/2
+V 7 6 5

Fig.7 Schema pratico di montaggio della scheda LX.1208. Sul


circuito stampato dei display dovrete saldare il connettore ma-
schio a 15 terminali, che dovrete poi innestare nel circuito stam-
pato LX.1208. 1 2 3 -V

LM 358

Fig.8 Foto dello stampato LX.1208 con sopra gi montati tutti i componenti richiesti. No-
ta = Nel kit, anzich trovare un connettore maschio da 24 poli e due da 4 poli potreste tro-
varne uno solo da 32 terminali, che dovrete tagliare per ottenere i tre pezzi richiesti.
SM, il compilatore andr a ricercare il file: Queste scritte rimarranno visualizzate per circa 3
secondi, dopodich apparir:
TB_CGR01.ASM
[P1] >
e lo inglober al suo interno, formando cos un u- PER PROCEDERE
nico file che si chiamer: DISP093.HEX.
Se non premerete il pulsante P1 vedrete alternar-
Quando assemblerete il programma TESTER.A- si le due scritte sopra riportate con una cadenza di
SM, il compilatore andr a ricercare il file TB_C- circa 1 secondo.
GR02.ASM e lo inglober al suo interno, forman-
do cos un unico file che si chiamer: Se invece premerete il pulsante P1 per pi di 3 se-
TESTER.HEX. condi circa, apparir questa nuova scritta:

Quindi quando assemblerete questi due pro- -NOME-NOME-NOME-


grammi non dovrete assolutamente preoccuparvi -COGNOME-COGNOME
di questi files TB_CGR, perch le operazioni di ri-
cerca e di inserimento vengono eseguite automa- Come noterete, ogni riga occupa un totale di 16 ca-
ticamente. ratteri.
La direttiva chiamata .input simile ad una su-
broutine, con la sola differenza che viene eseguita
Questa scritta rimarr visualizzata sul display per
in fase di compilazione e non durante lesecuzione
circa 6 secondi, dopodich apparir la scritta:
del programma stesso.
LE FUNZIONI
Per terminare aggiungiamo che una volta inserita PREVISTE SONO:
la LX.1208 di questo display alfanumerico nel bus
LX.1202, in questultimo bus non potrete inserire
Anche questa scritta rimarr visualizzata per circa
altre schede, tipo TRIAC o RELE.
6 secondi, dopodich apparir questa scritta:

1-MAIUSC.> minus
Programma DISP093.HEX 2-ROTAZIONE

Questo programma, che utilizza i soli pulsanti P1 Questa rimarr visualizzata per circa 6 secondi,
- P2 presenti nella scheda LX.1208, vi permet- dopodich apparir:
ter di visualizzare il vostro nome e cognome o
qualsiasi altra scritta sul display, a condizione 3-SCOMPOSIZIONE
di utilizzare un massimo di 16 caratteri per ri- 4-VISUAL.CG RAM
ga.
Facciamo presente che necessario considerare e nuovamente vedrete apparire:
gli spazi come caratteri.
[P1] >
Il vostro nome e cognome o una qualsiasi al- PER PROCEDERE
tra scritta, dovr essere scritto allinterno del
programma .ASM nelle righe che vi indichere- Come noterete, sulla base delle scritte apparse, po-
mo. trete ottenere 4 diverse funzioni che sono nume-
Dopo aver scritto le parole che dovranno apparire rate 1-2-3-4.
sul display, dovrete riassemblare il programma ed Solo dopo che saranno apparse tutte le scritte che
infine caricarlo nel micro ST62/E25, che andr in- vi abbiamo sopra indicato, potrete utilizzare il ta-
serito nello zoccolo textool presente nella scheda sto P1 per selezionare una della 4 funzioni.
bus LX.1202. Se non premerete il pulsante P1 vedrete nuova-
Se caricherete nel micro ST62/E25 il programma mente ripetersi allinfinito le stesse scritte.
DISP093.ASM, ovviamente dopo averlo assem- Quando apparir P1 > PER PROCEDERE dovre-
blato in DISP093.HEX, sul display vedrete appari- te tenere premuto questo tasto per almeno 3 se-
re in ordine alcune scritte: condi e apparir la scritta:

N.ELETTRONICA SCELTA FUNZIONE


** DISP093 ** ......[?] [P2] >
A questo punto, utilizzando il tasto P2 potrete sce- stra verso destra, per poi riportarsi sulla prima riga
gliere una della quattro funzioni numerate 1-2-3- scorrendo da destra verso sinistra per 4 volte con-
4. secutive, dopodich riapparir la scritta:

Questa scritta rimarr sui display fino a quando non SCELTA FUNZIONE
premerete il pulsante P2. ......[?] [P2] >
Se terrete premuto per almeno 3 secondi il pul-
sante P2, apparir questa scritta: Se ora premerete il tasto P2 per tre volte conse-
cutive, sceglierete la funzione 3-SCOMPOSIZIO-
SCELTA FUNZIONE NE, quindi quando apparir:
......[1] [P2] >
SCELTA FUNZIONE
Come potete vedere, nelle due parentesi quadre ......[3] [P2] >
sparito il ? ed apparso il numero 1.
Premendo per una seconda volta P2 apparir il dovrete tenere premuto il pulsante P1 per circa 3
numero 2, premendo una terza volta P2 apparir secondi e rilasciandolo vedrete che i caratteri ri-
il numero 3 e premendolo per la quarta volta ap- portati nella sola prima riga cominceranno a scom-
parir il numero 4. porsi, cio vedrete i caratteri della prima riga al-
Fate attenzione a premerlo per la quinta volta, per- lontanarsi ad uno ad uno scorrendo verso destra,
ch se sul display apparir il numero 5 uscirete dal fino a scomparire totalmente, poi li vedrete ritorna-
menu. re da destra verso sinistra fino a ricostruire linte-
ra parola.
Ammesso di voler visualizzare la funzione 1-MAIU- Una volta ricostruiti i 16 caratteri sulla prima riga,
SC.> minus quando appare: nuovamente vedrete apparire la scritta:

SCELTA FUNZIONE SCELTA FUNZIONE


......[1] [P2] > ......[?] [P2] >

dovrete premere per circa 3 secondi il pulsante P1 Se ora premerete il tasto P2 per quattro volte con-
e comparir la scritta: secutive, sceglierete la funzione 4-VISUAL.CG
RAM quindi quando apparir:
-NOME-NOME-NOME-
-COGNOME-COGNOME SCELTA FUNZIONE
......[4] [P2] >
dopo circa 5 secondi vi apparir la stessa scritta
ma in minuscolo, ovvero: dovrete sempre tenere premuto il tasto P1 per al-
meno 3 secondi e sulla prima riga del display ve-
-nome-nome-nome- drete apparire 8 simboli grafici generati apposi-
-cognome-cognome tamente a scopo didattico, pi un cursore non lam-
peggiante.
Tale scritta in minuscolo rester visualizzata per
circa 5 secondi, dopodich vi riapparir nuova- I programmi inseriti nel dischetto DF.1208 servono
mente la scritta: principalmente per farvi vedere come si debbano
scrivere le varie istruzioni per far funzionare que-
SCELTA FUNZIONE sto display alfanumerico.
......[?] [P2] > Solo dopo che avrete preso una certa confi-
denza con questi programmi, potrete modificar-
A questo punto, se premerete il tasto P2 per due li, o prelevare direttamente dalle nostre sor-
volte consecutive, sceglierete la funzione 2-RO- genti tutte le righe che potrebbero interessar-
TAZIONE, quindi quando apparir: vi.
Una modifica molto semplice che potrete appor-
SCELTA FUNZIONE tare quella di far apparire sui display il vostro no-
......[2] [P2] > me e cognome o qualsiasi altra scritta.

tenendo premuto per 3 secondi il tasto P1, vedre- Se sulla prima riga volete far apparire il vostro no-
te apparire un divertente effetto perch il vostro no- me che potrebbe essere ALESSANDRO - MAR-
me partir dalla seconda riga, scorrendo da sini- CO - VINCENZO, ecc. dovrete andare alla riga
N.684 posta allinterno del programma sorgente DI- Sulla prima riga faremo apparire il valore della
SP093.ASM e sostituire la scritta da noi inserita tensione in numero, mentre sulla seconda riga
con il vostro nome. faremo apparire una barra che si allungher di
1 riga ogni 0,1 volt e di 1 quadretto ogni 0,5
Se in corrispondenza della seconda riga volete far volt.
apparire il vostro cognome che potrebbe essere Chi fosse interessato a comprendere come siamo
BIANCHI - ALBERTAZZI - FANTOZZI, ecc., do- riusciti ad ottenere queste due condizioni, dovr
vrete andare alla riga N.685 e sostituire la scritta leggere attentamente il programma TESTER.ASM
da noi inserita con il vostro cognome. e i commenti riportati su ogni riga.
Vogliamo subito far presente che il massimo va-
Nota importante = Qualsiasi cosa scriverete nel- lore di tensione che potremo leggere con questo
le righe 684 e 685, dovrete sempre farlo in carat- voltmetro di soli 5 volt, quindi non applicate
teri maiuscoli e non superare mai i 16 caratteri sullingresso delloperazionale IC1/A tensioni mag-
per riga compresi gli spazi. giori.
Dopo aver eseguito queste modifiche dovrete pre- Per leggere tensioni di 50 volt fondo scala, do-
mere i tasti ALT F, poi portare il cursore sulla riga vrete necessariamente utilizzare dei partitori resi-
SALVA e premere Enter ed infine sulla riga ESCI stivi come illustrato nelle figg.10-11.
e premere Enter.
Dopodich dovrete richiamare il programma La tensione da misurare, applicata sullingresso
LX1208 scrivendo: delloperazionale IC1/A, verr prelevata dal suo
piedino duscita 7 ed inviata allA/D converter pre-
C:\>CD LX1208 poi premere Enter sente allinterno del microprocessore ST6/E25, che
la convertir in un numero decimale compreso tra
e scrivere: 0 e 255.

C:\LX1208>A DISP093.ASM LA/D converter per un valore di tensione di 5 volt


ci d un numero decimale di 255; se dividiamo 255
Nota = Dopo la lettera A non mettete :, perch per 5 otteniamo 51, quindi intuitivo che per un va-
questa A non altri che un programma Batch che lore di tensione di 1 volt lA/D converter ci dar
lancia il compilatore in assembler. un numero decimale di 51 e per un valore di 2 volt
ci dar un numero decimale di 102 e per 3 volt un
Con questa istruzione convertirete automatica- numero decimale di 153.
mente il nostro programma da .ASM in .HEX. Se misurassimo una tensione di 2,5 volt, in teoria
lA/D converter dovrebbe darci il numero 51 x 2,5
Per trasferire questo programma gi compilato in = 127,5, ma poich in pratica non ci dar mai un
.HEX nel microprocessore posto sullinterfaccia numero con la virgola, sulla sua uscita otterremo
LX.1202, dovrete richiamare la directory LX1208 dei numeri variabili molto prossimi a 127, ad e-
e poi scrivere semplicemente: sempio 127-128-128-129-127-129, perch lA/D
converter dellST6 non molto stabile.
C:\LX1208>ST6PGM poi premere Enter
Sommando i 6 numeri del nostro esempio otterre-
A questo punto sul monitor apparir una masche- mo un totale di 768, che diviso per 6 ci dar il va-
ra che vi chieder quale programma desiderate tra- lore medio:
sferire e su quale micro ST6; fornite al computer
le esatte risposte, il vostro programma modificato 768 : 6 = 128
verr memorizzato nel micro ST62/E25.
Dividendo 128 per 51 otterremo:

TESTER.HEX 128 : 51 = 2,50

Con questo programma dimostrativo desideria- Per ottenere una maggiore precisione nel nostro
mo insegnarvi ad utilizzare lA/D converter pre- programma leggeremo i numeri decimali che lA/D
sente allinterno del microprocessore ST6/E25 e converter ci fornir per ben 32 volte, poi una vol-
per farlo abbiamo realizzato con questo display ta sommati li divideremo per 32.
alfanumerico un semplice voltmetro elettroni- Per far apparire il numero 2,5 metteremo il nu-
co utilizzando entrambe le righe presenti nel di- mero 2 in un byte e il numero 5 in un altro by-
splay. te.
R5

P1 10.000 ohm

C6 Fig.9 Il programma TESTER.HEX per-


R4 mette di utilizzare questo display alfa-
P2 numerico in un Voltmetro in grado di mi-
DS2 surare un massimo di 5 volt. Per prova-
re questo Voltmetro potrete procurarvi
DS1
IC1 un trimmer da 10.000 ohm ed una pila
da 4,5 volt.
R3 Ruotando il suo cursore vedrete appari-
C4
re sui display il valore della tensione.
4,5 V.
C5

18.000 ohm

R5
1.000 ohm

50 V.
P1
1.000 ohm
C6
Fig.10 Volendo utilizzare la funzione
R4
Voltmetro per leggere tensioni maggio-
ri, dovrete applicare sullingresso un P2
DS2
partitore resistivo composto da tre sole
resistenze. DS1
IC1
Con questo partitore potrete leggere fi-
no ad un valore massimo di 50 volt.
R3
C4

C5

15.000 ohm
50 V.

R5
2.200 ohm
P1

C6 Fig.11 Utilizzando il partitore resistivo di


R4 fig.10 la lettura potrebbe non risultare
P2 precisa a causa delle tolleranze delle
DS2 resistenze. Per risolvere questo proble-
DS1
ma, potrete utilizzare una sola resisten-
IC1 za ed un trimmer che andr tarato in mo-
do da leggere lesatta tensione applica-
R3
C4
ta sullingresso.

C5
Come vi abbiamo gi spiegato in precedenza, per- massa, lo ruoterete lentamente in senso inverso fi-
ch il display intelligente faccia apparire un qual- no a leggere lesatta tensione applicata sullin-
siasi segno grafico contenuto allinterno della sua gresso.
CGROM, gli deve giungere un numero ben diver- Ammesso di aver scelto una tensione di 28 volt,
so dal 2 e dal 5 inseriti in questi due byte, per cui dovrete ruotare questo trimmer fino a leggere sui
dovremo sommare questi due numeri alla co- display il numero 2,8 volt.
stante 48.
Otterremo cos:
NOTA IMPORTANTE
2 + 48 = 50
5 + 48 = 53 Non invertite la polarit della tensione sullingres-
so delloperazionale IC1/A, perch sui display ve-
Consultando la Tabella N.1 vedremo che il nume- drete sempre apparire 0,0 volt.
ro 50 corrisponde al simbolo grafico 2 ed il nu- Non applicate sullingresso tensioni maggiori di 5
mero 53 al simbolo grafico 5. volt (per pochi istanti lintegrato accetta anche 9
volt), diversamente si potrebbe danneggiare il mi-
Per visualizzare la barra che appare sulla secon- croprocessore ST6/E25.
da riga utilizziamo i due numeri 2 e 5, che abbia- Al programma TESTER.ASM, che funziona solo co-
mo messo in precedenza nei due byte, e con que- me voltmetro per leggere una tensione di 5 volt mas-
sti due numeri andiamo nel file TB_CGR02.ASM simi, non possibile apportare alcuna modifica.
per prelevare i simboli grafici che ci serviranno Questo programma, come gi vi abbiamo accen-
per accendere tutte le caselle interessate. nato, un dimostrativo che vi permetter di vede-
Poich con 5 volt si accendono 10 caselle oriz- re tutte le varie soluzioni che abbiamo adottato per
zontali, ovvio che disponendo di una tensione di far apparire un numero proporzionale alla tensione
2,5 volt si accenderanno solo 5 caselle. e come si utilizzano le tabelle del TB_CGR02.A-
SM e lA/D converter.
Per provare questo voltmetro potrete procurarvi un Come gi saprete, per poter memorizzare il pro-
trimmer da 10.000 ohm, pi una pila da 4,5 volt, gramma TESTER.ASM allinterno del micro ST6,
collegandoli come visibile in fig.9. lo dovrete prima convertire in .HEX e per farlo do-
Ruotando il cursore del trimmer da un estremo vrete digitare:
allaltro, vedrete variare sulla prima riga del display
il numero da 0 volt fino ad un massimo di 4,5 volt C:\>CD LX1208 poi premete Enter
e sulla seconda riga la barra aumentare progres- C:\LX1208>A TESTER.ASM poi premete Enter
sivamente fino a raggiungere un massimo di 9 qua-
dretti. Per poter trasferire il programma convertito in .HEX
sul micro ST6 dovrete semplicemente scrivere:
Volendo utilizzare questo tester per misurare ten-
sioni superiori a 5 volt, dovrete applicare sullin- C:\LX1208>ST6PGM poi premere Enter
gresso un partitore resistivo con i valori riportati in
fig.10 e, in tal modo, otterrete un fondo scala di e rispondere, come gi sapete, a tutte le domande
50 volt. che appariranno sul monitor del computer.
Non possibile utilizzare dei partitori resistivi che KIT ESAURITO
diano dei valori di fondo scala di 10-100-200 volt, vedi LX.1208/N nelle pagine seguenti
perch il programma impostato per leggere un
massimo di 5 volt. COSTO DI REALIZZAZIONE
Come noterete, tra le due cifre rimane sempre in-
serita la virgola, quindi se avete utilizzato il parti- Tutti i componenti necessari per la realizzazione di
tore di fig.10 e sullingresso inserite 18 volt, sul di- questo progetto per Display alfanumerico, che po-
splay apparir il numero 1,8 volt. tete vedere riprodotti in fig.7 (Escluso il disco
Poich le resistenze hanno una loro tolleranza, il DF.1208) ...................................................L.78.500
partitore di fig.10 potrebbe non fornirvi lesatto va-
lore di tensione; per risolvere questo problema la Il programma DF.1208..............................L.12.000
soluzione migliore sarebbe quella di utilizzare lo
schema riprodotto in fig.11. Costo dello stampato LX.1208 .................L.10.000
Per tarare il trimmer potrete prendere una esatta
tensione continua che non risulti maggiore di 50 Ai prezzi riportati, gi comprensivi di IVA, andranno
volt e partendo con il cursore tutto ruotato verso aggiunte le sole spese di spedizione a domicilio.

126
.

IL KIT LX.1208/N con il nuovo DISPLAY WH.1602A

Poich il display alfanumerico LM.093LN non vie- nato, mentre il trimmer R4 collegato al piedino 3
ne pi fabbricato, ci siamo dati da fare per cerca- consente di regolarne il contrasto.
re un sostituto che lo rimpiazzasse nel kit LX.1208.
Per la descrizione dello schema elettrico e per il
Dopo unaccurata ricerca, abbiamo scelto il display montaggio dei componenti sul circuito stampato, ri-
WH.1602A della Hitachi, che equivalente al di- mandiamo a quanto gi descritto nelle pagine pre-
splay LM.093N, eccetto che nella disposizione di cedenti, perch il funzionamento del circuito non
alcuni piedini e nella definizione di alcuni caratteri cambiato.
alfanumerici (vedi tabella nelle pagine seguenti). Per quanto riguarda lelenco componenti e i di-
segni degli schemi elettrico e pratico, tenete in-
Proprio perch la piedinatura del display vece presenti quelli riportati in queste pagine.
WH.1602A non collima perfettamente con quella
del display LM.093N (se confrontate la fig.5 con la
fig.12 vi accorgerete subito che il display della Hi- IL SET dei CARATTERI ALFANUMERICI
tachi ha un piedino in pi), abbiamo pensato noi a
disegnare e a fare incidere un nuovo circuito stam- Nella pagina seguente abbiamo riportato anche la
pato al quale abbiamo dato la sigla LX.1208/N. tabella relativa ai caratteri alfanumerici gestiti dal
display WH.1602A, che, come vi dicevamo, non
In questo modo non incontrerete alcuna difficolt coincide perfettamente con il set di caratteri che ve-
nel realizzare la scheda e soprattutto nel montare niva gestito dal vecchio display. Infatti se la con-
il nuovo display alfanumerico. frontate con la Tabella N.1 di questo articolo, ve-
Inoltre, come siamo soliti fare per tutti i nostri kit, drete che alcuni caratteri sono diversi.
abbiamo gi montato e collaudato questa scheda,
e quindi possiamo assicurarvi che il circuito fun- In particolare, il display WH.1602A non ha tra i suoi
ziona esattamente come funzionava laltro. caratteri le due frecce che nella Tabella N.1 si tro-
vano alle posizioni 126 e 127.
Vale la pena sottolineare che il display WH.1602A
utilizzato, un display LCD alfanumerico compo- Per questo motivo alcune delle istruzioni presenti
sto da due righe di 16 caratteri. nei programmi DISP093.ASM e TESTER.ASM
vanno modificate, come ora vi spieghiamo.
Come vi abbiamo anticipato, rispetto al display
LM.093LN, che aveva solo un piedino per regola- Dopo la modifica, al posto delle frecce alle posi-
re la luminosit, il display WH.1602A ha due con- zioni 126 e 127 della Tabella N.1, appariranno le
trolli: con i collegamenti al positivo di alimentazio- frecce alle posizioni 62 e 60 della tabella del set di
ne e a massa dei piedini 15-16 viene retro illumi- caratteri del display WH.1602A.

Fig.12 Connessioni del display alfa-


numerico WH.1602A. Il microproces-
sore ST6 esterno dialoga con questo
display a 4+4 bit attraverso i piedini
da DB4 a DB7, che fanno capo ai pie-
dini 11-12-13-14 (vedi fig.13). I piedini
da DB0 a DB3, che fanno capo ai pie-
dini dal 7 al 10, vanno collegati a mas-
sa perch non vengono utilizzati.
14 13 12 11 10 9 8 7 6 5 4 3 2 1 16 15
CONTRASTO

KATODO
ENABLE

ANODO
+ 5 V.
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0

Massa
RS

WH 1602A-YYH-EP
.

DISPLAY

6 4 5 7 8 9 10 11 12 13 14 16 15 2 3 1
K A

ENABLE

R/S
R3

R4

DB4
DB5
DB6
DB7
R1 R2 C3

P1 C1 P2 C2

A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C4 C5 C6 C7 NMI + 5 V. GND + 12 V.
CONN. 1 / 2

C4 C5
IC1 - A DS1
5 R5
8
7
6
4 C6 R6 V. INP.
DS2

Fig.13 Schema elettrico del circuito siglato


LX.1208/N con display alfanumerico. Colle-
gando i piedini 16-15 rispettivamente a
massa e al positivo di alimentazione, il di-
splay si retro illumina. Per regolare il con-
trasto, dovete agire sul trimmer R4.
ELENCO COMPONENTI LX.1208/N

+V 7 6 5 R1 = 10.000 ohm 1/4 watt


R2 = 10.000 ohm 1/4 watt
R3 = 4,7 ohm 1/2 watt
R4 = 10.000 ohm trimmer
R5 = 10.000 ohm 1/4 watt
1 2 3 -V R6 = 1 Megaohm 1/4 watt
C1 = 100.000 pF poliestere
LM 358
C2 = 100.000 pF poliestere
C3 = 100.000 pF poliestere
Fig.14 Connessioni viste da sopra dellam- C4 = 100.000 pF poliestere
plificatore operazionale LM.358, siglato C5 = 10 microF. elettrolitico
IC1/A nello schema elettrico di fig.13. Co- C6 = 1 microF. poliestere
me gi spiegato nellarticolo, questo ampli- DS1 = diodo tipo 1N.4150
ficatore non indispensabile al funziona- DS2 = diodo tipo 1N.4150
mento del display, ma stato inserito per IC1 = integrato tipo LM.358
dimostrarvi come sia possibile, con oppor-
DISPLAY = LCD tipo WH.1602A
tune istruzioni di programma (vedi pro-
CONN.1/2 = connettore 24 poli
gramma TESTER.ASM), trasformare il di-
P1 = pulsante
splay in un voltmetro.
P2 = pulsante
.

DISPLAY = WH 1602A

V. INPUT

R6

14 13 12 11 10 9 8 7 6 5 4 3 2 1 16 15
P1
1
C1 C6

R5
R1 P2
DS2
R2
C2
DS1
IC1

R3 R4
C3 C4
14 13 12 11 10 9 8 7 6 5 4 3 2 1 16 15

C5

CONN. 1/2
Fig.15 Schema pratico di montaggio della scheda LX.1208/N. Il montaggio di questo cir-
cuito non presenta particolari difficolt e se rispetterete la polarit del condensatore e-
lettrolitico C5 e dei due diodi al silicio DS1-DS2, il circuito funzioner senza problemi. Sul
lato opposto a quello visibile, vanno saldati i connettori a 4 terminali che, insieme al con-
nettore CONN.1/2, vi serviranno per innestare la scheda nel Bus siglato LX.1202.

Nel programma DISP093.ASM alle righe 672 - 685 e infine sostituire listruzione:
- 692, dovete sostituire listruzione:
.byte 01111111b
.byte 01111110b
con listruzione:
con listruzione:
.byte 00111100b
.byte 00111110b

COSTO di REALIZZAZIONE
Nel programma TESTER.ASM dovete invece an-
dare dopo la riga 454 e nella tabella riportata, so- Costo dei componenti necessari per la realizzazio-
stituire listruzione: ne del kit con display alfanumerico WH.1602A, si-
glato LX.1208/N, visibile in fig.15, escluso solo il
.byte 01111110b dischetto DF.1208
Euro 26,00
con listruzione:
Costo del solo circuito stampato LX.1208/N
.byte 00111110b Euro 5,20

Poi dovete lasciare invariata listruzione: Costo del dischetto DF.1208 con i programmi per
display alfanumerico con micro ST6
.byte 32,32,32 Euro 6,20
.
Quando si scrivono programmi per qualsiasi mi- cucina e quella della camera da letto e se non in-
croprocessore anche i pi esperti possono com- dichiamo nel programma quale porta deve essere
mettere degli errori di sintassi oppure logici. aperta, si aprir una porta qualsiasi e non quella
I primi, cio quelli di sintassi, vengono gi rilevati dingresso come noi volevamo.
in fase di compilazione, perci abbastanza faci-
le scoprirli e correggerli; i secondi, cio quelli logi- Un emulatore ci offre parecchi vantaggi.
ci, possono essere scoperti solo se si dispone di Prima di tutto quello di non dover pi acquistare un
un emulatore real-time. certo numero di ST6 riprogrammabili e, poich il
Se non si possiede un emulatore il solo sistema loro prezzo salito alle stelle, si risparmier una
per verificare che il programma risulti corretto cifra considerevole.
quello di trasferirlo in un micro ST6 riprogramma- Inoltre potendo controllare prima il programma, non
bile, cio provvisto di una finestra. si perder del tempo per programmarli, cancellarli
Se, dopo averlo collocato nel circuito che dovr ge- e riprogrammarli.
stire, si verifica che non funziona, bisogna ricon-
trollare il programma istruzione per istruzione, Infatti dopo aver eseguito un test completo sul vo-
correggere gli errori commessi, sempre che si rie- stro programma, se non rileverete delle anomalie
sca a trovarli, ricompilare il programma con las- potrete tranquillamente trasferirlo su un ST6 non
sembler, cancellare lST6, ed infine riprogram- riprogrammabile perch, avendolo gi testato,
marlo e testarlo nuovamente, perch non det- avrete la matematica certezza che funzioner.

SOFTWARE emulatore per


to che non vi siano altri errori che potrebbero es- Per questi motivi i softwaristi e gli hobbisti sono al-
sere sfuggiti ad un primo controllo. la ricerca di un emulatore corredato di software
che risulti facile da usare, molto economico e che
Non inoltre da escludere che nonostante la buo- permetta unemulazione completa ed in tempo rea-
na volont non si riesca a capire in quale istruzio- le di un micro ST6.
ne presente lerrore e per scoprirlo ci potrebbe
volere molto tempo e pazienza. Per risolvere questo problema abbiamo acquistato
tutti gli emulatori per ST6 e relativo software che
Con un emulatore risulta molto pi facile ed anche siamo riusciti a reperire sul mercato, poi ad uno ad
meno costoso programmare qualsiasi ST6, perch uno li abbiamo testati inserendo apposta nei no-
si pu controllare passo per passo ogni istruzio- stri programmi degli errori con diversi livelli di dif-
ne mentre viene eseguita. In questo modo pos- ficolt per verificare con quale grado di facilit ci
sibile capire dove e perch si generato lerrore. consentivano di individuarli.
Tra tutti quelli provati ne abbiamo trovato uno che,
Ad esempio, potremmo aver scritto un programma a nostro avviso, molto valido ed evoluto sia co-
che ad un tempo prefissato deve accendere una me hardware sia come software.
lampadina, e solo dopo aver programmato lST6 ci Si tratta di quello della SOFTEC di Azzano Deci-
accorgiamo che questo tempo risulta dimezzato o mo, in provincia di Pordenone.
raddoppiato perch non abbiamo tenuto conto Il suo software inoltre perfettamente compatibile
della frequenza del quarzo oppure abbiamo fatto con il sistema operativo Windows 3.1 e precedenti
una somma anzich una moltiplicazione. ed anche con il pi recente Windows.95, laddove
molti altri software presentano invece dei problemi.
Oppure potremmo aver scritto un programma per Nota: Il pacchetto non funziona sotto DOS.
svolgere una semplice funzione, ad esempio:
Utilizzando il software possibile risolvere l80%
- se suona il campanello dei problemi relativi alla programmazione.
- vai ad aprire la porta Noi vi spiegheremo come deve essere usato per
controllare passo per passo ogni istruzione e per
ma se non abbiamo tenuto presente che in casa ci scoprire tutti gli errori logici che potreste aver com-
sono diverse porte, quella dingresso, quella della messo nello scrivere un programma.
TESTARE i micro ST6
Con il software emulatore della SOFTEC riuscirete a programmare
senza difficolt tutti i micro della serie ST6210/15/20/25 perch se com-
metterete qualche errore potrete rintracciarlo e correggerlo. Questo
software funziona sotto Windows 3.1 e sotto Windows 95.

Anche se supponiamo che tutti sappiano gi come


trasferire un programma da un floppy sullHard-Di-
sk, riteniamo ugualmente utile ricordare queste po-
che istruzioni.

INSTALLARE il SOFTWARE
sotto WINDOWS 3.1

Se nel vostro computer avete installato Windows


3.1 o una versione precedente, dopo aver inserito
il dischetto del software DSE622 nel suo Drive en-
trate in Program Manager, poi portate il cursore in
Fig.1 Per installare il DSE inserite il nome.
alto a sinistra sulla scritta File e cliccate, quindi an-
date sulla scritta Esegui, cliccate nuovamente e
quando appare la finestra di dialogo digitate:

A:\setup poi cliccate su OK

In questo modo il software DSE622 verr trasferi-


to dal floppy nellHard-Disk.

Quando appare la finestra Name and Company


Fig.2 Messaggio di fine installazione. (vedi fig.1) inserite il vostro nome poi cliccate sulla
scritta Continue per completare linstallazione.
Ad installazione avvenuta apparir la finestra di Selezionate il comando copia e vedrete apparire
fig.2: qui cliccate sulla scritta OK ed apparir la fi- la finestra di dialogo di fig.8, in cui dovete specifi-
nestra di fig.3. care dove volete copiare il file atest.asm.

Portate il cursore sulla finestra in basso e scrivete:

C:\ST6

poi andate sulla scritta OK e cliccate.


Tornerete cos alla finestra di fig.6.
Fig.3 Finestra del Real Time Emulator.
Nota: vi abbiamo fatto copiare nella directory ST6
questo file, perch tutti i precedenti programmi in-
Portate il cursore in alto a sinistra nel quadrettino seriti nel dischetto DF.1170, contenenti il softwa-
con il segno e cliccate per far apparire la finestra re di sviluppo dellST6 della SGS-Thomson, pre-
di fig.4. vedevano linstallazione in questa directory.
Ora portate il cursore sulla scritta Chiudi e clicca-
te in modo che compaia la finestra del: Ripetendo i passaggi appena descritti dovete ora
copiare nella directory ST6 anche il file btest.asm.
Program Manager di Windows 3.1
Al contrario non dovete assolutamente copiare il
terzo file setup.exe, perch questo programma
gi stato installato.

Per uscire da File Manager cliccate in alto a sini-


stra su File e selezionate la scritta Esci.

Fig.4 Per chiudere potete usare CTRL+F4.

A questo punto andate con il cursore sul simbolo


di File Manager (vedi fig.5) e cliccate, quindi an- Fig.6 Contenuto del dischetto A.
date sul simbolo dellunit floppy disk A (riporta-
to in alto sulla sinistra) e cliccate nuovamente.
Appariranno cos sulla destra del video queste tre
scritte (vedi fig.6):

atest.asm
btest.asm
setup.exe

Ora dovete trasferire nellHard-Disk i due soli files


atest.asm e btest.asm, perci selezionate con il
cursore la scritta atest.asm, andate sulla scritta Fi-
le posta in alto sulla sinistra e cliccate in modo che
Fig.7 Cliccate sulla scritta COPIA.
appaia la finestra di fig.7.

Fig.8 Copiate il file ATEST.ASM in C:\ST6.


Fig.5 Icona di File Manager in Windows.
Installare il SOFTWARE Quando appare la finestra visibile in fig.11, porta-
sotto WINDOWS 95 te il cursore in alto a destra sullicona con il dise-
gno X e cliccate per tornare nella finestra princi-
Se nel vostro computer avete installato Windows pale di Windows 95 (vedi fig.12).
95, dopo aver inserito il dischetto con il software
DSE622 nel suo Drive, cliccate sulla scritta Avvio
posta in basso, quindi andate sulla scritta Esegui
e cliccate nuovamente.
Quando appare la finestra di dialogo dovete digi-
tare:

A:\setup poi cliccate su OK

Il software DSE622 verr direttamente installato dal


floppy nellHard-Disk.

Quando appare la finestra Name and Company


(vedi fig.9) inserite il vostro nome, quindi andate
sulla scritta Continue e cliccate. Fig.11 Per tornare alla finestra principale di
Windows 95 cliccate sul simbolo X.
Ad installazione avvenuta apparir la finestra di
fig.10: ora andate sulla scritta OK e cliccate.

Fig.12 Dalla finestra principale di Windows


95 cliccate su Avvio.

Ora cliccando sulla scritta Avvio posta in basso at-


tiverete un sottomenu nel quale dovrete selezio-
Fig.9 Quando appare la finestra dellinstal- nare la scritta Programmi e poi Gestione risorse.
lazione del programma, inserite il vostro Dopo aver selezionato anche questa scritta appa-
nome e cliccate su Continue. rir la finestra di dialogo di fig.13.

Fig.13 Cliccando sulla scritta Avvio, visibi-


le in fig.12, e seguendo le istruzioni ripor-
tate nel testo entrate nella finestra Gestio-
Fig.10 Quando linstallazione sar comple- ne Risorse di Windows 95.
tata comparir un messaggio. Per conti-
nuare cliccate su OK.
Cliccate sulla freccia che appare nella piccola fi-
nestra in alto al cui interno scritto C: per veder
apparire unaltra piccola finestra nella quale dove-
te selezionare la scritta:

Floppy da 3.5 pollici A:

Dopo aver cliccato (vedi fig.14), apparir sulla de-


stra il contenuto del dischetto floppy, cio i tre fi-
les:
Fig.16 Selezionate la directory ST6.
Atest.asm
Btest.asm
Setup.exe

A questo punto dovete trasferire nellHard-Disk so-


lo i files Atest.asm e Btest.asm.
Per prima cosa selezionate il file Atest.asm, poi
andate sullicona Copia (vedi fig.15) e cliccate.

Fig.17 Copiate il file con licona INCOLLA.

I FILES ATEST e BTEST

I programmi che vi abbiamo fatto copiare nella di-


rectory ST6 ci sono serviti per nostri test di simu-
lazione e ve li proponiamo in modo che possiate im-
Fig.14 Contenuto del dischetto A. parare ad usare questo software di simulazione.
Il programma ATEST stato concepito in modo da
usare i quattro piedini PA0 - PA1 - PA2 - PA3 di
porta A come ingressi ed i piedini PB0 - PB1 -
PB2 - PB3 di porta B come uscite.

Applicando su uno di questi quattro ingressi un li-


vello logico 1, tramite un interruttore o un micro-
switch ecc., vorremmo che apparisse sulla corri-
Fig.15 Andate su COPIA e cliccate. spondente uscita un livello logico 1 da utilizza-
re per accendere un diodo led oppure per pola-
rizzare la Base di un transistor o per eccitare un
Poich questo file deve essere copiato nella di- rel o una sirena.
rectory ST6, nella finestra a sinistra (vedi fig.16)
cercate con il mouse la scritta ST6, quindi fermate Il programma BTEST differisce dal precedente so-
il cursore su questa riga e cliccate. lo perch vi abbiamo inserito alcuni errori, che ci
permettono di mostrarvi come il software vi aiuti
Per il momento avete selezionato la directory, ma ad individuarli.
il file non ancora stato trasferito.
COME lavorare con il SOFTWARE DSE622
Per trasferirlo andate sullicona incolla (vedi fig.17)
e cliccate. Come abbiamo gi accennato, anche senza la
scheda emulatrice, che la SOFTEC in grado di
Ripetete la procedura visibile in fig.14 per copiare fornire ad un prezzo molto competitivo, questo
anche il secondo file Btest.asm. software permette di controllare in modo traspa-
rente tutte le istruzioni di qualsiasi programma, aiu-
Nota: non copiate il file setup.exe perch gi in- tando cos nel loro lavoro tutti i programmatori ed
stallato. in particolar modo quelli che da poco hanno inizia-
to a programmare.
Per uscire da questa finestra andate in alto a sini- Quando si lancia il programma DSE622, il softwa-
stra su File, poi portate il cursore su Chiudi oppu- re testa se sulluscita della porta COM2 collega-
re pigiate i tasti ALT+F4. ta la scheda emulatrice della SOFTEC.
Ovviamente se non la trova segnala ERRORE Prima di proseguire riportiamo il significato di al-
(vedi fig.18), ma di questo non dovete assoluta- cune parole che sono spesso richiamate nellarti-
mente preoccuparvi. colo.

Infatti dei tre tasti selezionabili in questa finestra, cliccare - definiamo cos lazione che si effettua
Retry - Demo - Parameters, baster cliccare sul premendo il tasto del Mouse sulla scritta o icona
tasto Demo per iniziare a testare il programma. indicata.

project - chiamiamo con questa parola tutti i files


con estensione .PRJ che, oltre le caratteristiche del
programma, contengono le specifiche definite con
il software simulatore per testare il programma
stesso.

source/file - chiamiamo con questa parola tutti i


Fig.18 Se non avete la scheda d errore.
programmi gi assemblati riconoscibili dallesten-
sione .HEX.
Se cliccate sul tasto Parameters apparir la fine- simulazione - chiamiamo con questa parola lese-
stra di fig.19, che, se un domani lacquisterete, vi cuzione dei test dei programmi con lausilio del
permette di indicare al computer su quale porta se- software DS622, senza lutilizzo dellHardware
riale avete collegato la scheda emulatrice. dellemulatore.
Quando sarete in questa finestra vi consigliamo di variabili - chiamiamo con questa parola le defini-
cambiare la velocit di esecuzione (Baud Rate), zioni degli indirizzi di memoria Data Space.
e, potendo scegliere tra 9.600 - 19.200 - 28.800 -
57.600 - 115.200 Baud, vi suggeriamo di sceglie- COME creare la LIBRERIA per lST6
re la massima velocit, cio 115.200 Baud.
Digitate perci questo numero poi cliccate sulla Quando sul monitor appare la finestra con i menu
scritta OK. (vedi fig.20), per creare la libreria cliccate sulla
scritta Configure e vedrete apparire la piccola fi-
nestra visibile in fig.21.

- Cliccate sulla riga Tools per far apparire la fine-


stra di dialogo visibile in fig.22.

Fig.19 Scegliete la COM e i Baud Rate.

Quando appare la finestra principale del software


di simulazione (vedi fig.20) si possono gi inizia-
Fig.21 Finestra per creare la libreria.
re a testare tutti i programmi.

Fig.20 Finestra principale della SOFTEC. Fig.22 Finestra di dialogo TOOLS.


- Cliccate sulla scritta Add per far apparire la fine- Definite tutte le specifiche richieste, tornate al me-
stra di dialogo di fig.23. nu principale (vedi fig.20) cliccando su OK.

In questo modo vi abbiamo fatto inserire nella li-


breria il programma ST6\ST6.EXE, che gi da tem-
po vi abbiamo fornito. Con questo programma po-
trete assemblare, scrivere, correggere, ricercare un
programma, come vi abbiamo spiegato nelle lezio-
ni precedenti (vedi riviste N.172/173 - 174 -
175/176).

COMPILARE in ASSEMBLER
Fig.23 Finestra dialogo ADD TOOL. il programma ATEST.ASM

Quando sul monitor appare la finestra con i menu


- Nel riquadro a destra cliccate sulla riga C:\ e, sem-
(vedi fig.20) selezionate la riga Tools.
pre in questo riquadro, ricercate la directory ST6,
Nella piccola finestra che appare (vedi fig.26) clic-
quindi andate con il cursore su questa riga e clic-
cate sulla scritta ST6 e cos apparir la finestra dei
cate.
programmi di sviluppo dellST6, visibile in fig.27.
- Nel riquadro a sinistra cercate il programma
Per aprire la finestra dei files pigiate il tasto F3 op-
ST6.EXE (vedi fig.24) e selezionatelo, poi uscite
pure andate sulla scritta OPEN e cliccate (vedi
cliccando su OK.
fig.28).
In questo modo nel riquadro Command Line (ve-
Ora cercate il programma:
di fig.25) apparir: C:\ST6\ST6.EXE
atest.asm
- Nella riga Menu Title dovete digitare: ST6
e quando lavete trovato cliccate sulla scritta, poi
- Nella terza riga, Arguments (vedi fig.25), dovete
andate su OPEN e cliccate nuovamente.
digitare: $2
Appariranno cos sul monitor tutte le istruzioni di
questo programma (vedi fig.29).

A questo punto portate il cursore sulla scritta ST6


(prima riga in alto) e cliccate.
Sotto questa scritta si aprir una finestra (vedi
fig.30) con il cursore gi posizionato sulla parola
Assembla quindi cliccate.

Durante la compilazione in assembler verranno


creati questi files:
Fig.24 Selezionate il programma ST6.EXE.
ATEST.HEX
ATEST.SYM
ATEST.DSD

Per chi ancora non conoscesse il significato di que-


ste estensioni, lo accenniamo qui brevemente:

.HEX - programma eseguibile in formato Intel-Hex.

.SYM - file contenente le definizioni delle etichet-


te di salto ed il relativo indirizzo di memoria Pro-
gram Space

.DSD - file contenente le definizioni delle variabi-


Fig.25 Digitate nelle righe quanto appare. li, le loro caratteristiche ed il relativo indirizzo di me-
moria Data Space.
Completata la compilazione potete premere un
qualsiasi tasto per rientrare nellEditor dellST6, e
quando apparir la finestra di fig.29 cliccate sulla
scritta ALT-F3 oppure premete i tasti ALT+F3.
Apparir unaltra finestra (vedi fig.27) in cui dovre-
Fig.26 Cliccate sul sottomenu ST6 di Tools. te digitare Alt X per uscire dal programma ST6 e
rientrare automaticamente nel software DS622.

Quando appariranno i menu del DS622 selezio-


nate il menu Project e, nella finestra che appare
visibile in fig.31, andate sulla scritta New Project
e cliccate.

Questa operazione serve per creare il file con e-


stensione .PRJ, che verr utilizzato dal simulato-
re per testare il programma.

Fig.27 Finestra di sviluppo per micro ST6. Quando appare la finestra di fig.32, digitate nella
riga Project name il nome del file ATEST (non
necessario riportare dopo il nome lestensione
.PRJ).
Tenete presente che potete anche cambiare nome
al file project, cio dargli un nome differente dal
source file.
In altre parole potrete ad esempio cambiare il no-
me ATEST in BAUBAU o PLUTO, ma se volete e-
vitare che un domani non vi ricordiate pi quale no-
me avevate scelto, vi consigliamo di mantenere lo
stesso nome del programma assemblato, cio nel
nostro caso ATEST.
Dopo aver digitato il nome portate il cursore sulla
parola Create (vedi fig.33) e cliccate.
Fig.28 Aprite un programma pigiando F3.

Fig.31 Comando per creare il file .PRJ.

Fig.29 Vedrete sul monitor le istruzioni.


Fig.32 Digitate il nome del project.

Fig.30 Cliccate sul sottomenu Assembla. Fig.33 Scegliete Create e vedrete la fig.34.
Apparir la finestra di dialogo Edit Project (vedi In questo modo indicate al programma di visualiz-
fig.34) in cui molto importante inserire le specifi- zare i soli files con estensione .HEX.
che richieste senza commettere errori.
A questo punto cliccate sulla scritta Browse in mo-
do che appaia la finestra di dialogo di fig.38.

Nel riquadro posto a destra cliccate sulla riga C:\,


poi cercate la scritta C:\ST6 e quando lavete tro-
vata selezionatela cliccando.
Nel riquadro a sinistra appariranno tutti i files con
estensione .HEX.

Cercate tra questi la scritta ATEST.HEX (vedi


Fig.34 Digitate le specifiche richieste. fig.39), cliccate su questa riga, poi uscite cliccan-
do su OK. In questo modo nel riquadro Filename
Portate il cursore nella finestra Device e cliccando (vedi fig.40) apparir la scritta:
la freccia in gi cercate la sigla del micro ST6 che
volete utilizzare. Ammesso che questo sia un C:\ST6\ATEST. HEX
ST6210 andate sulla riga ST6210 (vedi fig.35) e
cliccate.

Fig.35 Scegliete il nome del micro usato.

Ora portate il cursore nella finestra Frequency (ve-


di fig.36) dove potete selezionare la frequenza del Fig.38 Finestra di dialogo Browse.
quarzo utilizzato per il clock del micro scegliendo
tra 8 - 4 - 2 - 1 MHz.
Nota: Se non possedete la scheda emulatrice del-
la Softec scegliete a caso una di queste quattro
frequenze.

Per completare i dati da inserire in questa finestra


cliccate nel cerchietto accanto alla scritta Intel-Hex
(vedi fig.37) cosicch apparir un punto.

Fig.39 Quando siete nella finestra Browse,


selezionate il file ATEST.EXE.

Fig.36 Scegliete la frequenza del quarzo. Fig.40 Nel riga Filename apparir il nome
del file selezionato nella finestra Browse.

Ora potete passare al Debug Information (vedi


fig.34) e se allinterno del cerchietto posto a sini-
Fig.37 Con Intel-Hex vedrete i file .EXE. stra della scritta ST format trovate gi un punto
(vedi fig.42) non dovrete cliccare.
Se per errore cliccate allinterno del cerchietto po-
sto a sinistra della scritta None facendo apparire
un punto, durante lesecuzione del programma
non riuscirete a vedere i nomi delle variabili o
delle etichette utilizzate, quindi vi sar molto pi
difficile controllare passo per passo il programma.

Ora cliccate sulla scritta Modify per far apparire la


finestra di fig.41 che ha in evidenza questa scritta:
Fig.41 Se siete in simulazione, il WTD,
Hardware Watchdog Activazion, non serve. WTD = Hardware Watchdog Activazion

Siccome ci troviamo in simulazione, questa sele-


zione non serve perci portate il cursore su OK e
cliccate per far apparire la finestra di fig.42.

A questo punto cliccando sulla scritta OK verr


creato il Project ATEST.PRJ nella directory
DES622 e sarete pronti per testare il programma
(vedi fig.45).

Se sul video appare invece una di queste scritte:

Fig.42 Per creare un file con estensione source file not found
.PRJ, cliccate sulla scritta OK. symbol table file not found
debugger file not found

potreste aver involontariamente cancellato dei fi-


les di compilazione. Per rigenerarli dovete cliccare
su OK per far riapparire la finestra di fig.43.

Ora dovete cliccare nuovamente sulla scritta Tools


e ripetere tutte le operazioni visualizzate dalla fig.20
alla fig.29 e vi ritroverete nella finestra visibile in
fig.27.
Per uscire digitate Alt+X e sul video vedrete ap-
parire la finestra di fig.44.
Cliccando su SI potrete vedere la finestra di fig.45
con tutti i dati e le istruzioni corrette.

Fig.43 Nella videata principale del DSE622


vengono attivate tre finestre.

Fig.44 Dalla finestra di fig.27 si passa con


ALT+X a questa finestra. Per andare nella
finestra di fig.45 cliccate su SI.
Fig.45 La finestra per testare il programma
appare sullo schermo cos suddivisa.
Se invece appare la scritta:

C:\ST6\ATEST.HEX emulation buffer overflow

significa che avete scritto il programma per un tipo


di micro ST6 diverso da quello selezionato nella ri-
ga del Device (vedi fig.35).
Ad esempio potreste aver scritto un programma per
il micro ST62/10 ed aver inserito nel Device il mi-
cro ST62/25 o viceversa. Fig.47 Aprite la finestra Code-Memory.
In presenza di questo errore cliccate su OK e, quan-
do appare la finestra di fig.43, selezionate il menu
Project e cliccate su Edit project (vedi fig.46).
Vi ritroverete nella finestra di fig.35 dove potrete
correggere la scritta corrispondente alla riga Devi-
ce digitando la sigla corretta del micro utilizzato.
Per uscire cliccate su OK.

Fig.48 Aprite la finestra Stack-Window.

Fig.46 Finestra per correggere la fig.35.

Quando apparir la finestra di fig.45 sarete pronti


per effettuare la simulazione del programma A-
TEST.HEX utilizzando il file Projet ATEST.PRJ.

Prima di proseguire necessario che vi spieghia- Fig.49 Aprite la finestra Watch.


mo cosa contengono le 3 finestre visibili in fig.45.

Nella finestra Disassembler, sotto le due colonne


Label e Mnemonic, avete le istruzioni del pro-
gramma da testare in formato leggibile.
Nelle colonne Add e Opcode appaiono le mede-
sime istruzioni in formato Intel.Hex.

Nella finestra Register appaiono tutti i registri, lo


stack level, gli stati dei tre flags ed il valore del
Program Counter.

Nella finestra Data appare il contenuto del Data


Memory Space del micro, cio il contenuto delle
variabili, dei registri e della Data Rom Windows
definiti in questo programma. Fig.50 Sul video appaiono altre finestre.

Avendo sottocchio tutte queste finestre sarete in


grado di controllare passo x passo in simulazio- Perci dopo aver portato il cursore sulla scritta Win-
ne tutti i vostri programmi. dow posta in alto (vedi fig.47) cliccate e nella fi-
Prima di iniziare il controllo, a nostro parere ne- nestra che appare selezionate la riga Code Me-
cessario configurare ulteriormente il software mory.
DS622 cos da vedere sul monitor in tempo reale
anche altre funzioni che potrebbero risultarvi mol- Cliccate nuovamente sulla scritta Window e sele-
to utili. zionate la scritta Stack Windows (vedi fig.48).
Ritornate nuovamente a cliccare sulla scritta Win- In questo modo possibile eseguire pi subroutine,
dows e selezionate la riga Watch (vedi fig.49). una allinterno dellaltra, fino ad un massimo di 6.
Il sottomenu di Window sparir.
La finestra Code Memory permette di visualiz-
In questo modo alle finestre che gi apparivano nel- zare in esadecimale il contenuto della Program
la fig.45 si aggiungono 3 supplementari finestre Memory Space, cio la memoria del micro in cui
operative (vedi fig.50), e cio: sono contenute le istruzioni del programma sot-
to test.
Stack
Code Memory La finestra Watch, che inizialmente vuota, ser-
Watch ve per inserire, come poi vi spiegheremo, le va-
riabili delle quali ci interessa controllare il conte-
Vi consigliamo di rimpicciolire e spostare le finestre nuto per vedere come questo si modifica durante
(vedi lesempio riportato in fig.51) in modo da ave- lesecuzione del programma.
re sempre sottocchio tutte le specifiche relative al-
la programmazione di qualsiasi micro ST6. Se di queste tre finestre volete che ne appaia una
sola o due, dovete annullare una delle operazioni
riportate nelle figg.47-48-49.

ESEMPI di EMULAZIONE

Le prime volte che userete il software simulatore


DSE622 vi consigliamo di stampare il listato del
programma che volete testare (nel nostro esem-
pio ATEST.ASM) per poter confrontare le istruzio-
ni stampate con quelle che appariranno sul moni-
tor.
Se avete spento e riacceso il computer, per richia-
mare il programma ATEST gi creato come file
project, che ora si chiamer quindi ATEST.PRJ,
dovrete cliccare sullicona apri file (vedi fig.52).
Fig.51 Vi suggeriamo di rimpicciolire e spo-
stare tutte le finestre come visibile in que-
sta figura.

Dopo aver posizionato le finestre nei punti che ri-


tenete pi opportuni, tutte le volte che richiamere- Fig.52 Cliccando sullicona Apri File potre-
te il file ATEST.PRJ o altri files con la stessa e- te aprire il file ATEST.PRJ.
stensione, le finestre riappariranno dove le aveva-
te posizionate.
Nella finestra di dialogo che appare, sotto il Nome
La finestra Stack permette di visualizzare in tem- file ci sar la scritta *.PRJ e nella finestra sotto-
po reale il valore dei suoi 6 registri. stante il solo file ATEST.PRJ, perch per ora sta-
to creato un solo project.
Se nel corso del programma viene eseguita listru- Man mano che creerete files con estensione .PRJ
zione Call (vedi rivista N.174) o viene attivato un troverete tutti i loro nomi in questa finestra.
Interrupt (vedi rivista N.175/176), il contenuto dei
primi 5 registri di Stack viene immediatamente Cliccate sul nome del file desiderato quindi uscite
shiftato di un livello superiore , vale a dire che il da questa finestra cliccando su OK. Apparir la fi-
contenuto del 5 registro viene passato al 6, il con- nestra visibile in fig. 51.
tenuto del 4 registro viene passato al 5 e cos via.
Sullultima riga visibile della finestra Disassembler
A questo punto nel 1 registro di Stack viene me- (vedi fig.53) potete vedere una riga blu evidenzia-
morizzato il contenuto del Program Counter, cio ta da una freccia rossa.
lindirizzo di ritorno della subroutine richiamata nel-
la Call (istruzione Ret) o nellInterrupt (istruzione Nota: la freccia rossa mette in evidenza la prima
Reti), come appare visibile in fig.89. istruzione che il programma eseguir.
Le righe sopra quella evidenziata in blu sono quel-
le che abbiamo definito nel programma ATEST per
i vettori di interrupts.

Nella finestra Register di fig.54 appare lo Stack le-


vel, i tre Flags NORM - INT - NMI tutti a livello lo-
gico 0, ed il PC (Program Counter) posizionato sul
valore esadecimale FFEH (come gi sapete la let-
tera H significa esadecimale), che corrisponde
Fig.53 La freccia mostra da dove si parte. allindirizzo della prima istruzione eseguibile (vedi
la finestra Disassembler di fig.53).

Per far partire il programma in modo che ogni i-


struzione avanzi passo x passo dovete portare il
cursore sullicona di fig.55 e cliccare.

Ogni volta che cliccherete su questa icona il pro-


gramma eseguir una sola istruzione e questo vi
consentir di controllarlo riga per riga.

Come vi spiegheremo tra poco, possibile ese-


guire anche pi istruzioni per ogni passo oppure
Fig.54 Finestra Registers. lanciare unesecuzione in automatico.

La prima istruzione che il programma ATEST e-


segue quella riportata allindirizzo FFEH, come
appare in fig.53.

INSERIRE una VARIABILE


Fig.55 Icona per avanzare passo/passo. nella finestra WATCH

Poich potrebbe risultare utile controllare lo stato


dei piedini della porta A di entrata (input) e quello
dei piedini della porta B di uscita (output), scri-
vendo nella finestra Watch le definizioni di queste
variabili potrete averle sempre sottocchio.
Fig.56 Aprite la fig.57 con Add Watch. In questo modo sar pi facile vedere come cam-
biano man mano che fate avanzare il programma.

Per visualizzare le due porte nella finestra Watch


dovete eseguire queste semplici operazioni:

- Andate con il cursore nella finestra Watch e clic-


cate per evidenziare questa finestra.
Fig.57 Per le variabili cliccate sulla freccia.
- Come potete notare, nella barra dei menu posta
in alto, tra le scritte Tools e Configure, appare la
scritta Watch che vi permette di accedere ad un
sottomenu dedicato a questa finestra.

Tra le scritte Tools e Configure appare infatti di


volta in volta il menu relativo alla finestra posta in
primo piano.

Fig.58 Selezionate la variabile che volete. - Cliccate sulla scritta Watch e selezionate la scrit-
ta Add Watch (vedi fig.56) in modo da far appari-
re la finestra di dialogo visibile in fig.57.
- Andate con il cursore sulla freccia posta a destra
della scritta Variable e vedrete apparire in ordine
alfabetico lelenco delle variabili presenti nel pro-
gramma ATEST (vedi fig.58).

Cliccate su port_a, poi andate su ADD e qui clic-


cate. In questo modo nella finestra Watch apparir
la variabile port_a con lindirizzo ADD di Data
Fig.59 Esempio della Variabile port_a.
Space, il valore esadecimale - Hex ed il valore de-
cimale - Dec (vedi fig.59).

Poich ci interessa controllare anche i valori della


porta B, dovrete ripetere tutte le operazione ripor-
tate nelle figg.56-57-58, quindi selezionare la va-
riabile port_b.
Cliccando poi su ADD nella finestra Watch appa-
riranno i dati della port_b (vedi fig.60).
Fig.60 Esempio della Variabile port_b.
COME INSERIRE un BREAKPOINT

Unaltra operazione che dovete imparare come


attivare un breakpoint.
Attivare un breakpoint significa mettere un punto
di blocco ad unistruzione del programma in modo
che durante la simulazione si fermi su quella riga.

Ammesso che vogliate inserire un breakpoint


sullultima riga in basso in cui riportata listru-
zione (vedi fig.61):

898 0D D4 00 ldi tscr,00H

dovrete portare il cursore su questa riga e clicca-


re due volte. Vedrete cos apparire sul monitor la
finestra di comando visibile in fig.62. Fig.61 Finestre per testare il programma.
Cliccate sulla scritta Toggle Breakpoint e a sini-
stra della riga selezionata comparir un punto e-
sclamativo che vi segnala che su quella riga sta-
to attivato il breakpoint (vedi fig.63).

COME usare il BREAKPOINT

Come gi vi abbiamo accennato, il breakpoint ser-


ve per fermare il programma sulla riga di istruzio- Fig.62 Per attivare un Breakpoint.
ne che avete marcato ogni volta che verr lancia-
ta una simulazione in modo automatico o a pas-
si multipli.
Potete mettere quanti breakpoint volete, cio 3 -
5 - 14 - 20 ecc.
sottinteso che quando il programma si sar fer-
mato su un breakpoint per proseguire dovrete nuo-
vamente cliccare sullicona passo per passo o a
passi multipli oppure sullesecuzione automatica.
Per togliere il breakpoint (ma ora non toglietelo
perch ve lo faremo usare per fare un po di prati-
ca) dovrete andare sulla riga interessata e clicca- Fig.63 Dove c ! attivato un Breakpoint.
re due volte, poi nella finestra che appare dovre-
te andare sulla scritta Toggle Breakpoint (vedi Poich lindirizzo di port_b C1, nella prima co-
fig.62) e cliccare. lonna dovrete cercare lindirizzo di memoria C0,
in questo modo il breakpoint verr eliminato dalla poi, prendendo come riferimento il righello in gri-
riga in cui in precedenza era stato inserito. gio, scendete dal valore esadecimale 01 fino ad in-
contrare la riga C0, come si farebbe con una Ta-
Se per errore andate sulla scritta Cancell e clic- vola Pitagorica, e cos troverete il valore 0F.
cate non toglierete il breakpoint, ma farete solo
sparire la finestra di fig.62. Portate il cursore su 0F poi cliccate 2 volte e ve-
drete apparire la finestra di dialogo Edit data ri-
ESECUZIONE in AUTOMATICO portata in fig.65.
Cliccando sulla scritta Bits apparir sullo schermo
Per far avanzare in modo automatico le istruzioni la finestra di dialogo di Port B Data Register di
senza cliccare tutte le volte il tasto del passo-pas- fig.66.
so riportato in fig.55, dovete portare il cursore sulli-
cona visibile in fig.64, cio sullimmagine di una pa-
gina con una freccia rivolta verso il basso.

Fig.64 Icona per avanzare in automatico.


Fig.65 Finestra di dialogo Edit data.
Cliccando su questa icona ottenete unesecuzione
sequenziale ed automatica di tutte le istruzioni, che
si fermer solo sullistruzione in cui avete inserito
il Breakpoint.

Quando viene eseguita listruzione:

883 0D C0 0F ldi port_a,0FH

se guardate nella finestra Watch al contenuto del-


la port_a sotto la colonna Dec. trovate il numero Fig.66 Finestra di Port B Data Register.
15.

Quando viene eseguita listruzione: In orizzontale potete leggere i numeri 7 - 6 - 5 - 4


- 3 - 2 - 1 - 0, che corrispondono ai piedini della
88C 0D C1 0F ldi port_b,0FH porta B. Sotto questi numeri ci sono delle caselle
che possono contenere una V oppure risultare vuo-
se guardate nella finestra Watch al contenuto della te.
port_b sotto la colonna Dec. trovate il numero 15. Nel nostro caso la V presente solo sulle prime
Infatti sempre nella finestra Watch al numero esa- quattro caselle 3 - 2 - 1 - 0, mentre nelle altre quat-
decimale 0F corrisponde il numero decimale 15. tro caselle 7 - 6 - 5 - 4 non appare nulla.
Se non sapete ancora convertire un numero deci-
male in un numero binario vi consigliamo di an- Le caselle con la V sono quelle che si trovano a li-
dare a pag.381 del nostro Handbook (se ne siete vello logico 1, cio sui piedini corrispondenti ri-
sprovvisti potete richiedercelo) dove troverete: sulta presente una tensione positiva, ed ovvia-
mente quelle senza la V sono a livello logico 0.
0000-1111 Come gi saprete il numero decimale 15 corri-
sponde a 0 0 0 0 - 1 1 1 1 in binario.
Per avere una riprova visiva di queste condizioni
logiche dovete andare nella finestra Data. Nella colonna verticale troverete gli otto piedini
Questa finestra riporta nella prima colonna gli indi- della porta B siglati PB0 - PB1 - PB2 - PB3 - PB4
rizzi di memoria e nel righello in alto in grigio i va- - PB5 - PB6 - PB7.
lori esadecimali: Da questa finestra di dialogo potete dunque sape-
re quale condizione logica presente sugli otto
00-01-02-03-04 09-0A-0B-0C-0D-0E-0F piedini.
Nel nostro esempio: Ponendo il cursore su 00 e cliccando due volte ve-
drete apparire la finestra dellEdit data di fig.68, ov-
PB7 - PB6 - PB5 - PB4 = livello logico 0 viamente diversa da quella di fig.65.
PB3 - PB2 - PB1 - PB0 = livello logico 1 Cliccando sulla scritta Bits apparir la finestra di
fig.69, leggermente diversa da quella di fig.66.
Dopo questa verifica potete cliccare su OK, poi clic-
cate ancora su OK nella successiva finestra e tor-
nerete nella finestra Data di fig.67.

IMPORTANTE

Durante lesecuzione del programma tutte le quat-


tro uscite si portano a livello logico 0 fino a quan-
do uno dei quattro ingressi non viene collocato a
livello logico 1. Fig.68 Finestra di dialogo Edit data.
Potendo vedere nella finestra di fig.66 le condi-
zioni logiche presenti sulle porte, vi accorgerete
subito se nel programma stato commesso un er-
rore.
Ammesso infatti che nel piedino PB6 di porta B
debba risultare presente un livello logico 1 e non
un livello logico 0 e nel piedino PB0 i porta B un
livello logico 0 e non un livello logico 1, potrete
subito vedere la situazione sui piedini della porta.
La finestra di fig.66 non solo vi permette di vedere Fig.69 Dalla finestra di fig.68 cliccate sulla
i livelli logici sui piedini di port_b, ma anche di scritta Bits per aprire la finestra dellA/D
correggerli. Infatti se, ad esempio, provate a clic- Control Register.
care nella casella 6 comparir una V che vi indica
che questo piedino passato a livello logico 1.
Dopo avervi spiegato come sia possibile controlla-
Poich il programma ATEST non contiene errori re visivamente i livelli logici presenti sui piedini
non cambiate i livelli logici su PB0 - PB1 - PB2 - del micro, potrete divertirvi a vedere il contenuto
PB4 e se lo fate, rimettete quelli che apparivano in delle variabili e dei registri che non vi abbiamo ci-
precedenza, diversamente andrete a modificare il tato. In questo modo farete un po di pratica che vi
corretto proseguimento del test. servir in futuro per scrivere correttamente i vostri
programmi.
Allo stesso modo potrete controllare il livello logi-
co del registro di controllo dellAD/Converter (nel
programma di ATEST lAD/Converter non viene u-
sato).
Andate nella finestra Data (vedi fig.67) e cercate ESECUZIONE a PASSI MULTIPLI
negli indirizzi di memoria il valore esadecimale D0.
Per la funzione passi multipli sarebbe consiglia-
Poich lindirizzo di questo registro D1, pren- bile togliere tutti i breakpoints, in ogni caso anche
dendo come riferimento il righello in grigio, poi se li lascerete potrete ugualmente eseguire questa
scendete dal valore esadecimale 01 fino ad incon- funzione.
trare la riga D0 e troverete il valore 00. Lesecuzione a passi multipli vi d la possibilit di
eseguire in modo automatico un numero di istru-
zioni che voi stessi potrete definire.

Ad esempio, potrebbe risultarvi comodo far ese-


guire al programma 5 - 8 - 10 istruzioni di segui-
to prima i fermarvi per controllare i dati.
Stabilito il numero di istruzioni da eseguire di se-
Fig.67 Per attivare la finestra di dialogo guito, tutte le volte che cliccherete sullicona di
Edit Data dovete cliccare due volte su 00. fig.70 verr eseguito il numero di istruzioni che a-
vete prefissato.
Attualmente il software predefinito per fare pas- FUNZIONE DEBUG
si di 2 sole istruzioni, quindi ammesso che desi-
deriate fare dei passi di 5 istruzioni dovrete pro- La funzione debug molto utile per vedere la map-
cedere come segue. pa del micro utilizzato e su quali piedini sono po-
sizionate le porte A - B - C, inoltre potete vedere
- Portate il cursore sulla scritta Run visibile in fig.71 quali livelli logici sono presenti sui piedini din-
e cliccate e nella finestra che appare andate sulla gresso o di uscita durante lesecuzione del pro-
scritta Multiple Step Value e cliccate. gramma.

Per entrare nella funzione debug cliccate sulla


scritta Debug, visibile nella fascia superiore del me-
nu, e quando appare la maschera di fig.74 clicca-
te nella riga Test I/O.
Fig.70 Icona per fare passi multipli. Apparir cos la finestra di fig.75.
In alto potete leggere la sigla dellintegrato pre-
scelto, nel nostro caso ST6210 - ST6220, in bas-
so a sinistra potete vedere le connessioni del mi-
cro e su quali piedini sono posizionate le porte A
e B, infine sul lato destro visibile la mappa di con-
figurazione logica di queste due porte.

Per la porta A, che dispone di soli 4 piedini PA0 -


PA1 - PA2 - PA3, troverete a destra 4 caselle gri-
gie (questo perch i piedini della porta A sono so-
lo 4) e 4 caselle indicate 3 - 2 - 1 - 0 che possono
essere vuote o contrassegnate da una V.

Fig.71 Finestra per variare i passi/multipli.

- Nella finestra di dialogo che appare (vedi fig.72)


andate nella casella Value e sostituite il numero 2
con il 5, poi andate su OK e cliccate.
Fig.74 Cliccate su Test I/O per la fig.75.

Fig.72 Digitate il numero dei passi multipli.

- Tutte le volte che cliccherete sullicona in cui so-


no disegnate due orme (vedi fig.73), il programma
avanzer di 5 istruzioni. Fig.75 Mappa di configurazione del micro.
Cliccando nuovamente sullicona, il programma a-
vanzer di altre 5 istruzioni. caselle DDR - (Data Direction Register) Se que-
ste caselle risultano vuote significa che abbiamo
definito i piedini input (ingressi), quelle contrasse-
gnate con una V indicano che li abbiamo definiti
output (uscite).

caselle DR - (Data Register) Se queste caselle ri-


Fig.73 Icona per i passi multipli. sultano vuote significa che sui piedini presente
un livello logico 0, se sono contrassegnate da u-
na V significa che presente un livello logico 1.
caselle OR - (Opzion Register) Queste caselle caselle OR - (Opzion Register) Queste caselle
servono per selezionare le varie opzioni delle por- servono per selezionare le varie opzioni delle por-
te. Se con il DDR abbiamo predefinito il piedino co- te. Se con il DDR abbiamo predefinito il piedino co-
me input, combinandolo con il DR e lOR otterre- me output, combinandolo con il DR e lOR otter-
mo queste selezioni: remo queste selezioni:

DDR DR OR opzione come ingressi DDR DR OR opzione come uscite


0 0 0 pull-up senza interrupt 1 0 0 Collettore aperto
0 1 0 senza pull-up e senza interrupt 1 1 0 Collettore aperto
0 0 1 con pull-up e con interrupt 1 0 1 uscita in Push-Pull
0 1 1 ingresso analogico (vedi nota)
Poich in molti programmi non si usano i termini D-
Nota: Lingresso analogico non consentito per i DR - DR - OR, ma PDIR - PORT - POTP, riportia-
piedini PA0 - PA1 - PA2 - PA3. mo le loro equivalenze:

Per la porta B, che dispone di 8 piedini PB0 - PB1 PDIR corrisponde a DDR
- PB2 - PB3 - PB4 - PB5 - PB6 - PB7, vedrete 8 PORT corrisponde a DR
caselle su 3 file indicate 7 - 6 - 5 - 4 - 3 - 2 - 1 - POTP corrisponde a OR
0 che possono essere vuote o contrassegnate da
una V. Se rileggerete tutti gli articoli precedenti riguardan-
ti lST6 (vedi Riviste N.172/173 - 174 - 175/176) tro-
caselle DDR - (Data Direction Register) Se que- verete molti esempi su come procedere per setta-
ste caselle risultano vuote significa che abbiamo re le porte come ingressi e uscite.
definito i piedini input (ingressi), quelle contrasse-
gnate con una V indicano che li abbiamo definiti
output (uscite). Potendo vedere tramite la finestra visibile in fig.75
tutti i livelli logici presenti su questi piedini, pote-
caselle DR - (Data Register) Se queste caselle ri- te comprendere quanto risulti semplice accorgersi
sultano vuote significa che sui piedini presente degli errori, anche perch proseguendo passo x
un livello logico 0, se sono contrassegnate da u- passo potete subito verificare come cambiamo i li-
na V significa che presente un livello logico 1. velli logici sia sugli ingressi sia sulle uscite.

Questo software vi permetter di vedere nella finestra Disassembler tutte le istruzioni in


formato leggibile; nella finestra Register tutti i registri, lo stack level e gli stati dei flags;
nella finestra Data il contenuto delle variabili dei registri e della data rom windows ecc.
Chi desiderasse acquistare la scheda emulatrice (vedi foto) pu rivolgersi a:

SOFTEC MICROSYSTEMS V.le Rimembranze, 19/C 33082 AZZANO DECIMO (PN)


fax 0434-631598 tel. 0434-640113 BBS 0434-631904
Nel disegno grafico visibile sulla sinistra di fig.75, COME SIMULARE lINTERRUTTORE
potete vedere i piedini che hanno una casella gri-
gia, ad esempio: Nel programma ATEST tutte le uscite rimangono a
livello logico 0 fino a quando non mettete a livel-
1 = Vdd (tensione positiva di alimentazione) lo logico 1 uno dei quattro ingressi.
2 = Timer Poich siamo in simulazione e non avete n un
3 = Oscillatore input interruttore n una tensione positiva, per porta-
4 = Oscillatore uscita re a livello logico 1 uno di questi ingressi dovre-
5 = NMI (Interrupt non mascherato) te forzare lingresso desiderato come ora vi spie-
6 = TEST (piedino di programmazione) gheremo.
7 = Reset
20 = Vss (tensione negativa di alimentazione) Cliccate sullicona di Stop visibile in fig.76 rappre-
sentata da una mano aperta.

Le caselle grigie non possono essere direttamen-


te testate nella simulazione tramite software, per-
ch manca la tensione di alimentazione ed il
quarzo, quindi dovrete attivarle con alcuni accor- Fig.76 Icona di Stop.
gimenti.
Ammesso di voler portare a livello logico 1 lin-
A esempio, non disponendo della frequenza di gresso del piedino PA2 di port_a affinch sullu-
clock potrete simulare le funzioni di timer solo at- scita del piedino PB2 di port_b appaia lo stesso li-
tivando da programma la subroutine legata allin- vello logico, per prima cosa dovrete andare nella
terrupt del timer. finestra Watch, visibile in fig.77, per controllare lin-
dirizzo di port_a, che risulta essere C0 (vedi sotto
La funzione di reset pu essere invece attivata con ADD).
un comando presente nella barra dei menu.

Chi si procurer la scheda emulatrice sar in gra-


do di testare in modo automatico anche queste fun-
zioni, perch ha la stessa funzione del micro.

In ogni caso risolverete molti problemi gi con il so-


lo software.
Ad esempio se avete scritto un programma che de-
ve portare a livello logico 1 il piedino 6 e simu- Fig.77 Finestra di Watch.
landolo vi accorgete che rimasto a livello logico
0, vi sar molto pi facile, avanzando passo per Per forzare a livello logico 1 lingresso del piedi-
passo e controllando ogni istruzione, trovare quel- no PA2 dovete andare nelle finestra DATA (vedi
la che, per un banale errore, non ha provveduto a fig.78) poi ricercare nella colonna degli indirizzi di
modificare il livello logico su tale piedino. memoria il valore esadecimale C0.
Trovato C0 guardate nel righello in alto in cui ap-
paiono i valori esadecimali:

Per uscire dal debug sufficiente portare il curso- 00-01-02-03-04 - 08-09-0A-0B-0C-0D-0E-0F


re sulla scritta OK poi cliccare.
Il programma ripartir automaticamente dalla pri- Poich lindirizzo di port_a C0, scendete dal va-
ma istruzione eseguibile. lore esadecimale 00 fino ad incontrare la riga C0 e
Se lancerete lesecuzione automatica vedrete il cos troverete il valore 00 (vedi fig.78).
programma ruotare allinfinito sulle etichette: Portate il cursore su 00 e cliccate 2 volte.

ripeti
main00 - mains1 - main01 - mains2
main02 - mains3 - main03 - mains4

perch non trova premuto nessuno dei quattro in- Fig.78 Cliccate 2 volte per vedere la fig.79.
terruttori presenti sulla porta A.
Quando appare la finestra Edit Data (fig.79) do- Poich avevamo bloccato il programma pigiando
vete cliccare sulla scritta Bits in modo da far ap- Stop (icona con mano) per farlo ripartire dovete ri-
parire la finestra di fig.80. cercare letichetta ripeti procedendo come segue:

- Attivate la finestra Disassembler cliccando allin-


terno della finestra, quindi cliccate sulla scritta Di-
sassembler del menu e poi cliccate sulla scritta
Set New PC (vedi fig.82).

Fig.79 Scegliete Bits per vedere la fig.80.

Fig.82 Selezionate Set New PC.

- Apparir cos la finestra di dialogo New program


counter (vedi fig.83) e cliccando sulla freccia po-
sta a destra della finestra PC value dovrete ricer-
care letichetta ripeti (vedi fig.84).
Fig.80 Qui potete forzare i livelli logici.
Nota: tutte le etichette sono in ordine alfabetico.
In questa finestra potete vedere lo stato logico pre-
sente su tutti i piedini della porta A e poich tutte
le caselle risultano vuote, ovvio che su tutti i pie-
dini presente un livello logico 0.

Volendo forzare a livello logico 1 il piedino din-


gresso PA2 dovrete portare il cursore nella casel-
la posta sotto il numero 2 e cliccare. Fig.83 Finestra New Program Counter.

Comparir cos V a conferma del fatto che sul pie-


dino dingresso PA2 ora presente un livello lo-
gico 1.

Nota: se cliccherete una seconda volta torner a


livello logico 0.
Fig.84 Cliccate sulletichetta ripeti.
A questo punto cliccate su OK e nella finestra che
appare ritornate a cliccare su OK: apparir cos la - Ponete il cursore su ripeti e cliccate, poi cliccate
finestra di fig.81. su OK e vedrete apparire la finestra di fig.85.
Noterete che la prima riga in alto ferma sulleti-
chetta ripeti.

Fig.81 Nel Watch vedrete il nuovo livello.

Se ora guardate allinterno della finestra Watch ve-


drete che qualcosa cambiato, infatti sotto la co-
lonna .Hex troverete 04 e sotto la colonna Dec. il Fig.85 Il programma fermo su ripeti.
numero 4.
- A questo punto posizionate il cursore sullicona di
esecuzione passo per passo e cliccate pi volte
fino ad arrivare allistruzione:

8DD 43 C0 07 jrr 2,port_a,main02

Poich questo bit a livello logico 1, il program-


ma non salter pi a main02 ma proseguir alli-
struzione:
Fig.88 Sul piedino PB2 appare una V.
8E0 53 C1 09 jrs 2,port_b,mains3 Per uscire cliccate su OK e nella successiva ma-
schera cliccate nuovamente su OK: apparir cos
Poich PB2 a livello logico 0 non salter a la maschera di fig.85.
mains3, ma, cliccando sul tasto passo per passo,
proseguir fino alla successiva istruzione che sar: Ora che avete vi abbiamo spiegato come sia pos-
sa modificare un ingresso da livello logico 0 a li-
8E3 5B C1 set 2,port_b vello logico 1 o viceversa, potete fare un po di
pratica portando a livello logico 1 anche il piedi-
Per eseguire questa istruzione cliccate ancora no di un altro ingresso per poi riportarlo a livello
sullicona passo passo ed il piedino PB2 cambier logico 0, poi verificate se i piedini duscita sono
il suo livello logico da 0 a 1. passati da livello logico 0 a livello logico 1.
Per verificarlo dovrete sempre far ripartire il pro-
Per vedere se questa condizione si verificata po- gramma delletichetta ripeti (vedi fig.85).
trete guardare nella finestra Watch dove leggere-
te:

port_b C1 04 4

Se volete avere unulteriore conferma visiva anda-


te nella finestra Data (fig.86), cercate lindirizzo C0,
poi andate sotto la colonna 01 e scendendo in-
contrerete la casella 04.
Portate il cursore su questa casella e cliccate due
volte.

Fig.89 In ogni programma si possono ese-


guire fino a 6 subroutine nidificate, cio u-
na allinterno dellaltra.

NON ABBIAMO FINITO


Fig.86 Sulla casella 04 cliccate 2 volte.

Quando appare la maschera Edit Data (vedi fig.87) Con questo articolo abbiamo riportato solo una con-
cliccate su Bits e comparir la finestra di dialogo densata panoramica di quello che riesce a fare que-
di fig.88 dove potrete vedere che nella casella sot- sto sofisticato software di simulazione.
to il numero 2 del piedino PB2 c una V ad indi- Per spiegarvi tutto, cio insegnarvi a capire come
care che questo piedino a livello logico 1. scoprire gli errori, come correggerli ecc., dovre-
mo portarvi tanti altri esempi, e per questo vi ri-
mandiamo al prossimo numero.
Comunque quando avrete a disposizione questo
software, scoprirete voi stessi molte cose ed an-
che facilmente tramite la funzione di Help.

COSTO del dischetto SOFTWARE

Tutti i softwaristi e hobbisti che volessero entrare


Fig.87 NellEdit data cliccate su Bits. in possesso di questo dischetto di simulazione per
ST6 siglato DF622.03 potranno richiederlo alla no-
stra Direzione. Costo del dischetto ........... 7,75
Prima di insegnarvi le procedure da adottare per C = Carry, registro di stato.
cercare gli errori nei programmi scritti per i micro
ST6, vi forniamo per ogni istruzione del linguaggio Z = Zero, registro di stato.
Assembler una tabella.
Queste tabelle vi serviranno come guida rapida dst = byte che contiene lindirizzo di una variabi-
quando scriverete un programma o quando lo cor- le o di un registro il cui valore pu essere modifi-
reggerete, perch vi consentono di decifrare le co- cato dallistruzione.
difiche dellopcode e degli indirizzi di memoria di
e = 5 bits che esprimono un valore decimale com-
ogni istruzione.
posto da un numero da 0 a 63.
Per avere una descrizione particolareggiata e cor-
redata da esempi delle istruzioni in formato As- ee = 8 bits che esprimono un valore decimale
sembler vi consigliamo di rileggere quanto gi pub- composto da un numero da 0 a 255.
blicato sulla rivista N.174.
MSB = labbreviazione di Most Significant Bit,
cio bit significativo. Si tratta del bit 7 che per
In queste tabelle trovate il formato, lopcode, i by- la matematica binaria quando viene settato a 1
tes, i cicli e i flags di ogni istruzione. vale in decimale 128 ed in binario 1000-0000.

SOFTWARE simulatore per


Formato = composizione di una istruzione. PC = Program Counter. E un registro a 12 bit con-
Opcode = codice operativo in formato intel.hex. tenente lindirizzo dellistruzione in esecuzione.
Bytes = lunghezza dellistruzione in bytes.
Cicli = passi del micro per eseguire unistruzione. src = byte che contiene lindirizzo di una variabi-
Flags = particolari bit indicatori che vengono set- le o di un registro il cui valore non modificabile
tati, cio posti a livello logico 1, oppure resetta- dallistruzione.
ti, cio posti a livello logico 0, a seconda che si
verifichino o meno determinate condizioni a segui- In ogni Tabella troverete il significato delle abbre-
to dellesecuzione di una istruzione. Questi bit in- viazioni utilizzate che qui non compaiono, e le o-
dicatori vengono parcheggiati in speciali registri di perazioni che effettua il programma quando ese-
stato chiamati Carry e Zero. gue listruzione.
Per capire come usare queste Tabelle di guida ra-
Anche se conoscerete gi il significato delle paro- pida prendiamo ad esempio quella dellistruzione
le utilizzate nellarticolo, ne ricordiamo qui alcune: Set.
Una volta che avrete letto la spiegazione, saprete
Variabile = lindirizzo di memoria Data Space i- anche come usare tutte le altre tabelle.
dentificato da un nome, ad esempio port_a, con-
tenente un valore che nel corso dellelaborazione
pu variare. SET Set Bit

Overflow = letteralmente significa traboccamen- Formato opcode bytes cicli flags


to. Questo evento si verifica se il risultato di uno- SET bit,dst Z C
perazione matematica ci fornisce un valore pi SET b,A b11011 FF 2 4 * *
grande della capacit della variabile in cui lo do- SET b,rr b11011 rr 2 4 * *
vremmo memorizzare. Ad esempio, se il risultato
di una somma 300 e tentate di memorizzare que- Operazione: istruzione che serve per settare uno
sto numero in una variabile lunga 1 byte che pu degli 8 bit della Variabile dst.
contenere un valore compreso tra 0 e 255, si veri-
ficher un overflow. A = registro dellAccumulatore.
b = numero binario di tre bit di indirizzo.
Le abbreviazioni che troverete utilizzate in quasi rr = 1 byte di indirizzo di una Variabile.
tutte le istruzioni hanno il seguente significato. * = Z - C non influenzati.
TESTARE i micro ST6
Come vi abbiamo promesso nella rivista precedente, in questo articolo prose-
guiamo a spiegarvi come usare il software simulatore DSE622 dandovi alcu-
ni utili suggerimenti sui diversi test che possibile eseguire sui programmi scrit-
ti in linguaggio Assembler. Anche i pi esperti infatti possono involontariamente
commettere errori nel programmare i microprocessori della famiglia ST6.

Nella colonna Formato abbiamo riportato il forma- FF = lindirizzo di memoria dellaccumulatore A


to logico dellistruzione. in formato esadecimale. Questo indirizzo di 1 by-
Listruzione Set si compone di un comando (Set), te.
del bit da settare (bit) e della variabile (dst) in cui
verr settato (livello logico 1) il bit. Tutta listruzione b11011FF occupa un totale di 2
byte, come potete vedere nella terza colonna de-
Esempio di SET b,A nominata bytes.

Per settare un bit dellaccumulatore A dobbiamo Nella quarta colonna (ciclo) sono riportati i nume-
guardare la colonna opcode, in cui viene riportata ri di passi necessari al microprocessore per ese-
la sua configurazione in formato intel.hex. guire listruzione.

b11011 FF Ammesso di avere un quarzo da 8 MHz, per co-


noscere il tempo di esecuzione espresso in mi-
b = la combinazione di tre bit utilizzati per defi- crosecondi possiamo usare questa formula:
nire in binario un numero decimale da 0 a 7.
microsecondi = (13 : MHz) x cicli macchina
11011 = la combinazione binaria che il micro-
processore riconosce come listruzione Set, quindi Questa istruzione verr perci eseguita in:
non deve essere mai modificata.
(13 : 8) x 4 = 6,5 microsecondi
b+11011 = dunque un numero binario di 8 bit
che il computer utilizza per sapere quale bit dellac- Nella quinta colonna (Flags Z - C) trovate degli a-
cumulatore A deve settare. Questo numero bina- sterischi perch listruzione set non influenza lo sta-
rio occupa 1 byte. to logico di Z e di C.
Esempio: Per settare il bit 7 dellAccumulatore sterischi perch listruzione set non influenza lo sta-
dobbiamo scrivere questa istruzione: to logico di Z e di C.

set 7,A Esempio: Per settare il bit 2 di port_a, cio per


portare a livello logico 1 il piedino PA2 della por-
Il compilatore Assembler convertir listruzione in ta A, dobbiamo scrivere questa istruzione:
questi numeri binari:
set 2,port_a
11111011 11111111
Il compilatore Assembler convertir listruzione in
Nel numero binario 11111011 (esadecimale FB) i questi numeri binari:
primi cinque bit partendo da destra, cio 11011,
corrispondono allistruzione Set. 01011011 11000000
Gli ultimi tre bit, cio 111, corrispondono al numero
decimale 7. Nel numero binario 01011011 (esadecimale 5B) i
primi cinque bit partendo da destra, cio 11011,
Il secondo numero binario, cio 11111111 (esa- corrispondono allistruzione Set.
decimale FF), corrisponde al numero dellindirizzo Gli ultimi tre bit, cio 010, corrispondono al numero
dellAccumulatore. decimale 2.

Tutta listruzione viene visualizzata sul monitor dal Il secondo numero binario, cio 11000000 (esade-
simulatore non in numero binario, ma in un nu- cimale C0), corrisponde allindirizzo di port_a.
mero esadecimale, cio:
Tutta listruzione viene visualizzata sul monitor dal
FB FF simulatore non in numero binario, ma in un nu-
mero esadecimale, cio :
Esempio di SET b,rr
5B C0
Per settare un bit della Variabile rr dobbiamo guar-
dare la colonna opcode, in cui viene riportata la Di seguito trovate tutte le Tabelle della guida ra-
sua configurazione in formato intel.hex. pida in ordine alfabetico.
b11011 rr ADD Addition
b = la combinazione di tre bit utilizzati per defi-
Formato opcode bytes cicli flags
nire in binario un numero decimale da 0 a 7.
ADD dst,src Z C
11011 = la combinazione binaria che il micro- ADD A,A 5F FF 2 4
processore riconosce come listruzione Set, quindi ADD A,X 5F 80 2 4
non deve essere mai modificata. ADD A,Y 5F 81 2 4
ADD A,V 5F 82 2 4
b+11011 = dunque un numero binario di 8 bit ADD A,W 5F 83 2 4
ADD A,(X) 47 1 4
che il computer utilizza per sapere quale bit della
ADD A,(Y) 4F 1 4
variabile rr deve settare. Questo numero binario
ADD A,rr 5F rr 2 4
occupa 1 byte.

rr = lindirizzo di memoria della Variabile di Da- Operazione: il contenuto di una variabile viene
ta Space. Questo indirizzo di 1 byte. sommato al contenuto dellAccumulatore ed il ri-
sultato delloperazione memorizzato nellAccu-
Tutta listruzione b11011rr occupa un totale di 2 mulatore.
byte, come potete vedere nella terza colonna de-
nominata bytes. A = registro dellAccumulatore.
X-Y-V-W = registri del micro.
Nella quarta colonna (ciclo) sono riportati i nume- rr = 1 byte di indirizzo di una Variabile.
ri di passi necessari al microprocessore per ese- = Z settato se il risultato 0, resettato se di-
guire listruzione. verso da 0.
= C resettato prima delloperazione e si setta
Nella quinta colonna (Flags Z - C) trovate degli a- automaticamente se laddizione genera overflow.
ADDI Addition Immediate CALL Call Subroutine

Formato opcode bytes cicli flags Formato opcode bytes cicli flags
ADDI dst,src Z C CALL dst Z C
ADDI A,nn 57 nn 2 4 CALL abc c0001 ab 2 4 * *

Operazione: un numero viene sommato al conte- Operazione: viene utilizzata per chiamare una su-
nuto dellAccumulatore ed il risultato dellopera- broutine. Ogni volta che viene eseguita una Call
zione memorizzato nellAccumulatore. il Program Counter viene memorizzato nel livello
corrente di Stack e questultimo si alza di un livel-
A = registro dellAccumulatore. lo. Nel micro ST62 il numero massimo dei livelli di
nn = numero di 1 byte (da 0 a 255). Stack 6.
= Z settato se il risultato 0, resettato se di-
verso da 0. abc = etichetta della subroutine da eseguire e-
= C resettato prima delloperazione e si setta spressa in 3 semibytes per un totale di 12 bit.
automaticamente se laddizione genera overflow. * = Z - C non influenzati.

AND Logical AND CLR Clear

Formato opcode bytes cicli flags Formato opcode bytes cicli flags
AND dst,src Z C CLR dst Z C
AND A,A BF FF 2 4 * CLR A DF FF 2 4
AND A,X BF 80 2 4 * CLR X 0D 80 00 3 4 * *
AND A,Y BF 81 2 4 * CLR Y 0D 81 00 3 4 * *
AND A,V BF 82 2 4 * CLR V 0D 82 00 3 4 * *
AND A,W BF 83 2 4 * CLR W 0D 83 00 3 4 * *
AND A,(X) A7 1 4 * CLR rr 0D rr 00 3 4 * *
AND A,(Y) AF 1 4 *
AND A,rr BF rr 2 4 * Operazione: serve per resettare lAccumulatore,
un Registro o una Variabile.
Operazione: funzione di And tra lAccumulatore
ed una Variabile. Il risultato della funzione me- A = registro dellAccumulatore.
morizzato nellAccumulatore. X-Y-V-W = registri del micro.
rr = 1 byte di indirizzo di una Variabile.
A = registro dellAccumulatore. = Z settato.
X-Y-V-W = registri del micro. = C resettato.
rr = 1 byte di indirizzo di una Variabile. * = Z - C non influenzati.
= Z settato se il risultato 0, resettato se di-
verso da 0. COM Complement
* = C non influenzato.

ANDI LOGICAL AND Immediate Formato opcode bytes cicli flags


COM dst Z C
Formato opcode bytes cicli flags COM A 2D 1 4
ANDI dst,src Z C
ANDI A,nn B7 nn 2 4 * Operazione: calcola il complemento al valore con-
tenuto nellAccumulatore e lo memorizza nellAc-
Operazione: viene eseguita la funzione di And di cumulatore stesso. A questo scopo utilizza la fun-
un numero con lAccumulatore. Il risultato della zione di Not che inverte i livelli logici contenuti
funzione memorizzata nellAccumulatore. nellAccumulatore.

A = registro dellAccumulatore. A = registro dellAccumulatore.


nn = numero di 1 byte (da 0 a 255). = Z settato se il risultato della funzione 0, re-
= Z settato se il risultato 0, resettato se di- settato se diverso da 0.
verso da 0. = C settato se prima della funzione il bit 7
* = C non influenzato. 1, resettato se prima della funzione il bit 7 0.
CP Compare Operazione: decrementa di 1 il contenuto dellAc-
cumulatore, del Registro o della Variabile.
Formato opcode bytes cicli flags
CP dst,src Z C A = registro dellAccumulatore.
CP A,A 3F FF 2 4 X-Y-V-W = registri del micro.
CP A,X 3F 80 2 4 rr = 1 byte di indirizzo di una Variabile.
CP A,Y 3F 81 2 4 = Z settato se il risultato 0, resettato se di-
CP A,V 3F 82 2 4 verso da 0.
CP A,W 3F 83 2 4 * = C non viene in alcun modo influenzato, quindi
CP A,(X) 27 1 4 mantiene lo stesso stato, livello logico 0 o livello lo-
CP A,(Y) 2F 1 4 gico 1, in cui si trovava prima dellistruzione.
CP A,rr 3F rr 2 4
Operazione: compara il contenuto di un Registro INC Increment
o di una Variabile con il contenuto dellAccumu-
latore, sottraendo dal contenuto dellAccumulato- Formato opcode bytes cicli flags
re il contenuto della Variabile o del Registro. LAc-
INC dst Z C
cumulatore rimane invariato.
INC A 7F FF 2 4 *
A = registro dellAccumulatore. INC X 15 1 4 *
X-Y-V-W = registri del micro. INC Y 55 1 4 *
rr = 1 byte di indirizzo di una Variabile. INC V 95 1 4 *
= Z settato se il risultato 0, resettato se di- INC W D5 1 4 *
verso da 0. INC (X) 67 1 4 *
= C settato se lAccumulatore minore del INC (Y) 6F 1 4 *
contenuto del Registro o della Variabile, reset- INC rr 7F rr 2 4 *
tato se lAccumulatore uguale o maggiore.
Operazione: incrementa di 1 il contenuto dellAc-
CPI Compare Immediate
cumulatore, del Registro o della Variabile.
Formato opcode bytes cicli flags
CPI dst,src Z C A = registro dellAccumulatore.
X-Y-V-W = registri del micro.
CPI A,nn 37 nn 2 4
rr = 1 byte di indirizzo di una Variabile.
Operazione: compara il contenuto dellAccumula- = Z settato se il risultato 0, resettato se di-
tore con un numero contenuto in un byte, sot- verso da 0.
traendo dal contenuto dellAccumulatore il numero. * = C non viene in alcun modo influenzato, quin-
LAccumulatore rimane invariato. di mantiene lo stesso stato, livello logico 0 o li-
vello logico 1, in cui si trovava prima dellistruzio-
A = registro dellAccumulatore. ne.
nn = numero di 1 byte (da 0 a 255).
= Z settato se il risultato 0, resettato se di-
verso da 0. JP Jump
= C settato se lAccumulatore minore del
numero nn, resettato se lAccumulatore u-
guale o maggiore. Formato opcode bytes cicli flags
JP dst Z C
DEC Decrement JP abc c1001 ab 2 4 * *

Formato opcode bytes cicli flags


Operazione: viene utilizzata per fare un salto in-
DEC dst Z C
condizionato ad una etichetta.
DEC A FF FF 2 4 *
DEC X 1D 1 4 * abc = indirizzo di Program Space delletichet-
DEC Y 5D 1 4 * ta. Nel Program Space viene memorizzato que-
DEC V 9D 1 4 * sto indirizzo ed il programma salta alletichet-
DEC W DD 1 4 * ta per poi proseguire da questo punto in poi.
DEC (X) E7 1 4 * abc espresso in 3 semibytes per un totale di
DEC (Y) EF 1 4 * 12 bit.
DEC rr FF rr 2 4 * * = Z e C non influenzati.
JRC Jump Relative on Carry Flag JRR Jump Relative if Reset

Formato opcode bytes cicli flags Formato opcode bytes cicli flags
Z C Z C
JRC e e110 1 2 * * JRR b,rr,ee b00011 rree 3 5 *

Operazione: viene utilizzata per fare un salto con- Operazione: viene utilizzata per fare un salto con-
dizionato dal Carry Flag quando questo setta- dizionato dal bit di una Variabile quando questo
to. resettato.

e = numero che rappresenta la distanza di byte b = numero binario di tre bit di indirizzo.
delletichetta di salto rispetto al Program Counter. rr = 1 byte di indirizzo di una Variabile.
Il numero possibile di bytes di salto 15 prima e ee = numero che rappresenta la distanza di byte
16 dopo rispetto al Program Counter. delletichetta di salto rispetto al Program Counter.
* = Z e C non vengono in alcun modo influenzati, Il numero possibile di bytes di salto 126 prima
quindi mantengono lo stesso stato, livello logico 0 e 129 dopo rispetto al Program Counter.
o livello logico 1, in cui si trovavano prima delli- * = Z non viene in alcun modo influenzato, quindi
struzione. mantiene lo stesso stato, livello logico 0 o livello lo-
gico 1, in cui si trovava prima dellistruzione.
= C contiene il valore del bit testato.
JRNC Jump Relative on Non Carry Flag
JRS Jump Relative if Set
Formato opcode bytes cicli flags
Z C Formato opcode bytes cicli flags
JRNC e e010 1 2 * * Z C
JRS b,rr,ee b10011 rree 3 5 *
Operazione: viene utilizzata per fare un salto con-
dizionato dal Carry Flag quando questo reset- Operazione: viene utilizzata per fare un salto con-
tato. dizionato dal bit di una Variabile quando questo
settato.
e = numero che rappresenta la distanza di byte
delletichetta di salto rispetto al Program Counter. b = numero binario di tre bit di indirizzo.
Il numero possibile di bytes di salto 15 prima e rr = 1 byte di indirizzo di una Variabile.
16 dopo rispetto al Program Counter. ee = numero che rappresenta la distanza di byte
* = Z e C non vengono in alcun modo influenzati, delletichetta di salto rispetto al Program Counter.
quindi mantengono lo stesso stato, livello logico 0 Il numero possibile di bytes di salto 126 prima
o livello logico 1, in cui si trovavano prima delli- e 129 dopo rispetto al Program Counter.
struzione. * = Z non viene in alcun modo influenzato, quindi
mantiene lo stesso stato, livello logico 0 o livello lo-
gico 1, in cui si trovava prima dellistruzione.
JRNZ Jump Relative on Non Zero Flag = C contiene il valore del bit testato.

Formato opcode bytes cicli flags JRZ Jump Relative on Zero Flag
Z C
JRNZ e e000 1 2 * * Formato opcode bytes cicli flags
Z C
Operazione: viene utilizzata per fare un salto con- JRZ e e100 1 2 * *
dizionato dal Zero Flag quando questo reset-
tato. Operazione: viene utilizzata per fare un salto con-
dizionato dal Zero Flag quando questo settato.
e = numero che rappresenta la distanza di by-
te delletichetta di salto rispetto al Program e = numero che rappresenta la distanza di byte
Counter. Il numero possibile di bytes di salto delletichetta di salto rispetto al Program Counter.
15 prima e 16 dopo rispetto al Program Coun- Il numero possibile di bytes di salto 15 prima e
ter. 16 dopo rispetto al Program Counter.
* = Z e C non influenzati. * = Z e C non influenzati.
LD Load NOP No Operation

Formato opcode bytes cicli flags Formato opcode bytes cicli flags
LD dst,src Z C Z C
LD A,X 35 1 4 * NOP 04 1 2 * *
LD A,Y 75 1 4 *
LD A,V B5 1 4 * Operazione: viene normalmente utilizzata per
LD A,W F5 1 4 * creare dei piccoli ritardi. Ogni NOP crea un ritar-
LD X,A 3D 1 4 * do di 2 cicli.
LD Y,A 7D 1 4 *
LD V,A BD 1 4 * * = Z - C non influenzati.
LD W,A FD 1 4 *
LD A,(X) 07 1 4 * RES Reset Bit
LD (X),A 87 1 4 *
LD A,(Y) 0F 1 4 * Formato opcode bytes cicli flags
LD (Y),A 8F 1 4 * RES bit, dst Z C
LD A,rr 1F rr 2 4 * RES b,A b01011 FF 2 4 * *
LD rr,A 9F rr 2 4 * RES b,rr b01011 rr 2 4 * *

Operazione: serve per caricare il valore contenu- Operazione: serve per resettare uno degli 8 bit
to in una Variabile, nellAccumulatore o in un Re- della Variabile o dellAccumulatore di destinazio-
gistro. Pu caricare il valore anche tra Registro ne.
ed Accumulatore Per questa istruzione bisogna
sempre utilizzare lAccumulatore. A = registro dellAccumulatore
b = numero binario di tre bit di indirizzo.
A = registro dellAccumulatore.
rr = 1 byte di indirizzo di una Variabile.
X-Y-V-W = registri del micro.
* = Z - C non influenzati.
rr = 1 byte di indirizzo di una Variabile.
= Z settato se il risultato 0, resettato se di-
RET Return from Subroutine
verso da 0.
* = C non viene in alcun modo influenzato, quindi
mantiene lo stesso stato, livello logico 0 o livello lo- Formato opcode bytes cicli flags
gico 1, che aveva prima dellistruzione. Z C
RET CD 1 2 * *
LDI Load Immediate Operazione: viene utilizzata per ritornare da una
subroutine al punto della chiamata Call. Quando
Formato opcode bytes cicli flags viene eseguita una RET si abbassa di un livello lo
LDI dst,src Z C Stack ed il Program Counter assume il valore re-
LDI A,nn 17 nn 2 4 * lativo al livello corrente di Stack.
LDI X,nn 0D 80 nn 3 4 * *
LDI Y,nn 0D 81 nn 3 4 * * * = Z e C non influenzati.
LDI V,nn 0D 82 nn 3 4 * *
LDI W,nn 0D 83 nn 3 4 * * RETI Return from Interrupt
LDI rr,nn 0D rr nn 3 4 * *
Formato opcode bytes cicli flags
Operazione: serve per caricare un numero da 0 a Z C
255 in una Variabile, nellAccumulatore o in un RETI 4D 1 2
Registro.
Operazione: viene utilizzata per ritornare da una
A = registro dellAccumulatore. routine di interrupt al punto precedente allevento
X-Y-V-W = registri del micro. di interrupt. Quando viene eseguita una RETI si ab-
nn = numero di 1 byte (da 0 a 255). bassa di un livello lo Stack ed il Program Counter
rr = 1 byte di indirizzo di una Variabile. assume il valore relativo al livello corrente di Stack.
= Z settato se il risultato 0, resettato se di-
verso da 0. = Z e C vengono riportati alla condizione logica
* = Z - C non influenzati. in cui si trovavano prima dellinterrupt.
RLC Rotate Left Through Carry SUB Subtraction

Formato opcode bytes cicli flags Formato opcode bytes cicli flags
Z C SUB dst,src Z C
RLC A AD 1 4 SUB A,A DF FF 2 4
SUB A,X DF 80 2 4
Operazione: serve per spostare di un posto verso SUB A,Y DF 81 2 4
sinistra gli 8 bit dellAccumulatore. Il bit 7 passa SUB A,V DF 82 2 4
nel Carry spostando il valore che si trovava sul SUB A,W DF 83 2 4
Carry sul bit 0 dellAccumulatore. SUB A,(X) C7 1 4
SUB A,(Y) CF 1 4
A = registro dellAccumulatore. SUB A,rr DF rr 2 4
= Z settato se il risultato 0, resettato se di-
verso da 0. Operazione: il contenuto di una variabile viene
= C riporta il valore del bit 7. sottratto allAccumulatore ed il risultato dello-
perazione viene memorizzato nellAccumulato-
SET Set Bit re.

Formato opcode bytes cicli flags A = registro dellAccumulatore.


SET bit,dst Z C X-Y-V-W = registri del micro.
SET b,A b11011 FF 2 4 * * rr = 1 byte di indirizzo di una Variabile.
SET b,rr b11011 rr 2 4 * * = Z settato se il risultato 0, resettato se di-
verso da 0.
Operazione: serve per settare uno degli 8 bit del- = C settato se il contenuto dellAccumulato-
la Variabile o dellAccumulatore di destinazione. re minore della Variabile o del Registro, reset-
tato se maggiore o uguale.
A = registro dellAccumulatore
b = numero binario di tre bit di indirizzo. SUBI Subtraction Immediate
rr = 1 byte di indirizzo di una Variabile.
* = Z - C non influenzati. Formato opcode bytes cicli flags
SUBI dst,src Z C
SLA Shift Left Accumulator
SUBI A,nn D7 nn 2 4
Formato opcode bytes cicli flags Operazione: un numero contenuto in un byte
Z C viene sottratto allAccumulatore ed il risultato
SLA A 5F FF 2 4 delloperazione viene memorizzato nellAccumu-
latore.
Operazione: serve per spostare di un posto verso
sinistra gli 8 bit dellAccumulatore. Il bit 7 passa A = registro dellAccumulatore.
nel Carry cancellando il valore che risultava pre- nn = numero di 1 byte (.da 0 a 255).
sente (equivale ad una moltiplicazione per 2). = Z settato se il risultato 0, resettato se di-
verso da 0.
A = registro dellAccumulatore. = C settato se il contenuto dellAccumulatore
= Z settato se il risultato 0, resettato se di- minore del numero, resettato se maggiore o u-
verso da 0. guale.
= C riporta il valore del bit 7.
WAIT Wait Processor
STOP Stop Operation
Formato opcode bytes cicli flags
Formato opcode bytes cicli flags Z C
Z C WAIT ED 1 2 * *
STOP 6D 1 2 * *
Operazione: serve per mettere in stand-by il mi-
Operazione: serve per bloccare loscillatore del cro ST62, ma loscillatore del clock rimane atti-
clock mettendo in stand-by tutto il micro ST62. vo.

* = Z - C non influenzati. * = Z - C non influenzati.


Chi, subito dopo aver letto larticolo apparso sulla Per questo motivo quando avete assemblato il file
rivista N.184, si affrettato ad acquistare il di- ATEST.ASM per generare il file ATEST.PRJ, so-
schetto con il software DSE.622, che serve a te- no stati creati solo i files:
stare tutti i programmi per i micro ST6, si subi-
to accorto con quanta facilit sia possibile simula- ATEST.HEX
re i programmi in Assembler. ATEST.DSD
Questo software consente di individuare dove e
perch il programma non funziona e di correggere e non il file: ATEST.SYM
gli errore logici, facendo risparmiare cos non so-
lo tempo ma anche denaro, perch non pi ne- Anche se questo file non viene creato, il simulato-
cessario acquistare gli ST6 riprogrammabili per re svolge ugualmente tutte le sue funzioni, ma in-
provare i programmi. vece di mostrarvi nel DSE le etichette in formato
simbolico, fornisce solo la loro codifica in esade-
Abbiamo ricevuto molte lettere di elogio soprattut- cimale.
to dagli uffici tecnici delle piccole e medie Indu-
strie che usano gli ST6 per le loro macchine, e mol- Dal momento che invece molto pi semplice in
ti Professori che insegnano negli Istituti Tecnici fase di simulazione lavorare con il formato .SYM,
ci hanno fatto sapere che lo considerano un valido vi spieghiamo come generarlo.
supporto didattico alle loro lezioni teoriche.
In realt questi complimenti non sono molto meri- Come prima operazione caricate il programma
tati perch noi ci siamo soltanto limitati a cercare DSE622 e quando compare la finestra di fig.91, se-
tra i tanti software disponibili in commercio quello lezionate la scritta Demo per entrare nella finestra
che ci sembrava il pi valido come hardware e principale.
software e, quando labbiamo trovato, abbiamo Cliccate sulla scritta Tools sulla barra dei menu e
spiegato sulla rivista in modo molto semplice e con selezionate ST6 (vedi fig.92).
tanti esempi il suo funzionamento e lutilit delle
sue funzioni pi importanti.

Prima di spiegarvi come cercare e correggere gli


errori che si possono commettere quando si scrive
un programma, vogliamo aprire una parentesi per
insegnarvi a generare il file .SYM.

SE NON APPARE IL FILE .SYM

Nella rivista N.184 vi abbiamo detto che il file *.PRJ Fig.90 Se in fase di compilazione non sta-
utilizzato dal simulatore per testare il programma to creato il file *.SYM, nel file .PRJ le eti-
formato: chette sono codificate in esadecimale.

dal file .HEX, che contiene il programma esegui-


bile in formato INTEL.HEX.
dal file .SYM, che contiene le definizioni delle e-
tichette ed il relativo indirizzo di memoria Program
Space.
dal file .DSD, che contiene le definizioni, le ca-
ratteristiche ed il relativo indirizzo di memoria Da-
Fig.91 Scegliete lopzione Demo per entra-
ta Space delle variabili.
re nella finestra principale del DSE622.
dalle specifiche proprie che vengono scelte da
chi crea il file .PRJ dal file .HEX.
Molti lettori ci hanno segnalato che quando compi-
lano in assembler non riescono a vedere il conte-
nuto del file .SYM, quindi sul video non compare la
parte del programma relativa alle etichette in for- Fig.92 Per entrare nelleditor dellST6 dal D-
mato simbolico, ma solo il loro indirizzo di memo- SE, scegliete ST6 dal menu Tools.
ria (vedi fig.90).
In questo modo entrerete nelleditor dellST6.
Per aprire il file usate il tasto F3 e, nella riga Na-
me, digitate *.BAT come visibile nella fig.93.
Cliccate su Open e vedrete apparire la finestra ri-
portata in fig.94, dove risulta gi selezionato il file
A.BAT.
Cliccate su Open e sul monitor apparir il conte-
nuto di questo file, cio ast6 %1.

Per generare il file .SYM, necessario inserire in


questa riga lopzione -S.

Per aggiungere questa opzione dovete portare il


cursore dopo la scritta ast6, digitare uno spazio e Fig. 93 Utilizzate il tasto funzione F3 per a-
scrivere -s, quindi separare con uno spazio la scrit- prire il file con estensione .BAT.
ta 1%.
In altre parole deve apparire:

ast6 -s %1

come visibile nella finestra di fig.95.

A questo punto salvate il file premendo il tasto


funzione F2, poi uscite premendo i due tasti
Alt+F3.
Per completare la modifica dovete nuovamente
compilare i files:

ATEST.ASM Fig.94 Il file che dovete modificare per ge-


BTEST.ASM nerare il file .SYM si chiama A.BAT.

Per compilare il file ATEST.ASM pigiate il tasto


funzione F3, poi selezionate il programma
ATEST.ASM, quindi portate il cursore su Open e
cliccate.

Nella finestra che appare (vedi fig.96) cliccate sul-


la scritta ST6 poi su Assembla.
Quando il programma sar compilato premete un
tasto qualsiasi, poi premete Alt+F3 per chiudere
il file.
Fig.95 Lopzione -s, che serve a generare il
file .SYM in fase di compilazione, deve es-
La stessa operazione deve essere effettuata per il sere inserita tra le scritte ast6 e 1% sepa-
file BTEST.ASM e per tutti quei files che avete randola con degli spazi.
compilato prima di aggiungere lopzione -S al file
A.BAT.

Terminata questa operazione potete uscire dalle-


ditor premendo i tasti Alt+X.

Rientrerete cos nel software di simulazione del


DSE622 dove tutti i files con estensione .PRJ che
avete generato prima di questa modifica sono sta- Fig.96 Tutti i files che avete compilato pri-
ti automaticamente aggiornati e contengono quin- ma di aggiungere lopzione -s devono es-
di anche le informazioni in formato simbolico rela- sere nuovamente assemblati.
tive al file .SYM.
LA CORREZIONE DEGLI ERRORI non pu essere sostituita dallistruzione JRR (che
lunga 3 bytes), ma si pu invece fare il contra-
Dopo questa parentesi riprendiamo la descrizione rio utilizzando listruzione NOP per coprire i bytes
del funzionamento del DSE fornendovi alcuni sug- non utilizzati.
gerimenti per controllare passo-passo le istruzio-
ni e di conseguenza correggere gli errori che si Esempio: Ammesso di voler modificare listruzio-
possono commettere quando si scrive un pro- ne:
gramma.
jrr 0,potr_b,mains1 ;(istruzione lunga 3 byte)
Per correggere un errore possiamo optare tra due
soluzioni: con listruzione:

correggere in maniera temporanea il file .PRJ jrz mains1 ;(istruzione lunga 1 byte)
correggere in maniera definitiva il file .ASM
poich mancano 2 bytes dovremo aggiungere due
Le correzioni temporanee riguardano il solo file istruzioni Nop per avere di nuovo 3 bytes:
.PRJ, quindi spegnendo il computer o comunque
uscendo dal programma DSE622 vengono tutte jrz mains1 nop nop
perdute.
Ad ogni modo ricordatevi di non eccedere con i
Le correzioni definitive possono essere portate so- NOP perch occupereste solo della memoria per
lo sul file .ASM, ma spegnendo il computer o u- eseguire istruzioni a vuoto.
scendo dal programma rimangono in memoria. Quindi se questo vi accadesse vi converr correg-
gere e rivedere tutto il programma direttamente nel
Leggendo quanto sopra sembrerebbe pi logico fa- sorgente.
re le correzioni direttamente nel sorgente, cio nel Per conoscere la lunghezza in byte di tutte le i-
file con estensione .ASM, ma non sempre convie- struzioni potete consultare le tabelle della guida
ne andare in questa direzione per i seguenti sem- pratica che trovate allinizio dellarticolo.
plici motivi:
GLI errori nel programma BTEST
potrebbero esserci altri errori oltre a quello che
avete corretto, Come vi abbiamo spiegato nella rivista N.184, nel
potreste inserirne uno proprio durante la corre- programma BTEST.ASM abbiamo inserito degli er-
zione. rori, per la precisione tre, al fine di mostrarvi co-
me procedere per poterli individuare e di conse-
Inoltre per ricontrollare il programma dovreste nuo- guenza correggere.
vamente compilare il file .ASM, creare il file .PRJ La tipologia degli errori che vi proponiamo con
e settare daccapo i piedini per effettuare una cor- questo esempio pratico ci permette di spiegarvi
retta simulazione. quali test vanno eseguiti e come vanno eseguiti
per trovare gli errori.
E quindi consigliabile apportare, dove possibile, le Inoltre vi spiegheremo come apportare le modifi-
correzioni in modo temporaneo sul file .PRJ, poi che temporanee e definitive in qualsiasi program-
simulare lesecuzione del programma e, una volta ma in linguaggio Assembler per micro ST6.
verificato che tutto funziona regolarmente, potrete
correggere definitivamente il sorgente. Per simulare il programma BTEST prima neces-
sario che lo compiliate in Assembler, in modo da
Tuttavia non tutte le correzioni si possono appor- creare il file BTEST.HEX, e che generiate il rispet-
tare nel file .PRJ. tivo project, cio il file BTEST.PRJ, che viene uti-
Ad esempio non si pu sostituire unistruzione lun- lizzato dal simulatore per testare il programma.
ga 2 bytes con una lunga 3 bytes, perch il byte Per eseguire tutte queste operazioni rimandiamo a
in eccesso andrebbe a ricoprire il primo byte delli- quanto gi ampiamente descritto nel paragrafo
struzione successiva sconvolgendo completa- Compilare in assembler il programma atest.asm
mente le funzioni del programma. riportate a pag.112 e seguenti della rivista N.184.
Quindi prima di sostituire unistruzione con unaltra
bisogna sempre controllare che la nuova istruzio- Quando appare la finestra di fig.97, aprite il file se-
ne non risulti pi lunga di quella da sostituire. lezionando dal menu Project, in alto a sinistra sul-
Ad esempio listruzione JRZ (che lunga 1 byte) la barra del menu, il comando Open Project.
Si aprir cos la finestra di dialogo File Open visi- Prima di testare il programma dovete inserire le
bile in fig.98. variabili della porta A e della porta B nella finestra
Nella finestra a sinistra selezionate la scritta Watch.
BTEST.PRJ quindi cliccate su OK. Anche per questa operazione vi consigliamo di ri-
A video compariranno tutte le finestre visibili in leggere quanto spiegato nella rivista precedente
fig.99, che vi consentono di controllare istruzione sotto il paragrafo Inserire una variabile nella fine-
per istruzione il programma. stra Watch.
In questo modo potrete verificare per ogni istru-
zione lo stato logico dei piedini dingresso (porta
A) e duscita (porta B).

Eseguite tutte queste operazione potrete simulare


le funzioni del programma.

PRIMO TEST

Se avete seguito quanto fin qui detto, nella finestra


Disassembler sar evidenziata listruzione:

FFE 09 88 jp inizio

Fig.97 Dopo il nome del DSE, nella prima ri- visibile anche in fig.99.
ga in alto trovate la barra dei menu a ten-
dina, nella riga immediatamente sotto tro- Cliccate sullicona passo-passo (la 5 posta sul ri-
vate la barra delle icone o degli strumenti ghello in alto vedi fig.100) fino ad arrivare alleti-
che vi consente di accedere rapidamente ai chetta ripeti visibile in fig.101 cio:
comandi di frequente utilizzo.
8B6 0D D8 FE ripeti ldi wdog,FEH

Fig.100 Ogni volta che si clicca sullicona


passo-passo viene eseguita una sola istru-
zione del programma.

Fig.98 In questo articolo esaminiamo at-


tentamente gli errori del file BTEST.PRJ. Prima di proseguire riteniamo necessario ricordar-
vi che il programma BTEST utilizza:

i quattro piedini PA0 - PA1 - PA2 - PA3 della por-


ta A come ingressi
i quattro piedini PB0 - PB1 - PB2 - PB3 della por-
ta B come uscite

Una delle funzioni del programma serve a portare


a livello logico 1 un piedino duscita quando sul
corrispondente piedino dingresso viene applicato
un livello logico 1.

Portiamo un esempio: questo programma potreb-


be essere usato per accendere un diodo led o per
polarizzare la Base di un transistor, in modo che
Fig.99 Le finestre del DSE per simulare le- ecciti un rel, collegato su un piedino duscita
secuzione dei programmi. quando si preme un pulsante che porta a livello
logico 1 il corrispondente piedino dingresso.
Nel nostro caso questa istruzione segnala al pro-
gramma di saltare alletichetta main00 se il bit 0 di
port_a, cio se il piedino PA0, resettato.

Controlliamo il contenuto della porta A nella fine-


stra Watch e, come potete vedere in fig.102, il con-
tenuto della variabile port_a allindirizzo C0 00,
quindi i piedini sono resettati.

Se quindi avanziamo di unaltra istruzione il pro-


gramma salter allistruzione con etichetta main00,
ed in effetti premendo passo-passo viene eviden-
ziata questa istruzione:

8C3 03 C1 02 main00 jrr 0,port_b,mains1


Fig.101 Iniziamo a simulare il programma B- Poich PA0 resettato (livello logico 0) anche PB0
TEST.PRJ dalletichetta ripeti memorizzata
deve essere resettato (livello logico 0), ma il pro-
allindirizzo 8B6 (vedi colonna Add).
gramma prima di portarlo a livello logico 0 con-
trolla che questa uscita non si trovi gi in questa
condizione.
Questa istruzione ha proprio il compito di verifica-
re se il piedino PB0 di port_b settato (livello lo-
gico 1), cio se lipotetico diodo led collegato a
questo piedino acceso, e solo in questo caso lo
spegne, cio porta luscita a livello logico 0.

Se controllate la finestra Watch noterete che il con-


tenuto della port_b allindirizzo C1 00. In altre
Fig.102 La finestra Watch ci permette di parole il piedino gi resettato quindi non ne-
controllare in qualunque momento il con- cessario resettarlo.
tenuto delle variabili port_a e port_b. Avanzando di unistruzione il programma salta per-
ci allistruzione con etichetta mains1:

Quindi se pigiamo il pulsante collegato sullingres- 8C8 0D D8 FE mains1 ldi wdog,0feh


so PA1, si deve accendere il diodo led collegato
sulluscita PB1, e lasciandolo si deve spegnere. Questa istruzione ripristina il watchdog.
Se pigiamo il pulsante collegato sullingresso PA4
si deve accendere il diodo led collegato sullusci- Nota: abbiamo descritto la funzione watchdog sul-
ta PB4, e lasciandolo si deve spegnere. la rivista N.175/176 e poich sappiamo che non vi
manca nessun numero di Nuova Elettronica, non
Ora possiamo verificare se le istruzioni rispondono avrete difficolt a rinfrescarvi la memoria.
a questa funzione.
Cliccando sullicona passo-passo viene eviden-
Dalletichetta ripeti (vedi fig.101), cliccando sulli- ziata listruzione:
cona passo-passo per avanzare di unistruzione,
viene evidenziata: 8CB 83 C0 07 jrr 1,port_a,main01

8B9 03 C0 07 jrr 0,port_a,main00 Come avrete gi intuito, avanzando passo-passo il


programma controlla gli altri piedini della porta A,
Listruzione JRR significa letteralmente fai un sal- cio PA1 - PA2 - PA3, ed i rispettivi piedini della por-
to se il bit di una variabile resettato, cio se si ta B, cio PB1 - PB2 - PB3, come ha appena fatto
trova a livello logico 0. per il piedino dingresso PA0 e quello duscita PB0.
Essendo il contenuto di port_a e port_b uguale a
Nota: per la descrizione di tutte le istruzioni del lin- 0 (vedi finestra Watch), cliccando sempre su pas-
guaggio Assembler rimandiamo alla rivista N.174 so-passo alla fine del controllo il programma tor-
che vi consigliamo di leggere attentamente. ner alletichetta ripeti visibile in fig.101.
SECONDO TEST

Se ci fermassimo a questo primo superficiale con-


trollo potremmo affermare che il programma fun-
ziona correttamente.
Noi per sappiamo che il BTEST contiene tre er-
rori, perch li abbiamo messi di proposito, quindi Fig.103 Per accedere al sottomenu relativo
ora vi spieghiamo quali altri controlli vanno effet- ad una finestra, nel nostro caso Data, oc-
tuati per testare ulteriormente il programma. corre rendere attiva la finestra cliccando sul
nome corrispondente, cio Data.
Unaltra prova che va fatta quella di simulare
un interruttore, cio portare a livello logico 1
tutti i quattro ingressi della porta A per verifica-
re se anche le rispettive uscite si portano a li-
vello logico 1.

Per portare a livello logico 1 gli ingressi della por-


ta A attivate la finestra Data cliccando sulla scritta
corrispondente (vedi fig.103).
Fig.104 Scegliendo il sottomenu Goto Ad-
Nel paragrafo Esecuzione in automatico (vedi ri- dress potrete posizionarvi direttamente sul
vista N.184) vi abbiamo spiegato come trovare il valore esadecimale dellindirizzo di memo-
valore esadecimale di un indirizzo di memoria, nel ria in cui memorizzata la variabile.
nostro caso il valore di port_a.
Poich esiste anche una strada diversa per cono-
scere questo valore, riteniamo opportuno che la co-
nosciate, e quindi ora ve la spieghiamo.

Nella barra degli strumenti visibile sulla parte alta


del monitor cliccate sulla scritta Data e nella pic-
cola finestra che appare selezionate la scritta Go-
to Address (vedi fig.104).
Apparir la finestra di dialogo di fig.105. Fig.105 Nella riga Address cercate il nome
della variabile cliccando sulla freccia gi.
Cliccate sulla freccia gi fino a trovare la variabi-
le port_a e quando lavete trovata selezionatela,
quindi cliccate su OK (vedi fig.106).

Nella finestra Data verr evidenziato il valore esa-


decimale 00 (vedi fig.107), che corrisponde al con-
tenuto della variabile port_a.

Cliccate nuovamente sul menu Data e selezionate


Fig.106 Quando avete selezionato la varia-
questa volta la scritta Edit Data. bile cliccate su OK per tornare alla finestra
Apparir la finestra di dialogo di fig.108. Data, visibile in fig.107.

Cliccate sulla scritta Bits per far apparire la fine-


stra di dialogo di fig.109.

Ora portate a livello logico 1 i quattro piedini din-


gresso PA0 - PA1 - PA2 - PA3 di port_a, cliccan-
do con il cursore nelle caselle 0 - 1 - 2 - 3.
In queste caselle apparir una V (vedi fig.110).
Fig.107 In questa finestra viene evidenzia-
Cliccate su OK per tornare alla finestra di dialogo to il valore esadecimale dellindirizzo della
Edit Data, in cui viene ora segnalato il nuovo va- variabile selezionata nella fig.106.
lore esadecimale della variabile port_a, cio F,
che, come sapete, corrisponde al valore decimale
15 ed al valore binario 00001111.
Cliccate nuovamente su OK.

Nota: Nel nostro volume Handbook a pag.372 tro-


verete un articolo dedicato al linguaggio esadeci-
male - binario - decimale e a pag.381 una Ta-
bella di conversione che potr risultarvi molto uti-
le.
Fig.108 Questa finestra di dialogo appare
A riprova di quanto detto nelle finestre Watch e Da- quando si seleziona il sottomenu Edit Data
ta vedrete il nuovo valore assunto da port_a. dal menu Data. Per cambiare lo stato logi-
co dei piedini cliccate su Bits.
A questo punto possiamo far ripartire il programma
per verificare se, portando a livello logico 1 un
piedino dingresso di port_a, ritroviamo un livello
logico 1 anche sul corrispondente piedino dusci-
ta di port_b.

Se il programma non posizionato sulletichetta ri-


peti (vedi fig.101), attivate la finestra Disassem-
bler cliccando sulla scritta corrispondente, quindi
portate il cursore sulla scritta Disassembler sulla Fig.109 Le caselle che interessano i piedini
barra dei menu e cliccate cos che appaia la fine- PA0 - PA1 - PA2 - PA3 sono vuote perch
stra di fig.111 e selezionate lopzione Set New PC. questi piedini sono resettati.

Nella finestra di dialogo New program counter


cliccate sulla freccia gi posta sulla destra fino a
quando non trovate letichetta ripeti, quindi sele-
zionatela e cliccate su OK (vedi fig.112).

Prima di far ripartire il programma sar utile inse-


rire un breakpoint.
Fig.110 Per portare i piedini PA0 - PA1 - PA2
Nella finestra Disassembler cliccate due volte su
- PA3 a livello logico 1 cliccate sulle casel-
ripeti e quando compare la finestra di dialogo di le corrispondenti.
fig.113 cliccate sulla scritta Toggle Breakpoint.
In questo modo a sinistra di questa istruzione ap-
parir un punto esclamativo (!) come visibile in
fig.114.

A questo punto potete lanciare lesecuzione auto-


matica del programma cliccando sullicona che
rappresenta una pagina con una freccia gi (ve- Fig.111 Il sottomenu Set New PC vi con-
di fig.115). sente di aprire la finestra di dialogo New
Vi accorgerete che il programma, arrivato alleti- program counter (vedi fig.112).
chetta mains3, esegue in maniera ciclica e allin-
finito (in gergo si dice che c un loop) un certo
numero di istruzioni, e precisamente quelle relati-
ve alla gestione dei piedini PA3 e PB3.
Questo evento ci mette sullavviso che tra queste
istruzioni c un errore.
Per bloccare lesecuzione del ciclo, cos da sco-
prire lerrore, cliccate sullicona stop (vedi fig.116) Fig.112 Grazie a questa finestra di dialogo
allistruzione: potete far partire lesecuzione del pro-
gramma dalletichetta ripeti.
8EF C3 C0 07 jrr 3, port_a,main03
Se cliccando sullicona stop non riuscite a fermar-
vi su questa istruzione, utilizzate il comando Set
New Pc del menu Disassembler (vedi fig.111).
Nella finestra di dialogo che appare digitate lindi-
rizzo 8EF (vedi fig.117) quindi cliccate su OK.

Ora conviene utilizzare il comando passo-passo


per vedere dove abbiamo commesso lerrore.

Listruzione memorizzata allindirizzo 8EF dice che


se il piedino PA3 della porta A a livello logico Fig.113 Se volete inserire un breakpoint in
0, il programma deve saltare allistruzione con eti- una determinata istruzione, cliccate due
chetta main03. volte sullistruzione corrispondente per at-
Siccome per noi abbiamo posto questo piedino a tivare questo menu di scelta rapida.
livello logico 1, cliccando su passo-passo il pro-
gramma dovrebbe proseguire allistruzione suc-
cessiva e non saltare alletichetta main03.
Infatti cliccando su passo-passo il programma e-
videnzia listruzione successiva:

8F2 D3 C1 09 jrs 3,port_b,mains4

Questa istruzione controlla se il piedino PB3 della


porta B a livello logico 1, e se si trova in que-
Fig.114 Cliccando su Toggle Breakpoint di
sta condizione salta direttamente allistruzione con
fig.113, a sinistra dellistruzione apparir un
etichetta mains4.
punto esclamativo (!).
Cliccando su passo-passo il programma non sal-
ta a mains4, ma prosegue allistruzione successi-
va perch deve prima portare a livello logico 1 il
piedino PB3:

8F5 DB C0 set 3, port_a


Fig.115 Licona segnalata dal cursore per-
Ecco dov lerrore. Infatti questa istruzione do-
mette di lanciare lesecuzione automatica
vrebbe servire a settare il bit 3 di port_b, cio PB3, del programma.
mentre noi abbiamo scritto erroneamente di setta-
re il bit 3 di port_a, cio PA3.

In questo caso possiamo correggere listruzione


apportando una modifica temporanea, cos da po-
ter continuare poi i nostri test, sostituendo allindi-
rizzo di port_a lindirizzo di port_b. Fig.116 Licona segnalata dal cursore per-
mette di fermare lesecuzione automatica
Questa modifica temporanea ci consente di pro- del programma.
seguire il controllo del programma dal punto in cui
ci troviamo senza dover ripristinare tutti i parame-
tri compreso il settaggio dei piedini delle porte.

Per capire come correggere questo errore, rive-


diamo listruzione sbagliata:

8F5 DB C0 set 3, port_a


Fig.117 Come abbiamo gi detto (figg.111-
Listruzione set 3,port_a tradotta dal compilato- 112), potete far ripartire lesecuzione dal
re in formato intel.hex nel valore esadecimale DB programma da qualsiasi punto. In questo
C0, che potete vedere nella finestra Disassembler caso dallindirizzo 8EF.
sotto la colonna Opcode (vedi fig.118).
Ora dobbiamo verificare se effettivamente quando
i quattro piedini dingresso (cio PA0 - PA1 - PA2
- PA3) sono a livello logico 1 anche i quattro pie-
dini di uscita (cio PB0 - PB1 - PB2 - PB3) si tro-
vano a livello logico 1.
Abbiamo una riprova visiva di ci guardando la fi-
nestra Watch, dove sia port_a sia port_b hanno lo
stesso valore esadecimale 0F che corrisponde al
Fig.118 Listruzione set 3 tradotta dal valore decimale 15 ed al valore binario 00001111,
compilatore nel valore DB e memorizzata come potete anche vedere nella Tabella riportata a
allindirizzo 8F5, port_a tradotta nel valo- pag.381 del nostro volume HANDBOOK che pen-
re C0 e memorizzata allindirizzo 8F6 (vedi siamo sar sempre a portata di mano.
colonne Opcode e Add).

La stessa istruzione viene memorizzata allinterno


del micro allindirizzo 8F5 - 8F6 di Program Spa-
ce (infatti se guardate la finestra del Disassembler
sotto la colonna Add, listruzione seguente me-
morizzata a partire dallindirizzo 8F7).

In questo caso il valore DB corrisponde allistru-


zione set 3 e si trova allindirizzo 8F5, mentre il va-
lore C0 corrisponde allindirizzo delloperando Fig.119 Selezionando il sottomenu Goto
Address del menu Code aprite la finestra di
port_a e si trova allindirizzo seguente, cio 8F6,
dialogo visibile in fig.120.
pertanto a questo indirizzo che dobbiamo opera-
re la nostra modifica.

Sostituendo nellindirizzo di memoria 8F6 il valore


corrispondente a port_a (cio C0) con il valore cor-
rispondente a port_b (cio C1) elimineremo questo
errore senza modificare il sorgente BTEST.ASM.
Per conoscere gli indirizzi di port_a e port_b dovete
guardare nella finestra Watch sotto la colonna Add.
Fig.120 Poich dovete correggere la varia-
bile memorizzata allindirizzo 8F6, digitate
Per andare allindirizzo 8F6 attivate la finestra Co-
questo numero quindi date lOK.
de cliccando sul nome corrispondente, quindi dal
menu Code della barra degli strumenti seleziona-
te il comando Goto Address (vedi fig.119).
Nella finestra di dialogo digitate 8F6 (vedi fig.120),
quindi cliccate su OK.
Ritornerete cos nella finestra Code dove vedrete
evidenziato il valore C0 che dovete correggere (ve-
Fig.121 Nella finestra Code viene eviden-
di fig.121).
ziato il valore C0, che corrisponde alla va-
Cliccate su questo valore 2 volte e nella finestra di
riabile port_a. Cliccate due volte su C0.
dialogo che appare (vedi fig.122) digitate C1, che
come abbiamo gi detto, lindirizzo di port_b.
Cliccate su OK e nella finestra Disassembler ve-
drete che listruzione si modificata in:
8F5 DB C1 set 3, port_b
Ora che abbiamo corretto questo errore possiamo
continuare la simulazione del programma premen-
do licona esecuzione automatica, cio il disegno
con la pagina e la freccia gi (vedi fig.115). Fig.122 Nella finestra Edit digitate C1, cio
lindirizzo della variabile che dovete sosti-
In questo modo il programma prosegue in modo
tuire che corrisponde a port_b.
automatico fino alletichetta ripeti, dove, come ri-
corderete, abbiamo messo un breakpoint.
Un altro modo per verificare lo stato dei piedini di gono resettati i rispettivi piedini di port_a, in altre
port_b ripetere la procedura eseguita allinizio di parole di portare a livello logico 0 i piedini dusci-
questo paragrafo per portare a livello logico 1 i ta quando vengono posti a livello logico 0 i piedi-
piedini di port_a, sostituendo lindirizzo di port_a ni dingresso.
con lindirizzo di port_b, cio sostituendo C0 con
C1. Il terzo test si propone di verificare questa funzione.

Attivate la finestra Data cliccando sulla scritta cor- Innanzitutto se nella finestra Disassembler non
rispondente, quindi cliccate sul menu Data della viene evidenziata letichetta ripeti, cliccate sulla
barra dei menu e selezionate Goto Address. scritta Disassembler nella barra dei menu e sele-
Nella finestra di dialogo che appare cercate la va- zionate Set New PC (vedi fig.111).
riabile port_b, selezionatela e quindi cliccate su Nella finestra di dialogo che appare cercate leti-
OK. chetta ripeti cliccando sulla freccia gi e quando
Nella finestra Data verr evidenziato il valore esa- lavrete trovata selezionatela quindi cliccate su OK
decimale 0F che corrisponde al contenuto della va- (vedi fig.112).
riabile port_b.
Cliccate nuovamente sul menu Data e questa vol- Per resettare i piedini della porta A attivate la fi-
ta selezionate Edit Data. nestra Data cliccando sul nome corrispondente.
Nella finestra di dialogo che appare cliccate sulla Cliccate sulla scritta Data della barra dei menu in
scritta Bits per aprire la finestra di dialogo visibile modo che appaia la piccola finestra visibile in
in fig.123. fig.124 e selezionate Goto Address.
Se nella finestra di dialogo non compare C0, digi-
tate manualmente questo indirizzo (vedi fig.125) e
cliccate su OK.
Ora cliccate due volte sul valore 0F evidenziato
nella finestra Data e nella finestra di dialogo che
appare cliccate su Bits.
Cliccando nelle caselle in cui appare la V, riporta-
te tutti i piedini dingresso di port_a a livello logi-
co 0 (le caselle 0 - 1 - 2 - 3 devono essere vuote)
come visibile in fig.126.
A questo punto cliccate su OK per tornare alla fi-
Fig.123 Come potete vedere tutti i piedini del- nestra principale del DSE.
la porta B sono settati, cio sono a livello lo-
gico 1. Uscite cliccando su Cancel.

Come potete verificare, ai 4 piedini settati della por-


ta A corrispondono 4 piedini settati della porta B
(infatti le caselle 0 - 1 - 2 - 3 hanno una V).

Uscite da questa finestra senza fare nessuna mo-


difica cliccando sulla scritta Cancel.
Fig.124 Per portare a livello logico 0 i pie-
Vi consigliamo di eseguire in automatico una o dini della porta A, dal menu Data scegliete
due volte il programma per essere certi di non a- Goto Address.
ver modificato senza volere i valori di port_a e
port_b.

Premete sullicona esecuzione automatica e se tut-


to procede in modo regolare il programma si fer-
mer al breakpoint.

TERZO TEST Fig.125 Poich lindirizzo C0 corrisponde a


port_a, digitate questo valore quindi clic-
La seconda funzione del programma BTEST cate su OK.
quella di resettare i piedini di port_b quando ven-
Ora potete eseguire il programma in automatico,
cliccando cio sullicona con una pagina con la
freccia in gi (vedi fig.115), e vedrete che si fer-
mer al breakpoint.
Si potrebbe supporre che il programma rispetti an-
che questa funzione, ma se guardate nella finestra
Watch (vedi fig.127) noterete che pur essendo tut-
ti i piedini di port_a a livello logico 0 (valore esa-
decimale 00) i piedini di port_b non sono tutti a li-
vello logico 0 (valore esadecimale 04).
Fig.126 Per resettare i piedini di porta A clic-
Nel programma c quindi un errore. cate sulle caselle 0 - 1 - 2 - 3.

Se non sapete a quale valore binario corrisponde


il valore esadecimale 04, cio se non sapete qua-
le bit a livello logico 1, attivate la finestra Data e
dal menu Data selezionate Goto Address.
Nella finestra di dialogo che appare digitate lindi-
rizzo di port_b, cio C1 (vedi fig.128), poi cliccate
su OK.
Fig.127 Controllando la finestra Watch vi
Quindi cliccate due volte sul valore 04 evidenzia- accorgerete che sebbene il contenuto di
to nella finestra Data e nella finestra di dialogo che port_a sia 00, il contenuto di port_b 04.
appare selezionate la scritta Bits.
Come visibile in fig.129, il piedino PB2 risulta an-
cora a livello logico 1 sebbene lingresso corri-
spondente, cio PA2, risulti a livello logico 0.

E dunque ovvio che nel programma c una istru-


zione sbagliata, che non porta a livello logico 0
il piedino PB2 quando il corrispondente piedino
dingresso PA2 a livello logico 0. Fig.128 Per sapere quale bit della porta B
a livello logico 1, in Goto Address digitate
Senza modificare nulla chiudete le finestre di dia- C1, che lindirizzo di port_b.
logo cliccando su Cancel.

La gestione dei piedini PA2 e PB2 associata alle-


tichetta mains2, quindi ricontrolliamo il programma
partendo da questa etichetta.

Attivate la finestra Disassembler cliccando sulla


scritta corrispondente, quindi dal menu Disassem-
bler della barra dei menu selezionate la scritta Set
New PC (vedi fig.111).
Fig.129 Il valore esadecimale 04 che ave-
Cliccando sulla freccia gi cercate la scritta
vate visto nella finestra Watch (fig.127) cor-
mains2 e selezionatela (vedi fig.130), poi cliccate risponde al piedino PB2 settato.
su OK.

Il programma si posizioner sullistruzione:

8DA 0D D8 FE mains2 ldi wdog,0FEH

che serve a caricare il watchdog.

A questo punto cliccate sullicona passo-passo e Fig.130 Ricontrollate il programma parten-


verr evidenziata listruzione successiva: do dalletichetta mains2, che gestisce i pie-
dini PA2 e PB2.
8DD 43 C0 C7 jrr 2,port_a,main02
Questa istruzione significa: salta a main02 se il pie- In altre parole con un numero binario di 8 bit riu-
dino 2 di port_a resettato, cio se PA2 si trova sciamo a definire listruzione, nel nostro caso RES
a livello logico 0. che occupa i primi 5 bit da 0 a 4, ed il piedino a
Siccome avevamo posto a livello logico 0 tutti gli cui listruzione si riferisce, nel nostro caso il bit 2
ingressi della porta A, cliccando su passo-passo che occupa gli ultimi 3 bit da 5 a 7.
il programma salter allistruzione corrispondente
alletichetta main02: posizione bit 7 6 5 4 3 2 1 0
codice opcode b 0 1 0 1 1
8E7 43 C1 02 main02 jrr 2,port_b,mains3

Questa istruzione significa: salta a mains3 se il pie- Poich dovete resettare il bit 2, per trasformare
dino 2 di port_b resettato, cio se PB2 a li- questo numero decimale in un numero binario po-
vello logico 0. tete utilizzare la Tabella sotto riportata.
In altre parole verifica lo stato logico del piedino
2 di port_b, perch se questo risulta gi a livello Tabella N.1
logico 0 non lo resetta nuovamente.
Tuttavia noi sappiamo gi che questo piedino ri- DECIMALE BINARIO
masto a livello logico 1, perch labbiamo con- 0 0 0 0
trollato tramite la finestra Watch (vedi figg.127 e 1 0 0 1
129). 2 0 1 0
Di conseguenza cliccando su passo-passo il 3 0 1 1
programma non salta a mains3, ma prosegue 4 1 0 0
allistruzione successiva che resetta il piedino 5 1 0 1
PB2: 6 1 1 0
7 1 1 1
8EA 5B C1 set 2,port_b Come potete vedere il numero decimale 2 corri-
sponde al numero binario 0 1 0.
Ecco dov lerrore: infatti il piedino non deve es- Pertanto per trasformare listruzione Set 2, che
sere settato, ma resettato quindi listruzione er- errata, cio:
rata set e quella giusta : res 2,port_b
010 11011 (i 3 bit di sinistra sono b dellopcode)
Su questa istruzione possiamo apportare una
correzione temporanea anche se la correzione nella corretta istruzione Res 2, dobbiamo conside-
risulta un poco pi complessa, perch, come a- rare questo numero binario:
vrete gi intuito, non dobbiamo modificare la
parte dellopcode che si riferisce alloperando, 010 01011
ma quella che contiene listruzione vera e pro-
pria. Per convertire questo numero binario in un numero
esadecimale potete utilizzare le tabelle di conver-
Lopcode dellistruzione SET (vedi tabella a sione a pag.381 del nostro volume Handbook.
pag.103): Se non disponete di questo Handbook vi convie-
ne procurarvelo perch troverete spiegato come si
b11011 rr (Setta un piedino) fa a convertire un numero binario in un numero
decimale o esadecimale.
Lopcode dellistruzione RES (vedi tabella a
pag.102) invece: Nelle Tabelle dellHandbook potete vedere che li-
struzione Set 2:
b01011 rr (Resetta un piedino)
0101-1011 equivale al numero esadecimale 5B
Il secondo byte di queste istruzioni dato da rr,
che corrisponde allindirizzo delloperando, nel no- e che listruzione di Res 2:
stro caso port_b, cio C1.
Il primo byte dellistruzione RES dato da 0100-1011 equivale al numero esadecimale 4B
b+01011, dove b equivale a 3 bit che definiscono
quale bit delloperando da 0 a 7 deve essere re- Ora che sapete come correggere listruzione, atti-
settato mentre 01011 equivale allistruzione res in vate la finestra Code quindi dal menu Code sele-
binario. zionate il comando Goto Address e nella finestra
di dialogo che appare digitate 8EA (vedi fig.131), Cliccate sullicona passo-passo per far ese-
che lindirizzo di memoria Program Space corri- guire listruzione e nella finestra Watch vedre-
spondente allistruzione set 2, port_b. te che il valore esadecimale di port_b diven-
Potete vedere questo indirizzo nella finestra Di- tato 00.
sassembler sotto la colonna Add.
Se cliccate su OK, nella finestra Code verr evi- Cliccate ora sullicona esecuzione automatica
denziato il numero 5B (vedi fig.132). (vedi fig.115) ed il programma, eseguita qual-
Cliccate due volte su questo numero quindi nella che istruzione, si fermer di nuovo al break-
finestra di dialogo che appare scrivete il nuovo va- point.
lore, cio 4B (vedi fig.133). Per essere sicuri di non aver variato altri valori men-
tre correggevate listruzione, meglio far eseguire
il programma un paio di volte cliccando sempre su
esecuzione automatica.
Se non esistono altri errori il programma eseguir
un ciclo completo e si fermer sempre al break-
point.
Durante questa fase potrete osservare nella fine-
stra Watch che le variabili port_a e port_b non
cambiano di valore.
Fig.131 Poich dovete correggere listru-
zione set 2, port_b, nella finestra Goto Ad- Anche se il programma ci conferma che non esi-
dress digitate 8EA, che lindirizzo di me- stono altri errori e tutto procede regolarmente, sap-
moria Program Space di questa istruzione. piamo che esiste un altro errore, che noi abbiamo
Quindi cliccate su OK. volutamente inserito nel file BTEST.ASM.
Per poter scoprire questultimo errore occorre ne-
cessariamente fare un quarto test.

QUARTO TEST

Fig.132 Nella finestra Code viene eviden- Il terzo errore da noi inserito riguarda un passag-
ziato 5B, che il valore esadecimale corri- gio insidioso e molto subdolo, perch non cambia
spondente allistruzione set 2. Cliccate due la logica dellesecuzione quindi potrebbe non es-
volte su questo valore, per aprire la finestra
sere mai trovato da chi non ha molta esperienza.
di dialogo visibile in fig.133.
Infatti malgrado ci sia questo errore il programma
funziona correttamente.

Posizionatevi sulletichetta ripeti e lasciate il


breakpoint.
Guardate nella finestra Watch dove le variabili
port_a e port_b dovrebbero essere a 0.

Per trovare questo errore dovete riportare a livel-


lo logico 1 il piedino PA3 di port_a
Fig.133 Ora potete correggere il valore e- Riteniamo che la procedura per settare i piedini di
sadecimale 5B, che equivale a set 2, con il una porta vi sia gi familiare (vedi figg.104-110),
valore esadecimale 4B, che equivale alli-
comunque, nel caso ancora non aveste preso con-
struzione res 2.
fidenza con il programma, dovete attivare la fine-
stra Data ed utilizzare il comando Goto Address
del menu Data. Digitate il valore di port_a, cio C0,
quindi, dopo aver dato lOK, cliccate due volte su
Cliccate su OK e nella finestra Disassembler ve- 00 poi nella finestra di dialogo che appare cliccate
drete che questa istruzione sar stata modificata su Bits.
come sotto riportato:
Dopo aver portato a livello logico 1 il piedino PA3
8EA 4B C1 res 2, port_b potrete uscire cliccando su OK.
In questo modo tornate nella finestra principale e Il programma ha svolto regolarmente la sua fun-
vedrete nella finestra Watch che la variabile port_a zione: controlla se PA3 settato, cio se si trova
ha valore 8 (vedi fig.134). a livello logico 1, poi controlla ed eventualmente
modifica la porta duscita PB3.
Per averne una verifica immediata controllate il va-
lore della variabile port_b nella finestra Watch e
vedrete che 8 (vedi fig.134).

A questo punto il programma dovrebbe proseguire


andando a controllare gli ultimi piedini, cio PA4 e
PB4, quindi dovrebbe saltare allistruzione con eti-
chetta mains4, ma il realt lultima istruzione ese-
gue un salto incondizionato alletichetta mains3 co-
me potrete constatare cliccando nuovamente su
Fig.134 Avendo portato a livello logico 1 il passo-passo:
piedino PA3, nella finestra Watch viene e-
videnziato il nuovo contenuto di port_a. 8EC 0D D8 FE mains3 ldi wdog,FEH

Cliccando sullicona passo-passo viene eviden-


ziata listruzione:
A questo punto rieseguite il programma passo-
passo fino allistruzione: 8EF C3 C0 07 jrr 3,port_a, main03

8EC 0D D8 FE mains3 ldi wdog, FEH Poich il piedino PA3 sempre settato cliccando
passo-passo il programma prosegue allistruzione
che serve a caricare il watchdog. successiva:
Premete ancora sullicona passo-passo per pas-
sare alla istruzione successiva: 8F2 D3 C1 09 jrs 3, port_b, mains4

8EF C3 C0 07 jrr 3,port_a, main03 A questo punto per PB3 gi stato settato, quin-
di premendo passo-passo il programma prosegue
Questa istruzione significa: se il piedino 3 di allistruzione con etichetta mains4 per controllare
port_a resettato, cio a livello logico 0, il pro- lo stato logico degli ultimi piedini.
gramma deve saltare allistruzione con etichetta
main03. In pratica il programma esegue due volte una
Poich abbiamo appena posto questo piedino a li- serie distruzioni per controllare i piedini PA3 e
vello logico 1, il programma non salta a main03 PB3.
ma prosegue allistruzione successiva ed infatti Questo doppio controllo non crea nessun pro-
cliccando sullicona passo-passo viene evidenzia- blema sulla funzionalit, per se un domani ap-
ta: porterete delle modifiche al programma inserendo
altre istruzioni proprio tra queste ultime righe che
8F2 D3 C1 09 jrs 3, port_b, mains4 abbiamo analizzato, questo potrebbe crearvi dei
grossi problemi e potrebbe diventare difficile indi-
Questa istruzione dice che se il piedino 3 di port_b viduare lerrore.
settato, cio a livello logico 1, il programma
deve saltare allistruzione con etichetta mains4. Ad esempio se inserite un contatore che si incre-
Poich questo piedino a livello logico 0 (come menta di una unit ogni volta che il programma
possiamo vedere nella finestra Watch), cliccando controlla i quattro piedini, constaterete che men-
passo-passo il programma prosegue allistruzione tre per gli altri piedini la somma si incrementa di
successiva: una unit, per la routine del piedino PA3 si incre-
menta di due unit perch esegue per due volte
8F5 DB C1 set 3, port_b consecutive questa routine.

Questa istruzione setta il piedino duscita PB3 e Per rintracciare questo errore non necessario
cliccando su passo-passo viene evidenziata: che chi scrive il programma sappia a memoria tut-
te le istruzioni, ma importante che abbia ben chia-
8F7 C9 8E jp mains3 ro lo schema logico.
E per questo motivo che questi tipi di errori sono
difficili da individuare.

Per concludere lerrore subdolo listruzione:

8F7 C9 8E jp mains3
Fig.135 Per correggere in maniera definiti-
che fa ripetere per due volte consecutive questa
va il programma BTEST necessario ap-
routine.
portare le correzioni nel sorgente, cio nel
Listruzione va corretta con jp mains4. file BTEST.ASM. Dal DSE possibile acce-
dere direttamente alleditor dellST6, sce-
Conoscendo i 3 errori da noi inseriti nel program- gliendo ST6 dal menu Tools.
ma BTEST.PRJ, possiamo andare direttamente
nel file BTEST.ASM per correggerli tutti definitiva-
mente.
Nel caso voleste conservare gli errori presenti in
questo programma per eventuali test, prima di ap-
portare le modifiche copiate il file BTEST.ASM con
un altro nome, ad esempio CTEST.ASM, utiliz-
zando le funzioni di copia di Windows.

Per fare le correzioni andate direttamente nelle-


ditor di ST6 selezionando dal menu Tools la scrit-
ta ST6 (vedi fig.135).
Apparir cos la finestra delleditor di ST6.
Premete F3 per aprire il file e nella finestra di dia- Fig.136 Per aprire un file nelleditor dellST6
logo che appare selezionate BTEST.ASM (vedi potete usare il tasto funzione F3, che attiva
fig.136) quindi cliccate su Open. questa finestra di dialogo. Selezionate con
Appariranno sul vostro monitor le istruzioni del pro- il cursore file BTEST.ASM, quindi cliccate
gramma BTEST.ASM. su Open.
Utilizzate la freccia gi fino allistruzione da noi nu-
merata come 87 (accanto a questo numero vedre-
te anche un asterisco) che corrisponde al numero
147:1 delleditor.
Modificate set 2,port_b in res 2,port_b.

Ora proseguite fino al secondo asterisco *91 (che


corri