LA CAMPANA

C'è chi legge questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam

L'architettura della famiglia MCS-51 è ampiamente predeterminata dal suo scopo: la costruzione compatto e a buon mercato dispositivi digitali. Tutte le funzioni di un microcomputer sono realizzate con un singolo microcircuito. La famiglia MCS-51 comprende una gamma di microcircuiti dai microcontrollori più semplici a quelli più complessi. I microcontrollori della famiglia MCS-51 consentono di eseguire entrambe le attività di controllo per vari dispositivi e implementare singoli nodi di circuiti analogici. Tutti i microcircuiti di questa famiglia lavorano allo stesso modo sistema di comando MCS-51 , la maggior parte viene eseguita negli stessi casi con pinout corrispondente (numerazione delle gambe per il corpo). Ciò consente l'utilizzo di microcircuiti di diverse società per il dispositivo sviluppato: Maxim, Atmel, NXP, ecc. (catalog..php? page \u003d lista_componenti & id \u003d 39 "\u003e vedi ricerca per parametri) senza alterare lo schema del dispositivo e del programma.

Figura 1. Schema a blocchi del controller I8751

Lo schema a blocchi del controller è mostrato nella Figura 1. ed è composto dalle seguenti unità funzionali principali: unità di controllo, unità logica aritmetica, unità timer / contatore, interfaccia seriale e unità di interruzione, contatore programmi, memoria dati e memoria programma. La comunicazione bidirezionale viene eseguita utilizzando un'autostrada dati interna a 8 bit.

Diamo un'occhiata più da vicino allo scopo di ciascun blocco. Quasi tutti i rappresentanti della famiglia MCS-51 sono costruiti secondo questo schema.... Microcircuiti diversi di questa famiglia differiscono solo per i registri speciali (incluso il numero di porte). Set di comandi per tutti i controller della famiglia MCS-51 contiene 111 comandi di base con un formato di 1, 2 o 3 byte e non cambia quando si passa da un microcircuito all'altro. Ciò fornisce un'eccellente portabilità dei programmi da un microcircuito all'altro.

Unità di controllo e sincronizzazione

L'unità di controllo e temporizzazione è progettata per generare segnali di sincronizzazione e controllo che assicurano il coordinamento del funzionamento congiunto delle unità OEVM in tutte le modalità consentite del suo funzionamento.

  • - un dispositivo per la formazione di intervalli di tempo,
  • - logica I / O,
  • - registro dei comandi,
  • - registro di controllo del consumo di elettricità,
  • - decodificatore di comando, logica di controllo del computer.

Dispositivo di modellazione delle fasce orarie è inteso per la formazione e l'emissione di segnali interni di sincronizzazione di fase, clock e ciclo. Il numero di cicli della macchina determina la durata delle istruzioni. Quasi tutti i comandi OEVM vengono eseguiti in uno o due cicli macchina, ad eccezione dei comandi di moltiplicazione e divisione, il cui tempo di esecuzione è di quattro cicli macchina. Indichiamo la frequenza dell'oscillatore principale per F g. Quindi la durata del ciclo della macchina è 12 / F go 12 periodi del segnale dell'oscillatore principale. La logica input-output è progettata per ricevere ed emettere segnali che forniscono lo scambio di informazioni con dispositivi esterni attraverso le porte di input / output P0-P3.

Registro dei comandi è destinato alla registrazione e alla memorizzazione del codice operativo a 8 bit del comando in esecuzione. Il codice operativo, con l'aiuto di un decodificatore di comando e della logica di controllo del computer, viene convertito in un microprogramma per l'esecuzione del comando.

Registro di controllo del consumo (PCON) consente di arrestare il microcontrollore per ridurre il consumo di energia e ridurre il livello di rumore del microcontrollore. Ulteriore riduzione del consumo di energia e riduzione del rumore può essere ottenuta arrestando l'oscillatore principale del microcontrollore. Ciò può essere ottenuto lanciando un po 'nel registro di controllo del consumo PCON. Per la variante n-MOS (serie 1816 o microcircuiti estranei senza "c" nel nome), il registro di controllo del consumo PCON contiene solo un bit che controlla la velocità di trasmissione della porta seriale SMOD e non sono presenti bit di controllo dell'alimentazione.

Arithmetic Logic Unit (ALU) è un dispositivo parallelo a otto bit che fornisce operazioni aritmetiche e logiche. ALU è costituito da:

  • - registri accumulatori, registri di mantenimento TMP1 e TMP2,
  • - costanti ROM,
  • - sommatore,
  • - registro aggiuntivo (registro B),
  • - batteria (ACC),
  • - registro dello stato del programma (PSW).

Registrati batteria e tenuta dei registri - registri a otto bit destinati alla ricezione e alla memorizzazione di operandi durante l'esecuzione di operazioni su di essi. Questi registri non sono accessibili a livello di programmazione.

Costanti ROM fornisce la generazione di un codice di correzione per la rappresentazione dei dati binari-decimali, un codice maschera per operazioni a bit e un codice costante.

Sommatore a otto bit parallelo è un circuito combinatorio con carry sequenziale, progettato per eseguire operazioni aritmetiche di addizione, sottrazione e operazioni logiche di addizione, moltiplicazione, disuguale e identica.

Registro B - un registro a otto bit utilizzato durante le operazioni di moltiplicazione e divisione. Per altre istruzioni, può essere visualizzato come un registro superoperativo aggiuntivo.

Batteria - un registro a otto bit progettato per ricevere e memorizzare il risultato ottenuto quando si eseguono operazioni logico-aritmetiche o operazioni di spostamento

Interfaccia seriale e blocco di interrupt (PIP) è progettato per organizzare l'input-output di flussi di informazioni sequenziali e l'organizzazione di un sistema di interruzione del programma. Il blocco include:

  1. - buffer PIP,
  2. - logica di controllo,
  3. - registro di controllo,
  4. - buffer del trasmettitore,
  5. - buffer del ricevitore,
  6. - ricetrasmettitore porta seriale,
  7. - interrompere il registro di priorità,
  8. - registro di abilitazione interruzione,
  9. - logica per l'elaborazione di flag di interrupt e un circuito di generazione vettoriale.

Contatore di programma è progettato per generare l'attuale indirizzo a 16 bit della memoria interna del programma e l'indirizzo a 8/16 bit della memoria esterna del programma. Il contatore di istruzioni include un buffer PC a 16 bit, un registro PC e un circuito di incremento (aumentando il contenuto di 1).

Memoria dati (RAM) è destinato alla memorizzazione temporanea delle informazioni utilizzate nel processo di esecuzione del programma.

Porte P0, P1, P2, P3 sono porte di ingresso-uscita quasi bidirezionali e sono progettate per garantire lo scambio di informazioni tra OCSE e dispositivi esterni, formando 32 linee di ingresso-uscita.

Dispositivo timer I modelli base della famiglia hanno due timer / contatori programmabili a 16 bit (T / C0 e T / C1), che possono essere utilizzati sia come timer che come contatori di eventi esterni

Program Status Register (PSW) destinato alla memorizzazione di informazioni sullo stato dell'ALU durante l'esecuzione del programma.

Memoria di programma (EPROM) è destinato alla memorizzazione di programmi ed è una memoria di sola lettura (ROM). Diversi microcircuiti utilizzano ROM mascherate, cancellabili dalle radiazioni ultraviolette o VELOCE ROM.

Data Pointer Register (DPTR) è destinato a memorizzare un indirizzo a 16 bit di memoria dati esterna o memoria di programma.

Stack Pointer (SP) è un registro a otto bit progettato per organizzare un'area speciale di memoria dati (stack), in cui qualsiasi cella di memoria può essere temporaneamente memorizzata.



Versione base MCS-51 Informazioni brevi. I moderni microcontrollori a 8 bit (MC) possiedono tali risorse di controllo in tempo reale, che erano state precedentemente ottenute utilizzando costosi layout multichip sotto forma di schede separate per microcomputer, vale a dire:

● avere sufficiente capacità di memoria, la sua divisione fisica e logica in memoria di programma e memoria di dati (architettura di Harvard) e un sistema di comando focalizzato sull'esecuzione di algoritmi di controllo;

● include tutti i dispositivi (processore, ROM, RAM, porte I / O, sistema di interruzione, funzionalità di elaborazione delle informazioni sui bit, ecc.) Necessari per l'implementazione di un sistema di controllo a microprocessore di configurazione minima. Negli anni '70 del secolo scorso, l'azienda Intel sviluppato e padroneggiato la produzione industriale della famiglia di microcontroller MCS-48 a 8 bit, uniti da una serie di caratteristiche comuni (profondità bit, sistema di comando, un insieme di blocchi funzionali di base, ecc.). La versione base di questa famiglia comprende:

● processore a 8 bit;

● memoria interna del programma (1/2 / 4K byte);

● memoria interna dei dati (64/128/256 byte);

● fino a 27 linee I / O interne e 16 esterne;

● un contatore-timer a 8 bit;

● sistema di interruzione a livello singolo con due fonti di richieste. Nel 1980, la stessa azienda ha sviluppato una nuova famiglia di microcontrollori MCS-51 a otto bit, che è compatibile con l'architettura della famiglia MCS-48, ma ha più capacità.

L'architettura della famiglia MCS-51 si è rivelata così efficace da essere ancora uno degli standard per le MCU a 8 bit. Pertanto, gli MC di questa famiglia, che si sono diffusi in sistemi di controllo relativamente semplici, sono stati scelti come oggetto di studio.

Per la famiglia MCS-51, sono stati sviluppati vari strumenti di preparazione (compilatori, emulatori hardware-software, ecc.) E esiste un gran numero di librerie di subroutine standard. La famiglia comprende varie modifiche ai microcircuiti (versioni in cristallo) dei microcontrollori. Negli articoli di questa sezione, la versione base dei microcontrollori della famiglia MCS-51 è considerata in modo sufficientemente dettagliato (il microcircuito 8051 corrisponde all'analogo domestico di KP1816BE51), che è il più semplice in termini strutturali e funzionali e in termini di comprensione.

Le serie successive di microcircuiti, pur mantenendo la compatibilità con la versione base, si differenziano da essa per la migliore tecnologia di produzione, parametri elettrici, hardware e funzionalità aggiuntivi. I seguenti articoli sono dedicati alle caratteristiche strutturali e funzionali delle successive modifiche dei microcircuiti della famiglia MCS-51.
Schema a blocchi generalizzato di MCS-51. L'MC, il cui schema a blocchi generalizzato è mostrato in Fig. 7.1.1 comprende:

● Unità di elaborazione centrale (CPU) a 8 bit composta da ALU, dispositivi di controllo uu e generatore di indirizzi F;

● maschera ROM con una capacità di 4K byte per la memorizzazione dei programmi;

● RAM con una capacità di 128 byte per l'archiviazione dei dati;

● quattro porte programmabili Р0 - Р3 per informazioni input-output;

● blocco dell'interfaccia seriale BPI per lo scambio di informazioni con dispositivi esterni tramite linea a due fili;

● blocco di timer / contatori BT / C per mantenere la modalità tempo reale;

● blocco di interrupt BP per l'organizzazione di interruzioni di programmi eseguibili. Questi fondi si formano residenteparte del microcontrollore posizionata direttamente sul chip. L'MC include un gran numero di registri, che sono assegnati a blocchi funzionali separati e non sono mostrati nel diagramma.

Lo schema inoltre non mostra i circuiti di controllo. Lo scambio bidirezionale di informazioni tra blocchi viene effettuato tramite un 8 bit interno bus datiШД-8.

16 bit interni indirizzo busSHA-16 l'indirizzo formato nella CPU viene visualizzato nella ROM (12 bit dell'indirizzo) e nella RAM (8 bit meno significativi).

Quando si utilizza la memoria esterna, 8 bit meno significativi dell'indirizzo vengono inviati alla porta P0 e 3 o 8 bit più significativi alla porta P2.

Per l'espansione logica dell'interfaccia, viene utilizzata una combinazione di funzioni della linea di porta. Ad esempio, la Fig. 7.1.1 la linea tratteggiata mostra le linee della porta P3, in esecuzione alternativafunzioni per la trasmissione di segnali di controllo, il cui scopo sarà discusso di seguito. Per creare un generatore di clock interno, un risonatore al quarzo e due condensatori sono collegati ai terminali del microcircuito MK (Fig. 7.1.1). Invece di un clock interno, è possibile utilizzare un oscillatore esterno per la sincronizzazione. La designazione grafica convenzionale del microcircuito MK è mostrata in Fig. 2, designazione e scopo delle conclusioni - nella tabella. 7.1.1. Considera i blocchi funzionali di MK e il principio del loro funzionamento. Unità logico-aritmetica. L'unità aritmetica-logica è progettata per eseguire operazioni aritmetiche (inclusi moltiplicazione e divisione) e operazioni logiche su operandi a otto bit, nonché operazioni di spostamento logico, azzeramento, impostazione, ecc. Lo schema a blocchi dell'ALU è mostrato in Fig. 7.1.3.

L'ALU include

● parallelo a otto bit viperaSM di tipo combinatorio con trasferimento sequenziale, eseguendo operazioni aritmetiche (addizione e sottrazione) e logiche (addizione, moltiplicazione, disuguali e identiche);

batteria A, fornire le funzioni del registro aritmetico principale;

RegistratiB, utilizzato per implementare operazioni di moltiplicazione e divisione o come un registro superoperativo aggiuntivo, le cui funzioni sono definite dall'utente;

registri(non disponibile a livello di codice) deposito temporaneoРВХ1, РВХ2, destinati a ricevere e memorizzare operandi per la durata dell'operazione;

● ROM costantiROMK, che memorizza un codice di correzione per la rappresentazione dei dati binari-decimali, un codice maschera per operazioni a bit e un codice costante;

registro delle parole di stato del programmaPSW, che corregge lo stato dell'ALU dopo l'operazione eseguita. tavolo 7.1.2 fornisce informazioni sull'assegnazione di bit di singoli bit del registro PSW. Dispositivo di controllo. Unità di controllo del processore centrale (CU) destinatocoordinare il lavoro congiunto di tutti i nodi MK usando gli impulsi di sincronizzazione generati e i segnali di controllo. Include (Fig. 7.1.4):

unità di sincronizzazione e controlloUSU, che genera impulsi di sincronizzazione che impostano i cicli della macchina e i loro singoli stati (S) e fasi (P) e, a seconda della modalità operativa dell'MC, genera l'insieme necessario di segnali di controllo. Uno, due o quattro cicli macchina sono assegnati per l'esecuzione del comando.

Ogni ciclo della macchina ha sei statiS1 - S6, A ogni stato include due fasiP1, P2, la cui durata è il periodo di oscillazione del generatore di clock T 0SC.

La durata del ciclo della macchina è 12T 0SC. Tutti i cicli della macchina sono uguali, a partire dalla fase S1P1 e terminando con la fase S6P2.

Oltre agli impulsi di sincronizzazione, il dispositivo di sincronizzazione in ciascun ciclo della macchina genera due (a volte uno) segnali strobo del byte basso dell'indirizzo ALE sotto forma di un impulso positivo nelle fasi S1P2 - S2P1 e S4P2 - S5P1. Diagrammi di temporizzazione in Fig. 7.1.5 illustra l'organizzazione dei cicli della macchina;

● registro dei comandi RK, decodificatore di comandoDC e PLM, che consentono in ciascun ciclo della macchina di formare una serie di micro-operazioni secondo il microprogramma del comando in esecuzione;

● I / O logico LVV per la ricezione e l'emissione di segnali che forniscono lo scambio di informazioni MC con dispositivi esterni attraverso le porte P0-P3;

● un registro PCON con un singolo bit SMOD abilitato in posizione PCON.7 per raddoppiare la velocità di trasmissione della porta seriale. Il resto dei bit è riservato per uso futuro.
Generatore di indirizzi. Generatore di indirizzi (FA) o contatore comandi PC, destinatoper generare l'attuale indirizzo di memoria del programma a 16 bit e l'indirizzo di memoria dati esterno a 8/16 bit. Include (Fig. 7.1.6):

● 16 bit bufferB, che comunica tra il bus dati a 8 bit dell'SM e il bus interno (ID) a 16 bit del generatore di indirizzi;

● Schema di incremento SI per aumentare di uno il valore dell'indirizzo di memoria del programma corrente;

● registro per la memorizzazione dell'indirizzo corrente dei comandi PTA provenienti dall'IS;

● Registro puntatore dati DPTR , costituito da due registri a 8 bit DPH e DPL. Serve per memorizzare l'indirizzo a 16 bit della memoria dati esterna e può essere usato come due RON indipendenti accessibili dal software;

● registro del generatore di indirizzi XPA per la memorizzazione dell'indirizzo esecutivo a 16 bit della memoria del programma o dell'indirizzo 8/16 bit della memoria dati esterna. Questo registro viene anche utilizzato per trasferire i dati tramite la porta P0 a dispositivi esterni durante l'esecuzione dei comandi MOVX @Rm, A e MOVX @DPRT, A.

Memoria dati. Memoria dati destinatoper la ricezione, l'archiviazione e l'emissione delle informazioni utilizzate nel processo di esecuzione del programma. I dati della memoria interna (residente) (Fig. 7.1.7) sono costituiti da RAM con una capacità di 128 byte, puntatore dello stackSP, registro indirizziRAM RA e decoderDsh. Stack Pointer SP è un registro a 8 bit utilizzato per ricevere e memorizzare l'indirizzo della cella dello stack a cui è stato effettuato l'ultimo accesso. Dopo il ripristino, l'indirizzo 07H viene impostato nel puntatore dello stack, che corrisponde all'inizio dello stack con l'indirizzo 08H. Il registro dell'indirizzo PA insieme al decodificatore Dsh consente l'accesso alla cella di memoria richiesta contenente un byte o bit di informazioni.

MK offre la possibilità di aumentare la quantità di memoria dati fino a 64 Kbyte collegandosi dispositivi di archiviazione esterni.Ad esempio, la Fig. 7.1.8 mostra l'organizzazione di pagine della memoria dati esterna dell'FPD con una capacità di 2K byte usando le istruzioni del tipo MOVX @ Rm (m \u003d 0; 1). In questo caso, la porta P0 funziona come un bus indirizzo / dati multiplex, tre linee della porta P2 vengono utilizzate per indirizzare una pagina della RAM esterna e le restanti cinque linee possono essere utilizzate come linee di input-output.
In fig. 7.1.9 mostra i diagrammi di temporizzazione dei cicli di lettura e scrittura quando MK sta lavorando con RAM esterna. I diagrammi indicano:

● PCN - byte alto del contatore comandi PC;

● DPL, DPH - byte bassi e alti del registro puntatore dati DPTR, che viene utilizzato come registro per l'indirizzamento indiretto nelle istruzioni MOVX @ DPTR, A e MOVX A, @ DPTR;

● P2 SFR - Chiusure della porta P2;

● Rm (m \u003d 0, 1) - registri utilizzati nelle istruzioni MOVX @Rm, A e MOVX A, @Rm come registri di indirizzi indiretti;

● Z - stato ad alta resistenza;

● D - il periodo durante il quale i dati dalla porta P0 vengono immessi nel microcontrollore. Memoria del programma. La memoria del programma è destinata alla memorizzazione di programmi, ha il suo spazio di indirizzi (separato dalla memoria dei dati) ed è disponibile solo per la lettura. Include un decodificatore Dsh e ROM (Fig. 7.1.10). Un contatore PC a 16 bit viene utilizzato per indirizzare la memoria del programma, quindi la sua capacità massima è di 64 KB. La memoria interna del programma è composta da una ROM di byte 4K e un decodificatore a 12 bit. La memoria esterna è collegata secondo lo schema di Fig. 7.1.11. Se si applica 0 V al pin ¯EA di MK (come mostrato in Fig. 7.1.11), la memoria interna del programma viene disabilitata. Tutti gli accessi alla memoria iniziano all'indirizzo 0000h. Quando il pin ¯EA è collegato all'alimentazione, si accede automaticamente alla memoria di programma interna agli indirizzi 0000h - FFFFh e alla memoria di programma esterna agli indirizzi 0FFFh - FFFFh.

Per leggere la memoria esterna dei programmi MK, viene generato il segnale ¯PSEN. Quando si lavora con la memoria interna, il segnale di lettura non viene utilizzato. Quando si accede alla memoria del programma esterno, viene sempre formato un indirizzo a 16 bit. Il byte meno significativo dell'indirizzo viene trasmesso attraverso la porta P0 nella prima metà del ciclo della macchina ed è fissato sul bordo dello strobo ALE nel registro, mentre nella seconda metà del ciclo, la porta P0 viene utilizzata per immettere un byte di dati dalla memoria esterna nell'MC.

Il byte più significativo dell'indirizzo viene trasmesso attraverso la porta P2 durante l'intero tempo di accesso alla memoria.

Gli schemi temporali dei cicli di lettura e scrittura quando l'MC funziona con RAM esterna sono mostrati in Fig. 7.1.12.
I diagrammi indicano:

● PCL OUT - emissione del byte basso del contatore comandi PC;

● РСН OUT - emissione del byte alto del contatore comandi PC;

● DPH - byte alto del registro puntatore dati DPTR, che viene utilizzato come registro per l'indirizzamento indiretto nelle istruzioni MOVX @ DPTR, A e MOVX A, @ DPTR;

● P2 SFR - Chiusure della porta P2;

● INS IN - input del byte di istruzione (comando) dalla memoria del programma;

● ADDR OUT - emette il byte basso dell'indirizzo di memoria dati esterno dai registri Rm (m \u003d 0, 1) o dal registro DPL (registro DPTR basso). Porte I / O. Assegnazione delle porte. Porte P0, P1, P2, P3 destinatoper scambiare informazioni tra MK e dispositivi esterni, e anche per svolgere le seguenti funzioni:

● il byte basso dell'indirizzo A7 ... A0 viene emesso attraverso la porta P0; output dall'MC e input nel byte di dati MC quando si lavora con la memoria di programma esterna e la memoria di dati esterna (con divisione del tempo);

● il byte alto dell'indirizzo A15 ... A8 viene emesso attraverso la porta P2 quando si lavora con la memoria di programma esterna e la memoria di dati esterna (solo quando si utilizzano i comandi MOVX A, @ DPTR e MOVX @ DPTR, A);

● Le linee della porta P3 possono essere utilizzate per eseguire funzioni alternative se si immette 1 nel latch-latch di questa linea, altrimenti viene fissato 0 sull'uscita della linea Le funzioni alternative delle uscite della porta P3 sono riportate nella Tabella. 7.1.3.

Caratteristiche schematiche delle porte

In fig. 7.1.13 mostra gli schemi per un canale di ciascuna delle porte del MK, inclusi:

● latch per il fissaggio del bit di dati ricevuto;

● amplificatore di uscita cascata(Driver);

● nodo si lega constadio di uscita (tranne P2);

● una catena per la trasmissione di un bit di dati dal lato di uscita della porta, costituita dai buffer B2 e B3 (per la porta P4). Il latch è un D-flip-flop con clock da un segnale interno "Write to latch". Il bit di dati dall'uscita diretta del D-flip-flop può essere letto nel software tramite il buffer B1 dal segnale "Latch latch" alla linea del bus dati interno (SD) dell'MC.

Stadio di uscitala porta P0 è un inverter, le cui caratteristiche si manifestano nel fatto che il transistor di carico VT2 si apre solo quando si accede alla memoria esterna (quando si trasmettono indirizzi e dati attraverso la porta). In tutte le altre modalità, il transistor di carico è chiuso. Pertanto, per utilizzare P0 (Fig. 7.1.13, a) come porta di uscita per scopi generici, i resistori di carico esterni devono essere collegati ai suoi terminali. Quando si scrive 1 sul dispositivo di chiusura della porta, il transistor VT1 dell'inverter viene bloccato e l'uscita esterna della porta P0.X viene trasferita in uno stato ad alta resistenza. In questa modalità, il pin della porta P0.X può fungere da input. Se P0 viene utilizzato come porta I / O per uso generale, ciascuno dei suoi pin P0.X può funzionare indipendentemente dagli altri come input o output. Stadi di uscitaporte P1, P2, P3 (Fig. 7.1.13, b, c, d)realizzato secondo i circuiti dell'inverter con una resistenza di carico interna, che viene utilizzata come transistor VT2.

Per ridurre il tempo di commutazione durante la transizione delle uscite della porta dallo stato 0 allo stato 1, viene introdotto un transistor VT3 aggiuntivo in parallelo con il transistor di carico VT2. Il transistor VT3 con l'aiuto di elementi nel circuito di gate viene sbloccato per un tempo pari a due periodi di oscillazione dell'oscillatore a cristalli master (durante le fasi S1P1, S2P2 del ciclo della macchina). Stadi di uscitale porte P0, P2 (Fig. 7.1.13, A, c) mediante il multiplexer MX possono essere collegate ai dispositivi di chiusura o ai bus interni "Indirizzo / Dati" e "Indirizzo". Lo stadio di uscita della porta P1 (Fig. 7.1.13, 6) è permanentemente collegato al dispositivo di chiusura.

Se il pin della porta P3 è un'uscita e il suo fermo contiene 1, il suo stadio di uscita è controllato dal segnale interno hardware "Funzione di uscita alternativa", che assicura l'esecuzione della corrispondente funzione alternativa, ad es. uno dei segnali ¯WR, ¯RD o RxD viene generato sul pin esterno. Se il pin della porta viene utilizzato come ingresso, un segnale alternativo che arriva ad esso (TxD, ¯INT0, ¯INT1, T0, T1) viene trasmesso all'estensione "Funzione di ingresso alternativa".

Modalità di scrittura porta.

Quando viene eseguito il comando write sulla porta, il nuovo valore viene scritto sul latch nella fase S6P2 e viene emesso direttamente sul pin di uscita della porta nella fase S1P1 del successivo ciclo della macchina.

Modalità lettura porta

I comandi di lettura della porta leggono le informazioni direttamente dai pin esterni dei pin della porta o dalle uscite del latch. Nel primo caso, il bit di dati dall'uscita della porta viene letto a livello di programmazione attraverso il buffer B2 dal segnale "Leggi pin" sulla linea del bus dati interno (SD) dell'MC. Notare che i segnali "Write to latch", "Read latch", "Read pin" sono generati dall'hardware quando vengono eseguiti i comandi corrispondenti.

Nel secondo caso, viene implementata la cosiddetta modalità "Lettura-Modifica-Scrittura", in cui il comando legge il segnale di stato del latch, lo modifica se necessario e quindi riscrive il latch. La modalità "Leggi-modifica-scrivi" viene implementata quando vengono eseguiti i seguenti comandi: ANL, ORL, XRL, JBC; CPL; INC; dicembre; DJNC; MOV PX, Y; CLR PX.Y; SETB PX, Y.

La lettura delle informazioni dagli output dei latch elimina gli errori nell'interpretazione del livello logico sul pin della porta. Leggi la continuazione dell'articolo in.

Intel è la progenitrice dell'architettura della famiglia MCS-51, che ha preso il nome dal primo rappresentante di questa famiglia: il microcontrollore 8051, rilasciato nel 1980 basato sulla tecnologia n-MOS. Una serie di dispositivi periferici di successo, una scelta flessibile di memoria di programma esterna o interna e un prezzo accessibile hanno garantito a questo microcontrollore un successo sul mercato. Dal punto di vista della tecnologia, il microcontrollore 8051 era un prodotto molto complesso per il suo tempo: 128 mila transistor sono stati usati nel cristallo, che è 4 volte più del numero di transistor nel microprocessore 8086 a 16 bit. Questo microcontrollore rimane ancora oggi il nucleo della famiglia MCS-51.

Gli elementi principali dell'architettura di base della famiglia (architettura del microcontrollore 8051) sono:

ALU a 8 bit;

4 banche di registri, 8 in ciascuna;

Memoria di programma interna (residente) 4 Kbyte, di tipo ROM o EPROM (8751);

Memoria dati interna (residente) 128 byte;

21 registro delle funzioni speciali;

Processore booleano;

Due timer / contatori a 16 bit;

Controller della porta seriale (UART);

Interrompere il controller con due livelli di priorità;

Quattro porte I / O a 8 bit, due delle quali utilizzate come bus indirizzo / dati per l'accesso al programma esterno e alla memoria dati;

Generatore di clock incorporato.

Quindi è stato rilasciato il microcontrollore 8052, che si è distinto per una maggiore quantità di programma residente e memoria di dati, introdotto da un terzo timer e, di conseguenza, da un controller di interrupt esteso.

Il prossimo passo fondamentale nello sviluppo di MCS-51 è stato il trasferimento della tecnologia di produzione in CMOS (modifica 8xC51). Ciò ha permesso di implementare le modalità Idl (inattivo) e Power Down (consumo ridotto), che forniscono una forte riduzione del consumo di energia del cristallo e hanno aperto la strada all'uso del microcontrollore in applicazioni volatili, ad esempio in dispositivi alimentati a batteria autonomi.

E l'ultimo importante stadio nello sviluppo di MK 8051 da parte di Intel è stato il rilascio di microcontrollori 8xC51FA / FB / FC e 8xC51RA / RB / RC, che in breve sono spesso indicati come 8xC51Fx e 8xC51Rx. La principale caratteristica distintiva di questo gruppo di cristalli è che hanno un timer / contatore dedicato (PCA). Inoltre, i microcontrollori 8xC51Rx contengono inoltre un timer watchdog (WDT). Diamo un'occhiata più da vicino all'architettura e alla funzionalità del PCA.

L'APC comprende:

Timer / contatore a 16 bit;

Cinque moduli di campionamento e confronto a 16 bit, ognuno dei quali è associato a una diversa linea della porta I / O del microcontrollore.

Il timer / contatore serve tutti e cinque i moduli campione e confronto, che possono essere programmati per eseguire una delle seguenti funzioni:

Campionamento a 16 bit del valore del timer sul fronte positivo del segnale esterno;

Campionamento a 16 bit del valore del timer sul fronte negativo del segnale esterno;

Campionamento a 16 bit del valore del timer su qualsiasi fronte del segnale esterno;

Timer programmabile a 16 bit;

Dispositivo di uscita ad alta velocità a 16 bit;

PWM a 8 bit.

Tutte queste funzioni vengono eseguite nel PCA a livello hardware e non caricano il processore centrale. Quanto sopra consente di aumentare il throughput complessivo, migliorare la precisione delle misurazioni e dell'elaborazione del segnale e ridurre il tempo di risposta del microcontrollore a eventi esterni, che è particolarmente importante per i sistemi in tempo reale. Il PCA implementato in 8xC51Fx (8xC51Rx) si è rivelato essere così

Designazione

Max. frequenza (MHz)

ROM / EPROM (byte)

contatori

è una fortuna che l'architettura di questi microcontrollori sia diventata uno standard industriale e che lo stesso PCA sia stato ripetutamente riprodotto in varie modifiche dell'MK 8051.

Alcune caratteristiche di alcuni microcontrollori MCS-51 prodotti da Intel sono mostrate nella Tabella 1.1.

I colli di bottiglia iniziali dell'architettura MCS-51 erano ALU a batteria a 8 bit e l'esecuzione delle istruzioni relativamente lenta (le istruzioni più veloci richiedono 12

Tabella 1.1

input Output

ADC, ingressi x bit

periferia,

caratteristiche

U pit. (NEL)

Opzione a bassa tensione

IRQ a 4 livelli, clock out

IRQ a 4 livelli, clock out

Versione a bassa tensione 8xC51Fx

IRQ a 4 livelli, clock out

IRQ a 4 livelli, clock out

IRQ a 4 livelli, clock out

frequenza di clock (frequenza di clock MK)). Ciò ha limitato l'uso di microcontrollori della famiglia in applicazioni che richiedono maggiori prestazioni e calcoli complessi (16 e 32 bit). Una questione urgente è stata la modernizzazione fondamentale dell'architettura MCS-51. Il problema della modernizzazione era complicato dal fatto che all'inizio degli anni '90 erano già stati creati molti sviluppi nel campo del software e dell'hardware della famiglia MCS-51, in relazione ai quali uno dei compiti principali della progettazione di una nuova architettura era l'implementazione di compatibilità hardware e software con sviluppi basati su MCS -51.

Per risolvere questo problema, è stato creato un gruppo congiunto di specialisti di Intel e Philips, ma in seguito i percorsi di queste due società sono divergenti. Di conseguenza, nel 1995 sono comparse due famiglie significativamente diverse: MCS-251/151 di Intel e MCS-51XA di Philips (vedere la sottosezione 1.2).

Caratteristiche principali dell'architettura MCS-251:

Spazio di indirizzi lineare a 24 bit per indirizzare fino a 16 MB di memoria;

Un'architettura di registro che consente l'accesso ai registri come byte, parole e doppie parole;

Modalità di indirizzamento della pagina per accelerare il recupero delle istruzioni dalla memoria esterna del programma;

Coda di istruzioni;

Set di istruzioni esteso, comprese operazioni aritmetiche e logiche a 16 bit;

Spazio indirizzi esteso dello stack (fino a 64 KB);

Esecuzione del comando più veloce in 2 cicli di clock.

Il set di istruzioni MCS-251 è costituito da due set di istruzioni: il primo set è una copia del set di istruzioni MCS-51 e il secondo è costituito da istruzioni estese che sfruttano l'architettura MCS-251. Prima di utilizzare il microcontrollore, è necessario configurarlo, ad es. con l'aiuto del programmatore, "masterizza" i bit di configurazione che determinano quale dei set di istruzioni diventerà attivo dopo l'accensione. Se si installa la prima serie di istruzioni, in questo caso la famiglia MCS-251 sarà compatibile con MCS-51 a livello di codice binario. Questa modalità si chiama Modalità binaria. Se inizialmente si installa una serie di istruzioni estese (Modalità sorgente), i programmi scritti per MCS-51 richiederanno la ricompilazione su cross-points per MCS-251. La modalità Sorgente consente di sfruttare al massimo l'architettura MCS-251 e ottenere le massime prestazioni.

Per gli utenti che si concentrano sull'uso dei microcontrollori MCS-251 come ricambio meccanico per MCS-51, la società Intel rilascia microcontrollori MCS-151, già programmati in modalità binaria.

Alcune caratteristiche di alcuni microcontrollori MCS-251/151 sono mostrate nella Tabella 1.1.

Attualmente, Intel, mirando al mercato dei processori Pentium, sta eliminando gradualmente la produzione di cristalli MCS-51. In generale, per un particolare sviluppatore, questo può passare inosservato, a meno che non utilizzi microcontrollori 8xC51GB e 80C152Jx, che non hanno le loro controparti esatte tra i prodotti di altre società. Come per tutti gli altri microcontrollori della famiglia MCS-51, tutti sono stati replicati molte volte da altre società.

Allo stato attuale, varie aziende producono molte modifiche e analoghi di questa famiglia, sia da parte di Intel che di altri produttori, la frequenza di clock e la capacità di memoria sono cresciute di dieci volte e continuano ad aumentare. Anche il set di moduli integrato nell'LSI è in fase di completamento; un gran numero di modelli moderni sono dotati di un ADC ad alta velocità residente, che ha fino a 12, e ora potrebbero esserci più cifre. Ma al centro della famiglia MCS51 ci sono BIS 8051, 80C51, 8751, 87C51, 8031, 80C31 di Intel, i cui primi campioni sono stati rilasciati nel 1980.

I microcontrollori della famiglia MCS51 sono realizzati secondo la tecnologia n-MOS di alta qualità (serie 8XXX, analogica - serie 1816 in Russia e Bielorussia) e la tecnologia k-MOS (serie 8ХСХХ, analogica - serie 1830). Il secondo carattere che segue 8 significa: 0 - nessuna EPROM su chip, 7 - 4K EPROM con cancellazione UV. Il terzo simbolo: 3 - la ROM sarà cristallizzata, 5 - se non c'è EPROM, allora una ROM maschera sarà sul chip.

E così 80S51 - LSI secondo la tecnologia k-MOS con ROM mascherata su un chip, 8031 \u200b\u200b- LSI n-MOS senza memoria di programma (ROM, EPROM) su un chip, 8751 - LSI n-MOS con residente (situato su un chip) EPROM con cancellazione di ultravioletti. Prenderemo inoltre in considerazione l'LSI 8751, facendo, se necessario, riserve sulle differenze in altri circuiti, fornendo quei parametri che sono stati pubblicati per il primo LSI seriale. Se necessario, è possibile trovare ulteriori informazioni su tutte le modifiche moderne nei manuali e nella documentazione tecnica dell'azienda.

A. Caratteristiche generali e assegnazione dei pin

La famiglia MCS51 si basa su cinque modifiche di MK (con caratteristiche di base identiche), la principale differenza tra l'implementazione della memoria del programma e il consumo di energia (vedere la Tabella 3.1). Il microcontoller è a otto bit, ad es. ha comandi per elaborare parole a otto bit, ha un'architettura di Harvard, la frequenza di clock dei campioni di base della famiglia è di 12 MHz.

Tabella 3.1

microcircuiti

Memoria interna del programma, byte

Tipo di memoria del programma

Memoria dati interna, byte

Frequenza di clock, MHz

Corrente di consumo, mA

MK 8051 e 80C51 contengono una ROM programmabile con maschera di memoria di programma con una capacità di 4096 byte durante la fabbricazione di un cristallo e sono progettati per l'uso nella produzione di massa. MK 8751 contiene una EPROM con una capacità di 4096 byte con cancellazione ultravioletta ed è conveniente nella fase di sviluppo del sistema durante il debug dei programmi, nonché quando si produce in piccoli lotti o quando si creano sistemi che richiedono ri

adeguamento periodico.

MK 8031 \u200b\u200be 80C31 non contengono memoria di programma integrata. Come le modifiche precedentemente descritte, possono utilizzare fino a 64 Kbyte di memoria di programma esterna e possono essere effettivamente utilizzati in sistemi che richiedono memoria di programma molto più grande (di 4 Kbyte su un chip).

Ogni MCU della famiglia contiene una memoria dati residente con una capacità di 128 byte con la possibilità di espandere la quantità totale di dati RAM fino a 64 KB utilizzando la RAM IC esterna.

    processore centrale a otto bit;

    memoria di programma da 4 KB (solo 8751 e 87C51);

    memoria dati a 128 byte;

    quattro porte I / O programmabili a otto bit;

    due timer / contatori multi-mode a 16 bit;

    un sistema di interruzioni di auto-vettore con cinque vettori e due livelli di priorità controllati da software;

    un'interfaccia seriale comprendente un ricetrasmettitore duplex universale in grado di funzionare in quattro modalità;

    generatore di clock.

Il sistema di comando MK contiene 111 comandi di base con il formato 1, 2 o 3 byte. Il microcontrollore ha:

    32 registri di uso generale RON, organizzati come quattro banchi di otto registri ciascuno con i nomi R0 ... R7, la scelta di uno o un altro banco è determinata dal programma impostando i bit corrispondenti nel registro di stato del programma PSW;

    128 flag controllati da software (processore di bit, vedi sotto);

    un insieme di registri di funzioni speciali che controllano gli elementi MK. Esistono le seguenti modalità operative del microcontrollore:

1). Ripristino generale. 2) Funzionamento normale. 3) Modalità risparmio energia e modalità stand-by. 4). Modalità di programmazione EPROM residente, se presente.

