Descrizioni operazioni

Materie:Appunti
Categoria:Sistemi
Download:69
Data:22.03.2005
Numero di pagine:11
Formato di file:.doc (Microsoft Word)
Download   Anteprima
descrizioni-operazioni_1.zip (Dimensione: 15.04 Kb)
trucheck.it_descrizioni-operazioni.doc     58.5 Kb
readme.txt     59 Bytes



Testo

Microprocessori:
Sono componenti logici guidati da un programma in grado di adeguare il proprio funzionamento in funzione di una serie di istruzioni contenute in memoria che gli consentono di variare rapidamente le funzionalità del sistema.
Microcontrollori:
Sono dispositivi integrati che riuniscono al loro interno una struttura simile ad un computer cioè contengono la CPU, memoria ROM,Ram e interfacce I/O.
Impieghi dei microcontrollori: sono utilizzati nel settore industriale, dell’automazione automobilistico e apparecchiature elettromedicinali.
Logica Cablata combinatorio
Logica Cablata sequenziale
Logica Cablata Programmabile
Sono + lenti perché ci sono vari passi da fare
1. trasferire l’istruzione della memoria centrale al microprocessore
2. decodificare le istruzioni arrivate
3. esecuzione dell’istruzione
4. trasferimento del risultato dal microprocessore alla memoria centrale a all’uscita
5.
Organizzazione logica Hardware
I circuiti di Memoria e microprocessori e il dispositivo di I/O sono collegati tramite una struttura a Bus che costituisce il luogo fisico dove transitano sotto forma di segnali DATI, ISTRUZIONE e SEGNALI di controllo.
Funzionamento del microprocessore
La CPU preleva dalla memoria il codice operativo, decodifica il contenuto attraverso appositi registri interni e esegue le operazioni previste. La fase di esecuzione può prevedere sial il movimento dei dati della memoria se verso la memoria sia l’elaborazione interna della CPU. Se sul bus dati viaggia un informazione che si dirige verso il microprocessore questa informazione può essere un istruzione o un dato numerico. Se si tratta di un istruzione viene depositata al registro delle istruzioni e poi viene decodificato. L’unita di controllo viene messa al corrente del tipo di istruzione e predispone i circuiti per l’esecuzione. Se invece viaggia un dato numerico viene trasferito in uno dei registri speciali.
L’istruzione di un microprocessore può essere diviso in 2 parti:
codice operativo e operando sorgete e destinatario.
Il codice operativo dice alla cpu cosa fare mentre l’operando fornisce all’istruzione i dati necessari che possono provenire o dalla memoria o da un registro e possono essere contenuti nell’istruzione stessa. L’operando è composta da 2 camp: sorgente e destinatario. Ci sono delle eccezioni a questo formato delle istruzioni. Gli operandi possono non esserci e ci può essere un solo operando oppure + di 2 operandi. Per produrre il codice operativo che è composto da 1 o 0 è necessario utilizzare un linguaggio macchina detto Mnemonico (assembler) in generale è composto da una serie di comandi che si dividono in
• istruzioni che permettono di tradurre il linguaggio macchina in codice mnemonico
• dichiarazioni variabili
• direttive
• istruzione
Fase di fetch -> prelievo istruzione
Fase di esecuzione
Nella fase di fetch il microprocessore pone sui bus degli indirizzi il contenuto del registro detto program counter. Trasferisce nel contenuto della locazione di memoria indirizzata nel registro d’istruzione e di incrementare il pc e viene decodificato il codice operativo dell’istruzione. Nella fase di esecuzione vengono attirati i circuiti che realizzano la funzione richiesta dall’istruzione.
Caratteristiche dell’8051
• la CPU è ottimizzata per le operazioni di controllo a 8 bit
• la rom ha una capacità di 4Kbyte di memoria interna.
• La RAM ha una capacità di 128byte per dati.
• Ha la capacità di avere una memoria indirizzabile al massimo di 64Kbyte
• Ci sono 4 porte di ingresso e di uscita ognuna di queste è composta da 8 linee. In tutto avremmo 32 linee tra I/O
• Ci sono 5 linee di interruzione 3 interne e 2 esterne.
• All’interno della struttura c’è ALU e il program counter, l’Acc., stack pinter, registro di stato che sono dei registri fondamentali esterni.
Dal PIN1 al 8 → PORT1
Pin9 → RST
Dal Pin 10 al 18→ PORT3
3.0→RXD
3.1→TZD
3.2→INT0
3.3→INT1
3.4→T0
3.5→T1
3.6→WR
3.7→RD
PIN18→XTAL 1
PIN19→XTAL 2
Dal PIN 21 al 28 →PORT2
PIN29→PSEN
PIN30→ALE
PIN31→EA
PIN20→Vss
Dal 32AL39→PORT0
PORT1
Serve a ricevere anche la parte bassa dell’indirizzo durante la programmazione della EPROM interna e durante la verifica della ROM
PORT2
Contiene le funzione secondarie, i piedini 10 e 11 che ricevono e trasmettono alla porta seriale;
12 e 13 sono le 2 linee di interruzione esterna;
14 e 15 sono gli ingressi per il timer contatore 0 e contatore 1
16 e 17 sono i PIN di scrittura e di lettura per la memoria RAM esterna
18 e 19 sono gli ingressi dell’invertente dell’oscillatore;
20Vss= 0V
PORT2
Ingresso di dati bidirezionali a 8 bit che serve a emettere la parte alta dell’indirizzo durante le operazioni su memoria esterna
PSEN (29) → Program Store Enable (livello basso) è il segnale di lettura per la memoria ROM esterna
ALE (30) → Address Latch Enable, segnale di abilitazione attivo alto quando su PORT0 e PORT2 è disponibile un indirizzo valido durante un accesso alla memoria esterna sia ROM che RAM
EA (31) → External Access se viene portato a 0 permette di utilizzare la sola memoria esterna ROM escludendo i 4Byter di ROM interna. Se viene forzato a livello alto permette di indirizzare la ROM anche interna fino a 64kbye
PORT0
Serve come BUS multiplo per trasferire la parte bassa dell’indirizzo e i dati durante un accesso alla memoria esterna
40→Vcc= alimentazione
Reset→ per effettuare il reset bisogna tenere per circa 2 secondi il tasto peremuto (2 colpi di ck) l’azione del reset porta a livello alto il PORT 1 2 3.
Collegamento memoria programmi esterna
La parte bassa degli indirizzi sono la PORT P0 (interfaccia dati indirizzi) P2 parte alta.
La parte alta bassa degli indirizzi va memorizzata in un latch in attesa del trasferimento dei dati.
La ALE abilita la Latch indica quando è presenta un indirizzo.
PSEN indica che l’operazione di lettura avviene con la memora esterna e quindi viene utilizzato come segnale i abilitazione delle uscite della memoria
Collegamento ,memoria dati esterna
In tutti e due gli schemi si devono sacrificare il P0 e il P2 e parte del P3 per generare tutti i segnali per il collegamento con le morie esterne.
Circuito di clock 8051
F os =11,0592 MHz CICLO MACCHINA 912 impulsi di clock per effettuarne 1 quindi 11059200/12=921600 / cicli che posso fare in 1 secondo
Circuito di Reset
L’effetto del RST sulla memoria ROM è quello di inizializzare il registro PROGRAM COUNTER all’indirizzo di memoria 0000H. l’ingresso di reset deve rimanere a livello alto per almeno 2 cicli.
Mappatura della RAM
La RAM ha l28byte come capacità + 128 byte come area SFR.
SFR(Special, Function~ Register)
* è possibile accedere sia direttamente e sia indirettamente
* per quanto riguarda la meni. SFR non tutti i l28byte sono utilizzati per i registri perché il costruttore aveva previsto di
lasciare delle aree libere per usi futuri. In ogni caso mentre la parte di memoria relativa ai registri è indirizzabile
direttamente la rimanente area libera è accessibile con indirizzamento indiretto.
Registri deII’8051
Registri SFR
I) ACCUMULATORE IA,ACC]: è un registro generale che serve per accumulare dati risultanti da un gran
numero di istruzioni. ~ un registro a 8-Bit.
2) B Register [Bl: viene utilizzato soprattutto per MUL e DIV; viene utilizzato anche come 90 registro temporaneo; è a 8-Bit.
3) DATA POINTER [DPTRJ: è a 16-Bit; questo registro è possibile suddividerlo in 2 registri da 8-Bit ciascuno chiamati DPH e DPL. Come dice il nome è usato a puntare (indirizzare) i dati. È utilizzabile soprattutto per indirizzare i dati nella memoria esterna.
4) PROGRAM COUNTER [PC 1: è composto da 2byte. È un indirizzo a 2byte che punta alla locazione di
memoria dove 8051 va a leggere la istruzione da eseguire prossima, e poi si incrementa.
5) STACK POINTER (SPI: è a 8-Bit punta all’inizio della catasta. Lo stack cresce verso gli indirizzi alti della memoria RAM.
6) PSW(registro di stato) [PSW]: è a 8-Bit disposti come in figura;
ACC →Accumulatore B4RcgistroB
PC→ Registro B
PC→ Contatore di prog. REGISTRI CPU
DPTR→DPH/DPL
PSW → Registro di stato
SP → Steck pointer
P0,P1,P2,P3 LATCHCHEGESTISCE I/O
IE
IP CONTROLLANO LE INTERRUZIONI
INTO PIN
INTI interr, 2 est. 5 tipi di interr. 3 interne; 2 esterne
Tutti i Bit che generano un’interruzione possono essere programmati via so1Ì~re. Ognuna di queste interruzioni può essere abilitata o disabilitata singolarmente, per fare ciò si utilizza il registro I / E (mascheramento interruzione)
Il Bit EA controlla tutte le interruzioni, se posto a abilita o disabilita le interruzioni a seconda che il relativo Bit di abilitazione sia posto 0 o a 1. Se posto a O disabilita tutto. Il bit ES serve ad abilitare o disabilitare dovuta alla porta seriale.
EXI →Bit abilitazione per INTO
EXO→Bit abilitazione INT1
ETO → abilita timer 0
JP → controlla la priorità (2 liv) due livelli di priorità
(FIGURA10)
Un interruzione a bassa priorità può essere interrotta da una interruzione più alta con Bit =1, mentre un’interruzione ad
alta priorità non può essere non interrotta.
TMOD / TCON I THD I TLO / Thl / Th1 -3 timer contatori, controlla
SCON -~ controlla porta seriale
SBUF -* controlla buffer dati porta seriale
PCON -3 controlla alimentazione
Mappa SFR (area)
ISTRUZIONI dell’ 8051
Riga di testo:
pippo: mov A, 10 ; carica nel registro A il valore 10
A B C D
a) pippo: è l’etichetta o nome va da 1 a 6 caratteri, si inizia con una lettera e sono seguite dai due punti (:).
b) mov è una operazione o istruzione di trasferimento dati che contiene il codice mnemonico dell’istruzione
c) A,10 sono gli operandi. Il campo operandi contiene i dati su cui opera l’istruzione, possono essere contenuti in registri, celle di memoria o costituiti da dati inunediati.
d) “ ;carica nel registro A il valore 10” è il commento per ogni riga di testo che deve essere preceduto dal “;“
Non c’è una distinzione tra lettere maiuscole o minuscole, tranne le parole chiave che devono essere in Maiuscolo.
nop è un istruzione che non fa nessuna operazione, è usato per ritardare di 1 microsecondo.
Le istrnzioni vengono compiute uil o al massimo 2 cicli macchina, fanno eccezione però, MUL e D]L che hanno bisogno di 4 cicli macchina.
INDIRIZZAMENTI
1) Indirizzamento Immediato : in alcune istruzioni il byte che segue il codice operativo può rappresentare il valore di
una costante e non di un indirizzo e quindi il dato esegue immediatamente il codice operativo.
Es. mov A,#lOOh ~ carica nell’accomulatore il numero lOOh in modo immediato
Immediato Vantaggio: è molto veloce. Svantaggio: può caricare un dato per volta.
2)Indirizzamento Diretto: L’operando che è fornito dopo il codice operativo rappresenta un indirizzo di 8 bit
Es. add A,7Fh ~ il contenuto dell’Acc. Viene sommato al contenuto della locazione 7Fh della RAM interna e il risultato viene posto nell’Acc.
Vantaggio: anch’esso è molto veloce ma questo è più flessibile perché possiamo modificare il contenuto di 7Fh.
3) Indirizzamento Indiretto: nell’istruzione viene specificato un registro che contiene l’indirizzo dell’operando. Tutta la RAM esterna o interna possono essere indirizzate indirettamente come puntatori utilizzando R0 .. .R7 a 8 bit. 11 registro di indirizzi a 16 bit possiamo farlo con il DPTR
Es. add A,@R0 ~. il contenuto dell’accumulatore viene sommato al dato che si trova nel registro R0 della RAM interna e il risultato va all’accumulatore.
Si riferisce sempre e soltanto alla Ram interna e non a un registro SFR.
4) Indirizzamento a Registro: alcune istruzioni ci permettono di accedere ai banchi di registri R0. . .R7
Es. add A,R7 ~ soma il contenuto del registro R7 e quello dell’acc. Ponendo il resto nell’Acc.
ISTRUZIONI ARITMENTICHE
1) add A, somma il generico con A. e lo inserisce in A.
2) addc A, somma il generico con A contando il Riporto C.
3) subb A, sottrae il generico all’ A contando il riporto.
4) inc A incrementa di i il contenuto dell’A.
5) dec A decrementa di il contenuto dell’A.
6) mai AB moltiplica il contenuto dell’A per il registro B; La parte + significativa va nel B quella nell’A
7) div AB divisione tra l’A e B; il risultato va nel A e il resto nel B.
8) da serve se operiamo con il codice BCD.
ISTRUZIONI LOGICHE
1) anl A, Moltiplicatore logico porta And
2) ori A, Può sommare I byte nell’A
3) xri A, E’ una porta xor
4) cr1 A Pone a O il contenuto dell’A
5) cpl A Complementa a 1 il contenuto dell’A
6) rl A Ruota a sinistra dell’A
7) ne A Ruota a sinistra usando il riporto C
8) rr A Ruota a destra
9) rrc A Ruota a destra usando C
10) swap A Scambia i 2 Nibbie Es. 1010 1110 ~‘ 1110 1010
Tutte queste operazioni possiamo svolgerle anche non utilizzando A.
ISTRUZIONI PER TRASFERIMENTO DATI
RAM INTERNA
1) mov A, Carica il contenuto della sorgente nell’A
2) mov ,A Pone il contenuto di A in destinazione
3) mov dptr,# indl6 Carica il contenuto dell’indirizzo indl6 nel dptr
4) push. Serve a incrementare lo stack pointer e porre all’inizio dello stesso
5) pop Decrementa io stack pointer prelevando
6) xch A,4yte> Scambia il contenuto dell’A con il contenuto del
7) xchd A, @Ri Scambia i semibyte bassi da A e dei dato puntato in R0 oRi
RAM ESTERNA
1) movx A,(~Ri Carica il contenuto di Ri nell’A
2) movx @Ri,A Carica il contenuto dell’A in Ri
3) movx A,@dptr Carica il contenuto del dptr nell’A
4) movx @dptr,A Carica il contenuto di A nel dptr
Con i registri Ri possiamo indirizzare al massimo 256byte
Con il dptr possiamo utilizzare tutta la memoria [64Kbyte]
ISTRUZIONI BOOLEANE
Queste istruzioni sono simili a quelle logiche ma agiscono bit per bit. “C” funziona come accumulatore per queste
istruzioni.
1) anl C,bit C and bit (moltiplicazione logica)
2) anl (2,/bit Cand not Bit (moltiplicazione logica negata)
3) ori C,bit Somma di bit in C
4) ori (2,/bit Somma not di bit in C
5) mov c,bit Carica il bit nel (2
6) mov bit,C Carica C nel bit
7) clrC AnnullailCa0
8) cir bit Cancella il bit
9) setb (2 impone a 1
10) setb bit pone il bit a 1
11) cpl C complementa C
12)jC salta seC=1
13) jnc salta seCè=0
14) jbbit salta se il bit l
15) jnbbit salta se il bit è”O
16) jbc bit salta se il bit è =0 e azzera il bit
Questi salti vanno effettuati in modo relativo rispetto al PC
ISTRUZIONI DI SALTO
Servono ad alterare il normale flusso del programma.
SALTI INCONDIZIONATI
Jmp salta in ogni parte del programma.
Ljmp permette di saltare ad indirizzi a 16 bit; L’offset occupa 2 byte che vanno da -32768 a 32767
sjmp permette di saltare ad indirizzi a 8 bit; L’offset del PC occupa 1 byte che va da -128 a 127
ajmp è un salto assoluto solo in avanti; Si usa 11 bit per l’indirizzo + 5bit più significativi del PC
jmp address Es. Jmp 70h
jmp @A+ dptr permette di effettuare un salto a selezione a seconda del valore contenuto nell’A. L’indirizzo di questo salto viene ottenuto sommando il contenuto del DPTR con quello dell’A.
cali addres chiama una subroutine e salta in un’altra parte del progranuna. Ret ritorna al programma principale
Reti ritorna alle interrupt.
SALTI CONDIZIONATI
Jz salta se A =O
Jnz salta se A è diverso da O
Djnz decrementa e salta se A è diverso da O
Cjne A,>byte> salta se A è diverso dal
Cjne ,#n salta solo se il byte è diverso da “ti”
DIRETTIVE
Org ed end sono delle direttive.
Ogni linea di programma può avere una direttiva (o pseudoistruzione) di controllo oppure una istruzione.
Sono un mezzo per definire le costanti del progranima e per predisporre uno spazio per le variabili utilizzate.
Segmento : è una parte di programma creato con uno scopo ben preciso.
Le varie direttive dell’Assembler si dividono in categorie:
CONTROLLO SEGMENTI
Segmento generico: segmenti
r seg
Segmento assoluto: c seg
d seg
b seg
i seg
x seg
• DEFINIZIONE DI SIMBOLI
Simboli generici: equ
set
Simboli di indirizzo: bit
code
data
idata
xdata
• INIZIALIZZAZIONE MEMORIA → DB e DW
• LOCAZIONE DELLA MEMORIA → DBIT e DS
• COLLEGAMENTO PROGRAMMI → PUBBLIC, EXTRN,NAME
• CONTROLLO INDIRIZZO →ORG,US1NG,END
$ indica il valore del contatore di programma del segmento attivo; cambia il valore con ogni istruzione ma aspetta che essa finisca.
Es. jnb Tl,$ rimane all’interno dell’istruzione stessa fino a quando T1=O
equ valore Es. dozina equ 12
AREA INDIRIZZAMENTO DATI
code indirizzo del codice eseguibile compreso nell’aria da 0000b a FFFFh
data definisce simboli che sono come indirizzo della memoria dati compresa tra O e 127 byte oppure da 128 a 256 solo SFR.
idata serve per l’indirizzo dei dati per tutta la memoria interna
xdata serve per l’indirizzo dei dati per tutta la memoria esterna ed interna.
Db define byte: assegna un valore a 8 bit alla memoria
Dw assegna un valore alla memoria di 16 bit
Dbit serve a riservare uno spazio di memoria in bit nel segmento che è compreso tra 20h e 2Fh Ds riserva i byte
Pubblic permette di rendere disponibile ai rimanenti moduli la lista dei simboli creati dentro il modulo oggetto.
Extrn ~ di rendere disponibile al modulo corrente la lista dei simboli creati dentro altri moduli.
Name serve a semplificare il nome utilizzato dal modulo di programma corrente.

Esempio



  



Come usare