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 |
|