Qui ci concentreremo sulle prime due modalità operative, una descrizione dettagliata della composizione e del funzionamento dell'MC in tutte le modalità è riportata nell'Appendice A1.

RON e la zona del processore di bit si trovano nello spazio degli indirizzi della RAM residente con indirizzi da 0 a 80 ore.

Nella zona superiore degli indirizzi della memoria ad accesso casuale residente ci sono registri di funzioni speciali (SFR, Registri di funzioni speciali). Il loro scopo è indicato nella tabella. 3.2.

Tabella 3.2

Designazione

Nome

Batteria

Registro B

Registro dello stato del programma

Puntatore dello stack

Puntatore dati. 2 byte:

Minimo byte significativo

Byte alto

Registro delle priorità di interruzione

Registro di abilitazione interruzione

Registro modalità timer / contatore

Registro controllo timer / contatore

Timer / Contatore 0. Byte alto

Timer / Contatore 0. Byte basso

Timer / Contatore 1. Byte alto

Timer / Contatore 1. Byte basso

Controllo della porta seriale

Buffer della porta seriale

Gestione dei consumi

* - registri, ammettendo bit a bit indirizzamento

Rivediamo brevemente le funzioni dei registri SFR mostrate nella Tabella 3.2.

Batteria ACC - registro batteria. Comandi progettati per funzionare

