[Search] [Contact Us]
|
|||||||||||||||||||
Sponsor di 8052.it ![]() µC Family FAQ Strumenti di Sviluppo Libri Bookmarks Mailing List Forum Download Area Prodotti Il sito 8052.it e' in continua evoluzione: se avete suggerimenti o richieste contattateci |
8052 FAQ Le FAQ sono "Frequently Asked Questions", cioe' domande poste frequentemente su di un argomento, complete di risposte. In questa sezione sono presentate sia FAQ internazionali, sia le FAQ
di 8052.it
![]()
Base Cos'e' un microcontrollore 8052? Cos'e' un microcontrollore derivato 8052? Un microcontrollore e' un circuito integrato programmabile (microprocessore) che ha a bordo alcune periferiche per uso embedded, come timers, RAM, ROM, A/D converter, contatori, ecc. Un microcontrollore 8052 e' un microcontrollore che supporta il set di istruzioni Intel MCS-51. Le caratteristiche di base sono: 8 bit internal bus, indirizzamento possibile di 64Kb di ROM e RAM esterne multiplexate sullo stesso bus, architettura a registri, processore booleano. Un microcontrollore derivato 8052 e' un microcontrollore 8052 che oltre a supportare il set di istruzioni Intel MCS-51 offre funzionalita' in piu' rispetto all'originale (piu' periferiche, funzionamento piu' veloce, flash ROM, piu' RAM, ecc.). Vedi la sezione Famiglia 8052 Cos'ho bisogno per sviluppare progetti con 8052? Vedi la sezione Sviluppo Sono un programmatore Visual Basic/Visual C++/Delphi/ecc.: sara' difficile per me programmare per 8052? Posso usare questi compilatori? Per progettare sistemi embedded e' opportuno avere una buona conoscenza di elettronica, quantomeno digitale, oltre che di informatica/programmazione. Quindi un puro programmatore Windows potrebbe avere difficolta' ad avvicinarsi al mondo embedded, se non assistito dall'aiuto di un elettronico. Chi programma in C si trovera' piu' facilitato rispetto a chi usa VisualBasic, C++ o Delphi, Java o altri linguaggi orientati agli oggetti. In ogni caso nel mondo embedded la parola "Visual" non ha senso: i microcontrollori 8 bit hanno raramente un sistema operativo, e praticamente mai un'interfaccia grafica. E' essenziale conoscere bene l'Assembler. Per programmare i sistemi 8052 e' necessario utilizzare dei compilatori specifici per tale famiglia di microcontrollori, non e' possibile usare Visual Basic o Visual C++ o simili. Si puo' usare C++ per programmare 8052? E Java? I linguaggi orientati agli oggetti non trovano facile terreno nei piccoli microprocessori ad 8 bit degli 8052: questo tipo di approccio alla programmazione infatti ha bisogno di essere supportato dalla presenza di un sistema operativo e grandi quantita' di memoria RAM, cose che non si possono avere in un sistema tipico 8052. E' consigliabile abbandonare l'idea di usare questi linguaggi, anche se alcuni esperimenti su Java sono in corso nella comunita' 8052. Vedi la sezione Linguaggi Tools Cosa sono un interprete, un compilatore e un assembler? Che significa cross-assembler e cross-compiler? Cos'e' un linker? Un programma interpretato e' un programma il cui codice sorgente viene letto riga per riga ad ogni esecuzione, e trasformato "al volo" in linguaggio macchina eseguibile. Il programma che si occupa di questo lavoro viene detto interprete. Il BASIC e' tipicamente un linguaggio interpretato. Spesso i linguaggi interpretati piu' evoluti usano uno pseudo-codice, cioe' non leggono sempre direttamente il file di testo del sorgente, ma ne generano uno intermedio piu' snello che poi leggono e interpretano. Questo rende le interpretazioni successive alla prima piu' veloci. Un compilatore e' un programma che legge il codice sorgente da un file di testo e lo trasforma in liguaggio macchina eseguibile. Il linguaggio C e' tipicamente un linguaggio compilato. Spesso i compilatori generano codice assembler che poi ha bisogno a sua volta di essere "assemblato". Un assembler e' un compilatore per linguaggio Assembler, che e' il linguaggio base dei microprocessori. Anch'esso legge codice sorgente da un file di testo e lo trasforma in linguaggio macchina eseguibile. Il linguaggio macchina eseguibile e' una sequenza di numeri che corrispondono alle istruzioni e argomenti, che di solito vengono visualizzati in esadecimale. Ad ogni istruzione assembler corrisponde un codice esadecimale di istruzione. Un Linker e' un programma che permette di creare un programma univoco a partire da una o piu' parti pre-compilate del programma stesso. I compilatori e gli assembler offrono la possibilita' (gli assembler non sempre, ma spesso) di non allocare in maniera assoluta le variabili e il codice, cioe' di non definirne imediatamente l'indirizzo preciso: questo permette poi ad un programma linker di assegnare gli indirizzi delle variabili e del codice valutando al meglio l'utilizzo delle risorse del microcontroller. Il prefisso "cross" legato ad assembler e compiler sta a significare
che quei programmi producono codice che gira su microprocessori diversi
da quelli su cui girano i compilatori/assembler stessi. Per esempio, si
usano spesso assembler e compiler che girano su sistemi Intel x86 (i
piu'
comuni personal computer) ma producono codice che andra' eseguito su
microcontrollori
8052.
E' meglio usare Assembler o C per programmare 8052? Questa domanda puo' generare accese discussioni tra i sostenitori delle due fazioni, che spesso appaiono piu' che altro come difese di posizioni religiose. In linea di massima bisogna tenere conto che: La conclusione e' che se sapete usare entrambi, potete sfruttare i pregi di entrambi usando l'uno o l'altro a seconda delle esigenze specifiche. Quali assembler e compilatori C esistono per 8052? Ce ne sono gratuiti? Vedi la sezione Linguaggi Interrupts Cos'e' un interrupt? Cos'e' un vettore di interrupt? Un interrupt e' una parte di codice che interrompe il normale flusso del programma in maniera asincrona, viene eseguita, e quindi ritorna al normale flusso del programma dove era stato interrotto. Serve ad eseguire operazioni in corrispondenza di eventi che non sono temporalmente prevedibili in fase di progettazione, come ad esempio l'overflow di un timer o la fine di una conversione A/D o il cambiamento di livello logico di un pin, o la ricezione di un byte seriale... La gestione degli interrupt nei microcontrollori 8052 avviene attraverso un "vettore di interrupt", che e' una zona di memoria ROM a cui il programma salta (jump) automaticamente nell'evenienza di un interrupt. Ad ogni interrupt e' assegnato un preciso indirizzo di jump, detto appunto "vettore di interrupt", diverso dagli altri. Da questo indirizzo puo' iniziare l'esecuzione dei codice relativo all'interrupt. Al termine del codice relativo all'interrupt, l'istruzione specifica RETI (RETurn Interrupt) si occupa di ricominciare l'esecuzione del programma nel punto in cui era stato interrotto. Cos'e' la priorita' di un interrupt? Se e' necessario stabilire che un interrupt possa interromperne un altro, perche' ha bisogno di essere eseguito piu' in fretta, e' possibile assegnare ad ogni interrupt una priorita'. I microcontrollori 8052 base hanno due livelli di priorita' (ALTA e BASSA), mentre alcune versioni di derivati 8052 ne hanno molte di piu'. Input/Output Come si legge/scrive un pin di un 8052? Si puo' leggere o scrivere un pin 8052 leggendo/scrivendo il suo SFR (Special Function Register) latch. Ogni porta di un 8052, che tipicamente e' composta da 8 pin, ha un latch SFR che ne riflette lo stato. Quindi per leggere la porta P1 e' suffciente un'istruzione come MOV A, P1. Attenzione: gli 8052 hanno un sistema di pull-up debole sui loro pin di ingresso/uscita. In questo modo non e' necessario assegnare ad un pin la funzione I/O, ma il pin puo' essere contemporaneamente di I/O: se tirato basso dall'esterno e' un input, altrimenti e' un output. Dall'esterno e' possibile solo tirare bassi i pin, non e' possibile tirarli alti. Qual'e' lo stato iniziale default dei pin 8052? Al boot i pin di un 8052 standard sono tutti alti. Software Perche' l'assembler produce un errore su un PUSH/POP dell'accumulatore? Un errore comune e' scrivere "POP A" o "PUSH A", entrambe sintassi errate. Il simbolo "A" e' usato esclusivamente per indicare l'accumulatore all'interno di istruzioni assembler che gia' di per se' sanno di dover usare l'accumulatore. Per esempio, l'istruzione "RL A" (Rotate Left Accumulator) NON usa il paramtro "A" come effettivo argomento: il codice macchina di tale istruzione e' UN SOLO byte che significa appunto "Rotate Left Accumulator". Il linguaggio assembler utilizza la sintassi RL A esclusivamente per rendere agli umani piu' facile capire l'istruzione. La sintassi "A" per l'accumulatore non puo' essere usata quando va specificato l'indirizzo vero e proprio dell'accumulatore all'istruzione, come nel caso di PUSH e POP. In questo casi bisogna usare la sintassi "ACC": PUSH ACC o POP ACC. Come faccio ad usare numeri floating point? I buoni compilatori C sono in grado di compiere operazioni in virgola mobile. Esistono anche librerie (spesso costose) per l'uso dei floating point in asssembler. I floating point sono molto avidi di risorse ROM/RAM e temporali: prima di usarli e' opportuno valutare attentamente ogni altra soluzione possibile. C'e' modo di leggere il valore del Program Counter? Il "Program Counter" e' un contatore 16 bit in cui e' memorizzato continuamente l'indirizzo dell'istruzione in esecuzione. In molti assembler il simbolo "$" si riferisce all'indirizzo dell'istruzione corrente, per cui per esempio l'istruzione JMP $ risulta in un loop infinito di salti all'indirizzo di JMP. Generiche Su puo' implementare TCP/IP su un 8052? Si', e' possibile. Alcuni RTOS commerciali per 8052 per esempio lo implementano (CMX). Si puo' implementare USB o CAN su un 8052? Si'. Alcuni derivati 8052 hanno a bordo periferiche USB (Cypress) e CAN. Si puo' usare un 8052 per le smart cards? Si'. Le Smart Cards usano uno standard specificato nelle ISO-7816. Si puo' creare un intefaccia tra una smart card e un 8052 usando i pin di I/O. Si puo' usare un 8052 per un lettore bar-code? Si'. Puo' essere un algoritmo complicato, ma e' possibile: un sensore ottico legge le "barre" e le comunica al micro, che ne deve valutare i pieno/vuoti. Si puo' interfacciare un 8052 ad un hard disk IDE? Si'. In effetti il primo Hard Disk che ho posseduto, un Seagate ST-157A da 40MB montato su di un Dell 386, era controllato da un 8052. Si puo' usare un 8052 per connessioni telefoniche? Si', anche se e' opportuno usare un chip esterno come MT8880 (Mitelper) per il dialing. E' possibile usare Linux per lo sviluppo 8052? Si'. Usando un emulatore DOS come "dosemu" e' possibile utilizzare qualsiasi compilatore e assembler originario DOS: Inoltre il compilatore C SDCC (free) e' disponibile per sistemi UNIX
e puo' essere usato per 8052.
|
||||||||||||||||||
|
FAQ |
Site made with Sworg - Simple Web Organizer
|
||||||||||||||||||