Applicazioni Software |
PROGETTO n° 01 - 6/13 [23 di 65] |
|
|
||
|
||
Analisi delle procedure importanti [2 di 7] |
|
Ricostruzione temporale dei segnali con Bus a 8 bit [segue, 2 di 2] |
Il primo compito della procedura è dunque quello di forzare E a 0, RS a 0 o a 1 a seconda che si deva scrivere rispettivamente un codice operativo (istruzione) o un carattere (dato), e R/W a 0. | |||||
Ciò significa forzare al medesimo valore logico i corrispondenti pin17, pin16 e pin1del connettore della porta parallela. | |||||
Per far questo basta scrivere sul registro la giusta combinazione, ma non bisogna dimenticare che le uscite del Registro d'uscita 037AH/027AH della parallela, corrispondenti ai bit3 (associato ad E) e bit0 (associato ad R/W) sono invertiti internamente. | |||||
In definitiva, per generale la
prima sequenza di livelli sui segnali del modulo dovremo avere:
|
|
Per rendere la procedura
adatta sia alla scrittura di dati
che a quella di comandi ho pensato di
predisporre in AH un numero che la aiuti
ad impostare automaticamente entrambe le
situazioni.
|
|
Progetto |
NB: se il testo nell'Area
ti
sembra strano installa il font Giobe.TTF: clicca qui!! |
|
Finalmente tutto è pronto per iniziare la fase di scrittura sul modulo; la configurazione di bit che farà assumere ai segnali il giusto valore viene effettivamente attivata; da notare il piccolo ritardo, successivo all'attivazione, per consentire ai segnali RS e R/W di mantenere il loro valore logico per almeno 60 ns (Tas, Address Setup Time) prima di portare alto il segnale di abilitazione E: |
|
|
E' il momento di porre sul bus dati il byte da scrivere; per evitare di perderlo in precedenza (prima istruzione) era stato salvato in BL e da esso viene estratto per essere spedito al Registro d'uscita 0378H/0278H della porta parallela. | |
Da notare che questa operazione non altera (PUSH/POP) il valore corrente di AL, che contiene ancora in uscita il prezioso codice corrispondente allo stato attuale dei segnali (xxxx10x1 per le istruzioni e xxxx11x1 per i dati): |
|
|
Il segnale E è ancora a 0; bisogna portarlo a 1 ed attendere almeno altri 450 ns (Tw, Enable Pulse Width) e comunque almeno 195 ns (Tds, Data Setup Time) prima di riportarlo di nuovo a 0. | |
Le istruzioni seguenti, con l'aiuto della AND, forzano a 0 solo il bit3 e quindi solo il segnale E a 1 (per via dell'inversione interna) lasciando inalterati RS e R/W: |
|
|
E' arrivato il momento di scrivere il byte presente sul bus dati nella memoria del controller del modulo: poichè l'evento si manifesta sul fronte di discesa di E è necessario riportarlo a 0. | |
Le istruzioni seguenti, con l'aiuto della OR, forzano a 1 solo il bit3 e quindi solo il segnale E a 0, per via dell'inversione interna) lasciando inalterati RS e R/W. | |
La procedura di ritardo è chiamata perchè il dato deve essere mantenuto sul bus almeno altri 10 ns (Th, Data Hold Time) dopo che il segnale E è tornato basso: |
|
|
La Procedura Out_By8 è finalmente terminata; poichè nel caso di gestione con bus a 4 bit è necessario chiamarla 2 volte, il valore del byte da scrivere sul modulo è lasciato inalterato in uscita, prelevato da BL, in cui era stato salvato in precedenza (prima istruzione): |
|
|
Display LCD | PROGETTO n° 01 - 6/13 | |||||||
23 di 65 |
|
|
Home |
|
|||||||
|
Motore Ricerca |
|