sei con una batteria, usa il mnemonico "A", ad esempio, MOV E, P2 ... Il mnemonico "ACC" viene utilizzato, ad esempio, per l'indirizzamento della batteria bit a bit. Pertanto, il nome simbolico del quinto bit dell'accumulatore quando si utilizza l'assemblatore A5M51 sarà il seguente: ACC. cinque.

Registrati NEL ... Utilizzato durante le operazioni di moltiplicazione e divisione. Per altre istruzioni, il registro B può essere considerato come un registro superoperativo aggiuntivo.

Registrati fortune programmi PSW contiene informazioni sullo stato del programma e viene installato in parte automaticamente in base al risultato dell'operazione eseguita, in parte dall'utente. La designazione e lo scopo dei bit di registro sono riportati rispettivamente nelle tabelle 3.3 e 3.4.

Tabella 3.3

Designazione

Tabella 3.4

Designazione

Assegnazione dei bit

Accesso al bit

Porta bandiera. Cambiamenti durante l'esecuzione di una serie di istruzioni aritmetiche e logiche.

Hardware o software

Bandiera di trasporto aggiuntiva. Hardware impostato / cancellato durante le istruzioni di addizione o sottrazione per indicare il carry o il prestito nel bit 3 quando viene generato il bocconcino meno significativo del risultato (D0-D3).

