Caricare documenti e articoli online 
INFtub.com è un sito progettato per cercare i documenti in vari tipi di file e il caricamento di articoli online.


 
Non ricordi la password?  ››  Iscriviti gratis
 

Microprocessori - Microcontrollori

finanze



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

Organizzazione logica Hardware

I circuiti di Memoria e microprocessori e il dispositivo di I/O sono 151j99b 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

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

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

B Register [Bl: viene utilizzato soprattutto per MUL e DIV; viene utilizzato anche come 90 registro temporaneo; è a 8-Bit.

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.

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.

STACK POINTER (SPI: è a 8-Bit punta all'inizio della catasta. Lo stack cresce verso gli indirizzi alti della memoria RAM.

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, <byte> somma il <byte> generico con A. e lo inserisce in A.
2) addc A,<byte> somma il <byte> generico con A contando il Riporto C.
3) subb A, <byte> sottrae il <byte> 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, <byte> Moltiplicatore logico porta And
2) ori A,<byte> Può sommare I byte nell'A
3) xri A,<Byte> 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, <sorg> Carica il contenuto della sorgente nell'A
2) mov <dest>,A Pone il contenuto di A in destinazione
3) mov dptr,# indl6 Carica il contenuto dell'indirizzo indl6 nel dptr
4) push. <sorg> Serve a incrementare lo stack pointer e porre all'inizio dello stesso <sorg>
5) pop <dest> Decrementa io stack pointer prelevando <dest>
6) xch A,4yte> Scambia il contenuto dell'A con il contenuto del <Byte>
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<byte> decrementa <byte> e salta se A è diverso da O
Cjne A,>byte> salta se A è diverso dal <byte>
Cjne <byte>,#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.





Privacy




Articolo informazione


Hits: 2443
Apprezzato: scheda appunto

Commentare questo articolo:

Non sei registrato
Devi essere registrato per commentare

ISCRIVITI



Copiare il codice

nella pagina web del tuo sito.


Copyright InfTub.com 2024