Hardware o software

Flag 0. Flag definito dall'utente.

programmazione

programmazione

Puntatore alla banca del registro di lavoro

programmazione

Banca 0 con indirizzi (00H - 07H) Banca 1 con indirizzi (08H - 0FH) Banca 2 con indirizzi (10H - 17H) Banca 3 con indirizzi (18H - 1FH)

Bandiera di troppo pieno. L'hardware viene impostato o cancellato durante l'esecuzione delle istruzioni aritmetiche per indicare una condizione di overflow

Hardware o software

Spare. Contiene un trigger di lettura / scrittura che può essere utilizzato

Bit di parità. Hardware cancellato o impostato in ogni ciclo di istruzioni per indicare un numero pari o dispari di bit di batteria nello stato "1".

Hardware o software

pointer pila SP - Registro a 8 bit, il cui contenuto viene incrementato prima di scrivere i dati nello stack quando si eseguono i comandi PUSH e CALL. Al ripristino iniziale, il puntatore dello stack è impostato su 07H e l'area dello stack nella RAM dei dati inizia alle 08H. Se necessario, ridefinendo il puntatore dello stack, l'area dello stack può essere posizionata ovunque nella RAM dei dati interni dei microcontrollori.

pointer dati DPTR è composto da byte alto (DPH) e byte basso

(DPL). Contiene un indirizzo a 16 bit quando si accede alla memoria esterna. Può essere utilizzato

essere scritto come un registro a 16 bit o come due registri indipendenti a otto bit.

Port0 - Portz. I bit separati dei registri delle funzioni speciali P0, P1, P2, P3 sono bit - "agganci" delle porte P0, P1, P2, P3.

Buffer coerente porta SBUF sono due registri separati: il buffer del trasmettitore e il buffer del ricevitore. Quando i dati vengono scritti su SBUF, entrano nel buffer del trasmettitore e la scrittura di un byte su SBUF avvia automaticamente la sua trasmissione sulla porta seriale. Quando i dati vengono letti da SBUF, vengono recuperati dal buffer del ricevitore.

registri timer. Coppie di registro (TH0, TL0) e (TH1, TL1) forma 16-

registri di conteggio dei bit per timer / contatore 0 e timer / contatore 1, rispettivamente.

registri gestione. I registri delle funzioni speciali IP, IE, TMOD, TCON, SCON e PCON contengono bit di controllo e bit di stato del sistema di interrupt, timer

contatori / contatori e porta seriale. Saranno discussi in dettaglio di seguito.

RxD TxD INT0 INT1 T0 T1 WR

P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

RST BQ2 BQ1 EA

P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7

P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7

MK durante il funzionamento fornisce:

    il tempo minimo per eseguire i comandi di addizione è 1 μs;

    moltiplicazione e divisione dell'hardware con un tempo di esecuzione minimo di 4 μs.

MK offre la possibilità di impostare la frequenza del generatore interno utilizzando un quarzo, una catena LC o un generatore esterno.

Il sistema di istruzioni esteso fornisce indirizzamento byte e bit per bit, aritmetica binaria e binaria decimale, indicazione di overflow e parità pari / dispari e la possibilità di implementare un processore logico.

La caratteristica più importante e distintiva dell'architettura della famiglia MCS51 è che l'ALU è in grado di manipolare dati a singolo bit oltre a eseguire operazioni su tipi di dati a 8 bit. I singoli bit accessibili dal software possono essere impostati, cancellati o sostituiti dal loro complemento, possono essere inviati, controllati e

Figura 3.2 Conclusioni esterne

microcontrollore

utilizzato nel calcolo logico. Considerando che il supporto per tipi di dati semplici (con quelli esistenti

la tendenza verso l'aumento della lunghezza delle parole) può sembrare a prima vista un passo indietro, questa qualità rende i microcontrollori MCS51 particolarmente adatti per le applicazioni che utilizzano controller. Gli algoritmi di quest'ultimo, a modo loro, presumono la presenza di variabili booleane di input e output, che sono difficili da implementare usando microprocessori standard. Tutte queste proprietà vengono definite collettivamente come la famiglia di processori booleani MCS51. Con una ALU così potente, la famiglia di istruzioni MCS51 è altrettanto adatta per applicazioni di controllo in tempo reale e algoritmi ad alta intensità di dati.

Lo schema del microcontrollore è mostrato in Fig. 3.2. Nella versione base, è confezionato in un pacchetto DIP a 40 pin. Consideriamo lo scopo delle conclusioni.

Cominciamo con i pin di alimentazione «0 NEL" e "cinque NEL" , su cui riceve il cibo principale. La corrente di consumo è indicata nella tabella. 3.1.

Produzione "RST" - reset del microcontrollore. Quando viene applicato un livello alto attivo a questo pin, modalità generale scarico e MK esegue le seguenti azioni:

Imposta il contatore dei comandi del PC e tutti i registri delle funzioni speciali, eccetto i latch delle porte P0-P3, il puntatore dello stack SP e il registro SBUF, su zero;

    il puntatore dello stack è impostato su 07H;

    disabilita tutte le fonti di interrupt, i contatori timer e le sequenziali

    seleziona BANK 0 RAM, prepara le porte P0-P3 per la ricezione dei dati e determina

separa i pin ALE e PME come ingressi per la sincronizzazione esterna;

      nei registri delle funzioni speciali PCON, IP e IE, i bit di riserva sono randomizzati e tutti gli altri bit sono impostati a zero;

      il registro SBUF è impostato su valori casuali.

      imposta i latch-latch delle porte P0-P3 su "1".

Gli stati dei registri del microcontrollore dopo il ripristino sono mostrati nella Tabella 3.5.

Tabella 3.5

Informazione

Indefinito

0ХХХ0000В per k-MOS 0XXXXXXXB per n-MOS

Il pin RST ha anche una funzione alternativa. Attraverso di esso, viene fornita l'alimentazione di backup per mantenere invariato il contenuto della RAM del microcontrollore quando viene rimosso quello principale.

conclusioni BQ1, BQ2 sono progettati per collegare un risonatore al quarzo, che determina la frequenza di clock del MK.

Produzione EA` (E eSTERNA UN vestito esterno indirizzo) - è destinato ad attivare la modalità di lettura dei codici di controllo dalla memoria del programma esterno quando a questa uscita viene applicato un livello basso attivo. Il pin ha uno scopo alternativo (funzione). Viene fornito con la tensione di programmazione della EPROM in modalità di programmazione.

Produzione PME (P rogramma M emory E nable risoluzione memoria programmi) - progettato per controllare il ciclo di lettura dalla memoria del programma e viene attivato automaticamente dall'MC in ciascun ciclo della macchina.

Produzione Ale (UN vestito L ength E nable risoluzione junior indirizzi) lampeggia l'output della parte inferiore dell'indirizzo sulla porta P0. L'uscita viene utilizzata anche durante la programmazione della EPROM, mentre viene fornito un impulso strobo.

MK contiene quattro gruppi di porte: P0, P1, P2 e P3. Questi sono i restanti 40 pin del microcontrollore. Queste porte possono servire per informazioni I / O bit per bit, ma a parte ciò, ognuna di esse ha la sua specializzazione. Lo schema funzionale generalizzato della porta è mostrato in Fig. 3.3. La porta contiene gli switch FET di uscita collegati al pin, l'interruttore di funzione, il fermo sul D-flip-flop e la logica di controllo. Il fermo sul bus interno MK può essere scritto uno o zero. Questa informazione passa attraverso l'interruttore di funzione ai tasti di uscita e all'uscita MK. Nello stato di uno, entrambi i transistor N e N1 sono disattivati, ma N2 è attivo. Nello stato zero, si apre N

xia e N2 si chiudono. Nel momento in cui la porta svolge la funzione alternativa per la quale è specializzata, lo stato del pin viene rilasciato. Il microcontrollore può leggere separatamente lo stato del latch della porta e lo stato della sua uscita, impostato da un segnale esterno. Per questo nell'assemblatore MK ci sono comandi speciali che attivano le linee corrispondenti. Per leggere lo stato del pin, è necessario il latch della porta corrispondente

essere preregistrato

Da interno

Controllo del fermo

Selettore funzioni

Vcc

Fine settimana

unità. Quando la linea "read latch" è attivata all'uscita della cella "AND" a cui è collegata questa linea, il

si stanca MK D Q

Scrittura a scatto C Q

Lettura del fermo

Pin della porta

lo stato del fermo, che viene fornito al bus interno dell'MC, viene attivato quando

"Leggi output": lo stato dell'output esterno della porta.

Porta P0 - porta universale bidirezionale

input Output. Oltre questa porta

la funzione di organizzazione di bus per indirizzi esterni e

Figura. 3.3. Schema funzionale della porta del microcontrollore

dati per espandere la memoria del programma e la memoria dei dati

microcontrollore. Quando vi è un accesso alla memoria di programma esterna o viene eseguito il comando per accedere alla memoria di dati esterna, la parte di ordine inferiore dell'indirizzo (A0 ... A7) viene impostata sui pin della porta, che è in alto sul pin ALE. Quindi, quando si scrive nella memoria dati, le informazioni registrate dal bus interno dell'MC vengono inviate ai pin della porta P0. Nelle operazioni di lettura, al contrario, le informazioni dai pin della porta vanno al bus interno. Una caratteristica della porta P0 è l'assenza di un transistor "pull-up" N2, che fornisce energia all'uscita. La scrittura sul dispositivo di chiusura della porta dell'unità porta semplicemente in uno stato ad alta impedenza, necessario per il normale funzionamento del bus dati. Se è necessario alimentare qualsiasi dispositivo esterno attraverso l'uscita, è necessario fornire resistori esterni dai circuiti di alimentazione all'uscita della porta.

Porta Р1 - porta I / O bidirezionale universale senza funzioni alternative.

Porta P2 - una porta I / O bidirezionale universale, come funzione alternativa, che esegue l'emissione della parte senior dell'indirizzo (A8 ... A15) quando si accede alla memoria esterna.

Porta P3 - porta di input-output bidirezionale universale, ciascuna delle quali prevede l'implementazione di varie funzioni alternative. In questo caso, le funzioni alternative sono implementate solo se le unità sono scritte sui blocchi dei pin della porta, altrimenti l'esecuzione di funzioni alternative è bloccata. Elenchiamoli separatamente per ogni bit:

P3.0 RxD (Reead e Xternal Dmangiato, leggi i dati esterni) - input del ricetrasmettitore seriale incorporato.

P3.1 TxD (Type e Xternal Dha mangiato, trasmesso dati esterni) - uscita del ricetrasmettitore seriale incorporato.

P3.2 INT0` (INTerrupt, interrupt) - ingresso di interrupt esterno 0.

P3.3 INT1` - ingresso di interrupt esterno 1.

P3.4 C / T0 - ingresso del timer / contatore incorporato zero.

P3.5 C / T1 - ingresso del primo timer / contatore incorporato.

P3.6 WR` (Write, write) - controlla l'output del ciclo di scrittura nella memoria dati.

P3.7 RD` (Read, read) - controlla l'output del ciclo di lettura dalla memoria dati.

I pin delle porte P1, P2 e P3 sono in grado di fornire corrente di circa 0,2 mA in una unità e ricevere una corrente di 3 mA a zero, i pin della porta P0 sono più potenti e in grado di fornire una corrente di circa 0,8 mA per unità e ricevere una corrente di 5 mA a zero. Brevi informazioni sullo scopo dei pin del microcontrollore sono riportate nella tabella 3.6.

Tabella 3.6

Designazione

Assegnazione dei pin

Porta bidirezionale P1 a 8 bit. Ingresso indirizzo A0-A7 durante il controllo della ROM interna (EPROM)

entra in uscita

Segnale di ripristino generale. Uscita della potenza della RAM di backup da una fonte esterna (per 1816)

Porta P3 bidirezionale a 8 bit con funzioni aggiuntive

entra in uscita

Dati seriali ricevitore - RxD

Dati seriali trasmettitore - TxD

Ingresso di interrupt esterno 0- INT0`

Ingresso di interruzione esterno 1-INT1`

Ingresso timer / contatore 0: - T0

Ingresso timer / contatore 1: - T1

Uscita segnale stroboscopico durante la scrittura su memoria dati esterna: - WR`

Uscita segnale stroboscopico durante la lettura da memoria dati esterna - RD`

Cavi per il collegamento di un risonatore al quarzo.

uscita di uscita

Conclusione generale

Porta P2 bidirezionale a 8 bit. Indirizzo di uscita A8-A15 nel modo operativo con memoria esterna. Nella modalità di controllo ROM interna, i pin P2.0 - P2.6 vengono utilizzati come input dell'indirizzo A8-A14. Conclusione P2.7 - permesso di leggere ROM.

entra in uscita

Programma la risoluzione della memoria

Latch address abilita il segnale di uscita. Durante la programmazione del segnale EPROM: PROG

entra in uscita

Blocco del lavoro con memoria interna. Durante la programmazione della EPROM, viene dato il segnale UPR

entra in uscita

Porta P0 bidirezionale a 8 bit. Indirizzo / bus dati per lavorare con memoria esterna. Uscita dati D7-D0 nella modalità di controllo della ROM interna (EPROM).

entra in uscita

Potenza erogata dalla sorgente di tensione + 5V

Lo stato del sistema di interrupt viene interrogato alla fine di ogni ciclo della macchina nella fase S5P2, ad eccezione dei comandi RETI e di tutti i comandi che si riferiscono ai registri IE e IP. Dal momento in cui viene fissata la richiesta di interruzione al servizio dell'interruzione, sono necessari dai 38 agli 86 periodi della frequenza fOSC, a seconda della fase della richiesta e del numero di cicli macchina del comando durante l'esecuzione della quale è stata ricevuta la richiesta.

Quando l'interrupt è implementato nell'hardware, viene eseguita l'istruzione LCALL addr16, che assicura la memorizzazione nello stack dello stato corrente del contatore del programma (memorizzazione dell'indirizzo di ritorno) e lo spostamento nell'indirizzo iniziale addr16 della procedura di servizio corrispondente. Ogni sorgente della richiesta di interrupt ha la sua

indirizzo iniziale (vettore di interrupt):

Interruzione esterna INT0.

Timer / contatore di interruzione TC0.

Interruzione esterna INT1.

Timer / contatore di interruzione TC1.

Interruzione della porta seriale.

2.7. Metodi di indirizzamento e sistema di comando della famiglia MCS-51

Il sistema di comando della famiglia MCS-51 si concentra sull'organizzazione di input-output di dati flessibili tramite le porte universali P0 ... P3 e l'elaborazione delle informazioni primarie. Particolare attenzione è prestata alle operazioni con bit e trasferimento del controllo in base al loro valore. Le istruzioni per eseguire tali operazioni costituiscono un gruppo numeroso e insieme all'hardware corrispondente formano il cosiddetto "processore booleano" nell'architettura MCS-51.

Il set di istruzioni offre al programmatore la possibilità di utilizzare la maggior parte delle operazioni con un set completo di metodi di indirizzamento e risorse hardware disponibili per il software.

2.7.1. Metodi di indirizzamento

Ogni istruzione indica al processore l'operazione da eseguire e i metodi di accesso agli operandi. Il codice comando ha diversi campi con funzionalità specifiche. I campi più importanti di qualsiasi comando sono il codice operativo (CPC), che determina l'azione del comando e la parte dell'indirizzo. I campi della parte dell'indirizzo contengono informazioni sugli indirizzi degli operandi e il risultato dell'operazione, e in alcuni casi informazioni sull'indirizzo del comando successivo.

Se l'indirizzo punta al numero della cella di memoria in cui si trova l'operando o dove è scritto, allora si chiama indirizzo diretto.

I metodi di indirizzamento sono una raccolta di meccanismi per l'accesso agli operandi. Alcuni di essi sono semplici, portano a un formato di istruzioni compatto e un rapido accesso all'operando, ma hanno una quantità limitata di risorse disponibili. Altri consentono di operare con tutte le risorse disponibili nel sistema, ma il comando risulta lungo, sul suo

l'input e l'esecuzione richiedono molto tempo. L'insieme di metodi di indirizzamento in ciascun insieme di istruzioni è una combinazione di compromesso di meccanismi di indirizzamento noti, scelti dagli architetti in base all'insieme di compiti da risolvere.

Di seguito sono riportati i principali metodi di indirizzamento utilizzati nei comandi della famiglia MCS-51.

Indirizzamento implicito... Il comando non contiene istruzioni esplicite sull'indirizzo dell'operando che partecipa all'operazione o sull'indirizzo al quale si trova il risultato dell'operazione, ma questo indirizzo è implicito. Nei comandi, l'accumulatore viene spesso indirizzato in modo implicito come destinatario del risultato dell'operazione. Ad esempio, il risultato dell'aggiunta del contenuto dell'accumulatore (A) e del registro R1 della banca dati corrente con l'istruzione ADD A, R1 viene scritto nell'accumulatore implicitamente indirizzabile. L'intero comando specificato occupa un byte in memoria, mentre l'indirizzo del solo accumulatore (8Eh dell'area SFR) contiene un byte.

Indirizzamento diretto... Il campo dell'indirizzo del comando contiene

non è l'indirizzo dell'operando, ma l'operando stesso. L'indirizzamento diretto è indicato dal carattere speciale # davanti al numero. Ad esempio, con il comando MOV A, nell'accumulatore viene caricato il numero esadecimale 15 (il secondo byte del comando) # 15h. Nel sistema di comando, l'indirizzamento diretto è designato come #data, dove i dati sono un numero

(dati \u003d 00h ... FFh).

Indirizzamento diretto... Il campo dell'indirizzo di comando indica l'indirizzo diretto della cella di memoria dati in cui si trova l'operando o dove è scritto. Ad esempio, con il comando MOV A, 15h, i contenuti della cella DSEG con l'indirizzo 15h vengono caricati nell'accumulatore. La cella di memoria è direttamente indirizzabile e l'accumulatore è implicito. A seconda della posizione dell'operando indirizzato, l'indirizzamento diretto è suddiviso in registro diretto e assoluto.

Indirizzamento del registro diretto... Il campo dell'indirizzo di comando contiene l'indirizzo diretto del registro della banca dei registri corrente. Esistono otto registri in ciascun banco e per indirizzarli è necessario un indirizzo di inoltro a tre bit. Nel mnemonico dei comandi, il registro indirizzabile è designato Rn, dove n \u003d 0 ... 7. Tutti i campi di comando si adattano a un byte. Questo indirizzamento è chiamato breve. Ad esempio, MOV R4, R1.

Indirizzamento assoluto direttoconsente di fare riferimento a qualsiasi cella DSEG e area SFR. L'indirizzo diretto in questo caso occupa un byte e il comando - due byte. Nel sistema di comando, il byte dell'indirizzo diretto è designato dalla parola diretta (diretta \u003d 00h ... FFh). Ad esempio, l'istruzione MOV 80h, R2 (o MOV P0, R2) carica il contenuto del registro R2 della banca dati corrente nella porta P0 (posizione 80h dell'area SFR). Se entrambi gli operandi hanno un indirizzamento assoluto diretto, l'istruzione diventa a 3 byte (es. MOV 80h, 15h).

Indirizzamento indiretto... Il campo dell'indirizzo indica l'indirizzo della cella di memoria in cui si trova l'indirizzo diretto dell'operando. Nel sistema di comando, il simbolo speciale @ indica l'indirizzamento indiretto. Proprietà

i registri R0 e R1 (@Ri, i \u003d 0,1) di ciascuna banca di registri possiedono l'indirizzo diretto. Ad esempio, se il contenuto del registro R1 dell'attuale banco di registri è 15 ore, l'istruzione MOV A, @ R1 eseguirà la stessa azione dell'istruzione precedente MOV A, 15 ore - caricherà il contenuto della posizione di memoria DSEG 15 ore nell'accumulatore. Tuttavia, l'istruzione MOV A, @ R1 è a byte singolo, ma, soprattutto, è possibile modificare a livello di codice l'indirizzo modificando il contenuto del registro R1.

Indirizzamento relativo... Con l'indirizzamento relativo, l'indirizzo diretto viene formato aggiungendo l'indirizzo di base con il campo dell'indirizzo di comando. Il contenuto del contatore del programma viene utilizzato come indirizzo di base e il campo dell'indirizzo di comando è un rel di offset a 8 bit (relativo). Il numero rel viene interpretato dal comando come un intero con segno, rappresentato nel complemento a due. La gamma della sua presentazione è (-128 ... + 127). Quando si determina il numero rel, tenere presente che il contatore del programma punta al comando successivo da eseguire. L'indirizzamento relativo è ampiamente utilizzato nelle istruzioni di trasferimento di controllo per creare moduli di programma trasferibili. I comandi di trasferimento di controllo con indirizzamento relativo consentono di organizzare la ramificazione relativa alla posizione corrente del contatore del programma PC in entrambe le direzioni di (-128 ... + 127) byte.

Nei programmi di linguaggio assembly, il campo offset può essere utilizzato per specificare l'etichetta a cui saltare. Come risultato della traduzione, l'assemblatore calcolerà il valore di offset se non supera (-128 ... + 127). Altrimenti, verrà visualizzato un messaggio di errore.

Indirizzamento di baserappresenta un tipo di indirizzamento relativo. L'indirizzo diretto in questo caso viene formato aggiungendo l'indirizzo specificato nel comando con il contenuto del registro di base, che memorizza l'indirizzo di base. La funzione del registro di base nella famiglia MCS-51 è il registro puntatore dati DPTR o il contatore del programma PC. Questo tipo di indirizzamento è particolarmente utile durante l'elaborazione di tabelle e matrici di dati. Nelle istruzioni MOVC A, @ A + DPTR e MOVC A, @ A + PC, l'indirizzo di inoltro a 16 bit viene formato come la somma dei contenuti di DPTR e A o PC e A.

Indirizzamento della pagina... Con il paging, la memoria viene suddivisa in una serie di pagine di uguale lunghezza. L'indirizzamento della pagina viene eseguito da un registro di pagina separato e l'indirizzamento delle celle di memoria all'interno di una pagina viene eseguito dall'indirizzo contenuto nel comando. L'indirizzo diretto viene formato concatenando (aggiungendo) l'indirizzo della pagina e l'indirizzo della cella di memoria all'interno della pagina. Nell'istruzione MOVX A, @ Ri, la porta P2 (indirizzo byte alto) svolge la funzione del registro pagine e il contenuto del registro Ri (indirizzo byte basso) imposta l'indirizzo all'interno della pagina. In questo caso, la memoria è divisa in 256 pagine di 256 celle in ciascuna di esse.

Indirizzamento dello stackviene utilizzato in comandi non indirizzabili ed è una combinazione di metodi di indirizzamento auto-incremento e auto-decremento, che opera secondo il principio LIFO (L ast I nput - F irst O utput) - "last in - first out". Lo stack si trova in DSEG e cresce nella direzione di indirizzo crescente. L'indirizzo della parte superiore dello stack è contenuto nel puntatore dello stack SP. Quando un byte viene scritto nello stack, i contenuti SP vengono prima incrementati e quindi viene effettuata una scrittura a questo indirizzo. Quando legge un byte dallo stack, legge prima all'indirizzo indicato da SP, quindi diminuisce SP. Quando si utilizza uno stack, tenere presente che la profondità dello stack (il numero massimo di celle di memoria occupate dallo stack) non è controllata dall'hardware. Con un eccessivo aumento dello stack, le celle di memoria che non sono destinate allo stesso possono essere occupate con la perdita di informazioni al loro interno. Lo stack hardware viene utilizzato per memorizzare l'indirizzo di ritorno durante la manutenzione dell'interrupt.

2.7.2. Set di comandi della famiglia MCS-51

Il sistema di comando è presentato nelle tabelle A2.1 ... A2.6 dell'appendice 2. Le tabelle indicano il nome del comando, il suo mnemonico, il codice di operazione binaria, l'effetto del comando in esecuzione sui flag C, OV, AC e P, la lunghezza del comando in byte (B) e il tempo di esecuzione nei cicli macchina (C), nonché il contenuto della trasformazione eseguita dall'istruzione. Una virgola viene utilizzata come delimitatore per i campi indirizzo nei comandi. Per migliorare la leggibilità, è possibile aggiungere spazi dopo la virgola se l'assemblatore utilizzato li supporta.

L'intero set di comandi può essere diviso in 5 gruppi: operazioni di trasferimento dati, operazioni aritmetiche, operazioni logiche, operazioni a bit e operazioni di trasferimento di controllo.

Gruppo di comandi per operazioni di trasferimento dati(tabella A2.1) co-

contiene MOV (trasferimento dati tra DSEG e RSEG), MOVC (tra CSEG e A), MOVX (tra XSEG e A), PUSH e i comandi di accesso allo stack POP e due comandi di scambio XCH e XCHD. Tutti i comandi di trasferimento dati, in cui il ricevitore è la batteria, impostano il flag di parità P del contenuto della batteria e i comandi di indirizzo diretto in cui il registro PSW è il ricevitore cambiano tutti i flag. Il più capiente è l'istruzione MOV, che utilizza quattro metodi di indirizzamento: registro diretto (A, Rn, DPTR), diretto (diretto), indiretto (@Ri), diretto (#data, # data16). Il secondo operando dell'istruzione è la fonte, il primo è la destinazione. Esistono tre metodi di indirizzamento (tranne diretto) per indicare la destinazione e tutti e quattro per indicare la fonte. Il comando diretto e diretto MOV a tre byte fornisce il trasferimento tra due posizioni di memoria (DSEG e SFR), incluso RSEG. Per lo scambio con RSEG, vengono forniti formati speciali a due e uno byte:

La speciale istruzione MOV DPTR, # data16, carica il puntatore DPTR a 16 bit con data16.

L'istruzione MOVC consente di leggere le informazioni dalla memoria del programma CSEG non nel registro dei comandi del dispositivo di controllo, ma nella batteria del dispositivo operativo. Il comando utilizza due metodi di indirizzamento: basato su DPTR e relativo al PC. In entrambi i casi, l'offset intero senza segno (indice) viene memorizzato nell'accumulatore. La batteria funge anche da ricevitore del risultato. Il comando consente di eseguire una conversione veloce delle tabelle.

La memoria esterna è accessibile con l'istruzione MOVX. Lo scambio viene eseguito da byte tra la batteria e l'XSEG esterno. La cella XSEG può essere indirizzata in due modi: indirettamente tramite il puntatore DPTR a 16 bit e indirizzata indirettamente tramite il puntatore Ri a 8 bit, i \u003d 0,1. In quest'ultimo caso, il registro P2 funge da registro delle pagine.

I comandi PUSH e POP non indirizzati forniscono il trasferimento dei dati

tra DSEG, RSEG e SFR.

L'istruzione di scambio XCH fornisce uno scambio bidirezionale di byte e l'istruzione XCHD fornisce la tetrads meno significativa di operandi di byte.

Gruppo di comandi aritmetici(tabella A2.2) co-

contiene le istruzioni per l'aggiunta ADD, l'aggiunta con carry ADDC, la sottrazione con SUBB in prestito, l'incremento e il decremento di un INC e DEC, l'addizione BCD in formato compresso, la moltiplicazione MUL e la divisione DIV. Le operazioni vengono eseguite su numeri interi senza segno. Nelle operazioni di addizione e sottrazione, l'accumulatore è il primo operando e ricevitore del risultato. Il registro diretto, l'indirizzamento diretto assoluto, diretto e indiretto sono usati per definire il secondo operando. Le operazioni INC e DEC si applicano a un accumulatore, un registro indirizzabile direttamente o una posizione di memoria indirizzabile direttamente o indirettamente. Inoltre, l'operazione INC si applica al contenuto del registro puntatore DPTR a 16 bit.

Le operazioni di moltiplicazione e divisione di interi senza segno coinvolgono l'accumulatore e il registro B. Nella moltiplicazione, il valore di 8 bit di A viene moltiplicato per il valore di 8 bit di B e il risultato di 16 bit viene scritto nella coppia BA. In questo caso, il registro B memorizza la parte superiore del prodotto. Il flag OV viene impostato se il prodotto è maggiore di 255. Quando un valore A a 8 bit è diviso per un valore a 8 bit B, il quoziente viene scritto in A e il resto viene scritto in B. Un tentativo di dividere per 0 imposta il flag di overflow OV.

Il comando di correzione decimale dell'accumulatore DA viene inserito dopo il comando di aggiunta. I termini devono essere rappresentati nel codice BCD. La correzione viene eseguita in modo standard.

Gruppo di comandi logici(tabella A2.3 ) contiene tre operazioni tipiche: ANL - AND logico, ORL - OR logico, XRL - OR esclusivo logico. La fonte del primo operando

serve l'accumulatore A o la cella di memoria indirizzabile direttamente. Il secondo operando è specificato da uno dei quattro metodi di indirizzamento di base. Il gruppo include anche singole operazionisul contenuto dell'accumulatore: CLR - cancella, CPL - inversione e RL, RLC, RR e RRC - operazioni di spostamenti ciclici ed estesi a destra e a sinistra. Ciò include anche l'operazione di scambio di notebook nell'accumulatore SWAP, che può essere interpretato come uno spostamento ciclico di un byte di quattro cifre.

Gruppo di comandi bit(tabella A2.6) contiene co-

comandi SETB - impostazione di un bit su 1, CLR - ripristino di un bit su 0, inversione CPL - bit, ANL e ORL - AND logico e logico OR dei contenuti del flag C e un bit indirizzato direttamente, trasferimento MOV - bit.

NEL operazioni a bit, il flag C funge da accumulatore booleano. Gli operandi sono i contenuti del flag C o il bit indirizzato direttamente dell'area BSEG. Le operazioni ANL e ORL possono utilizzare il contenuto di un bit (bit) indirizzabile diretto o un'inversione del contenuto (/ bit).

NEL questo gruppo include anche i comandi per il ramo condizionale con relativoOffset a 8 bit rel. Un salto condizionale può essere eseguito sia con bit impostato (comando JB) sia con bit cancellato (comando JNB). Di particolare nota è il comando JBC, che, quando il bit è impostato, implementa la ramificazione e contemporaneamente cancella il bit su 0.

Controlla il gruppo di comandi di trasferimento(tabelle A2.4 e A2.5) con-

contiene comandi di salto incondizionato AJMP, LJMP, SJMP, JMP, salto condizionato JZ, JNZ, CJNE, chiama ACALL, LCALL, return RET, RETI e modifica con il salto condizionale DJNZ. È incluso anche un comando NOP vuoto.

NEL l'indirizzamento relativo è ampiamente utilizzato nei comandi di trasferimento di controllo, consentendo di creare moduli di programma trasferibili. L'indirizzo relativo èL'offset a 8 bit rel è un byte con segno che fornisce un salto (–128 \u200b\u200b... +127) byte rispetto alla posizione corrente del PC. È possibile utilizzare l'indirizzo addr16 diretto o indiretto @ A + DPTR per passare a qualsiasi altro punto nello spazio degli indirizzi 64 KB. In quest'ultimo caso, il contenuto di A viene interpretato come intero senza segno. La breve variante di indirizzamento diretto addr11 nella pagina corrente da 2 KB è stata introdotta per compatibilità con la famiglia MCS-48.

Tutti questi tipi di indirizzamento sono utilizzati nelle istruzioni di salto. I comandi di chiamata utilizzano solo i metodi di indirizzamento diretto addr16 e addr11 in-page. Tutti i comandi condizionali utilizzano solo l'indirizzamento relativo.

Quando il microcontrollore riconosce la richiesta di interruzione, genera l'istruzione addr16 LCALL, che assicura automaticamente che l'indirizzo di ritorno sia memorizzato nello stack. Le informazioni sullo stato del programma (contenuto del registro PSW) non vengono salvate automaticamente. dove

LA CAMPANA

C'è chi legge questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam