Menu English Ukrainian Russo Casa

Libreria tecnica gratuita per hobbisti e professionisti Libreria tecnica gratuita


ENCICLOPEDIA DELLA RADIOELETTRONICA ED ELETTRICA
Libreria gratuita / Schemi di dispositivi radioelettronici ed elettrici

Cos'è il PIC? Enciclopedia dell'elettronica radio e dell'ingegneria elettrica. Enciclopedia dell'elettronica radio e dell'ingegneria elettrica

Libreria tecnica gratuita

Enciclopedia della radioelettronica e dell'elettrotecnica / microcontrollori

Commenti sull'articoloCommenti sull'articolo

Introduzione. I PIC16CXX sono microcontrollori a 8 bit con architettura RISC prodotti da Microchip Technology. Questa famiglia di microcontrollori è caratterizzata da prezzo basso, basso consumo energetico e alta velocità.

I microcontrollori hanno un programma EEPROM integrato, RAM dati e sono disponibili in pacchetti a 18 e 28 pin.

I PIC OTP sono controller programmabili dall'utente una tantum progettati per prodotti completamente testati e completi che non saranno sottoposti a ulteriori modifiche al codice. Questi controller sono disponibili in custodie di plastica economiche con un tipo preimpostato di oscillatore esterno: quarzo o RC.

Per il debug dei programmi e la prototipazione è disponibile una versione di controller con cancellazione ultravioletta. Questi controller consentono un gran numero di cicli di scrittura/cancellazione e hanno un tempo di cancellazione molto breve, solitamente 1-2 minuti.

Tuttavia, il prezzo di tali controller è significativamente più alto di quelli che possono essere programmati una volta, quindi non è redditizio installarli in prodotti di serie.

Per i prodotti il ​​cui programma può cambiare o contiene parti variabili, tabelle, parametri di calibrazione, chiavi, ecc., è disponibile un controller PIC16C84 cancellabile e riprogrammabile elettricamente. Contiene anche una ROM dati programmabile elettricamente. Questo è esattamente il controller che utilizzeremo per gli esperimenti.

Per ottenere il massimo da questo articolo, avrai bisogno di un personal computer compatibile IBM PC, un programmatore collegato alla porta parallela del computer, un chip PIC16C84, una scheda di sviluppo, 8 LED con resistori, un alimentatore +5 V e un presa per il chip.

Digiteremo piccoli pezzi di programma per il PIC, li assembleremo, li scriveremo nel chip e poi osserveremo il risultato sui LED. Utilizzeremo i mnemonici di base di MICROCHIP in questo articolo in modo che tu possa utilizzare più facilmente altri esempi di applicazioni ed elenchi inclusi nel Manuale di controllo incorporato.

FAMIGLIA PIC16CXX Inizieremo una descrizione dettagliata della famiglia di microcircuiti PIC con quelle caratteristiche e vantaggi che distinguono questi microcontrollori dagli altri. Per le applicazioni di sicurezza delle informazioni, ciascun PIC dispone di un bit di sicurezza che può essere programmato per impedire la lettura del codice del programma e della ROM dei dati. Durante la programmazione, viene prima scritto il codice del programma, verificata la correttezza della registrazione, quindi viene impostato il bit di privacy. Se provi a leggere un microcircuito con il bit privacy impostato, per il PIC16C5X gli 8 bit più alti del codice verranno letti come 0 e i 4 bit inferiori saranno i 12 bit criptati del comando. Per PIC16C84, analogamente, i 7 bit più significativi verranno letti come zero e i 7 bit meno significativi rappresenteranno i 14 bit di comando criptati. La ROM dati programmabili elettricamente del PIC16C84 non può essere letta quando è impostato il bit di sicurezza. La Figura 1 mostra tutti i microcontrollori attualmente prodotti e fornisce le loro brevi caratteristiche. (Figura a pagina 2-1) I microcontrollori della famiglia PIC dispongono di un sistema di comando molto efficiente, composto da sole 35 istruzioni. Tutte le istruzioni vengono eseguite in un ciclo, ad eccezione dei salti condizionali e delle istruzioni che modificano il contatore del programma, che vengono eseguiti in 2 cicli. Un ciclo di esecuzione di un'istruzione è composto da 4 periodi di clock. Pertanto, alla frequenza di 4 MHz, il tempo di esecuzione dell'istruzione è di 1 μsec. Ogni istruzione è composta da 14 bit, suddivisi in un codice operazione e un operando (è possibile la manipolazione con registri, celle di memoria e dati diretti). Il sistema di comando dei microcontrollori PIC16CXX è presentato in Figura 2. (Tabella 7.2 a pagina 2-569) L'elevata velocità di esecuzione dei comandi nel PIC è ottenuta utilizzando un'architettura Harvard a doppio bus invece della tradizionale Von Neumann a bus singolo architettura. L'architettura Harvard si basa su un insieme di registri con bus separati e spazio di indirizzi per istruzioni e dati. Un set di registri significa che tutti gli oggetti software, come porte I/O, posizioni di memoria e timer, sono registri hardware fisicamente implementati.

La memoria dati (RAM) per PIC16CXX ha una larghezza di 8 bit, la memoria di programma (PROM) ha una larghezza di 12 bit per PIC16C5X e 14 bit per PIC16CXX. L'utilizzo dell'architettura Harvard consente di ottenere prestazioni ad alta velocità nelle operazioni di bit, byte e registri. Inoltre, l'architettura Harvard consente l'esecuzione di istruzioni tramite pipeline, quando l'istruzione corrente viene eseguita simultaneamente e viene letta quella successiva. Nella tradizionale architettura Von Neumann, comandi e dati vengono trasmessi attraverso un bus condiviso o multiplexato, limitando così le possibilità di pipeline. La Figura 3 mostra uno schema a blocchi della struttura a doppio bus del PIC16CXX. (Figura B a pagina 2-536) Come puoi vedere, i componenti fisici e logici interni che compongono il PIC16CXX sono simili a qualsiasi altro microcontrollore con cui potresti aver lavorato finora. Pertanto, scrivere programmi per il PIC non è più difficile che per qualsiasi altro processore. Logica, e solo logica...

Naturalmente, l'architettura Harvard e l'ampia larghezza delle istruzioni consentono di rendere il codice per il PIC molto più compatto rispetto ad altri microcontrollori e di aumentare significativamente la velocità di esecuzione del programma.

SET REGISTRI PIC Tutti gli oggetti software con cui il PIC può lavorare sono registri fisici. Per capire come funziona il PIC, è necessario capire quali registri ha e come lavorare con ciascuno di essi. La Figura 4 mostra tutti i registri del PIC16C84. (Figura 3.7.1 a pag.

2-541) Cominciamo con una serie di registri operativi. Questo set è costituito da un registro di indirizzamento indiretto (f0), un registro timer/contatore (f1), un contatore di programma (f2), un registro delle parole di stato (f3), un registro di selezione (f4) e registri I/O (f5 , f6).

È assolutamente necessario che tu capisca come utilizzare questi registri, poiché rappresentano la maggior parte degli oggetti programmabili del microcontrollore. Poiché abbiamo principalmente bisogno di capire "come controllare" piuttosto che "come è fatto internamente", abbiamo incluso esempi molto semplici che mostrano i possibili usi di ciascun registro.

f0...REGISTRA DI INDIRIZZAMENTO INDIRETTO IND0 Il registro di indirizzamento indiretto f0 non esiste fisicamente. Utilizza il registro di selezione f4 per selezionare indirettamente uno dei 64 registri possibili.

Qualsiasi comando che utilizza f0 accede effettivamente al registro dati puntato da f4.

f1...REGISTRA TIMER/CONTATORE TMR0 Il registro timer/contatore TMR0 può essere scritto e letto come qualsiasi altro registro. TMR0 può essere incrementato da un segnale esterno applicato al pin RTCC o da una frequenza interna corrispondente alla frequenza di comando.

L'uso principale di un timer/contatore è contare il numero di eventi esterni e misurare il tempo. Un segnale proveniente da una sorgente esterna o interna può anche essere pre-diviso utilizzando un divisore programmabile integrato nel PIC.

f2...PROGRAM COUNTER PCL Il program counter (PC) viene utilizzato per generare una sequenza di indirizzi di celle della ROM di programma contenenti istruzioni a 14 bit. Il PC ha una capacità di 13 bit, che consente di indirizzare direttamente celle ROM 8Kx14. Per il PIC16C84, tuttavia, sono fisicamente disponibili solo celle da 1K. Gli 8 bit inferiori del PC possono essere scritti e letti tramite il registro f2, i 5 bit superiori vengono caricati dal registro PCLATCH, che ha indirizzo 0Ah.

f3...REGISTRATO DELLE PAROLE DI STATO Il registro delle parole di stato è simile al registro PSW presente nella maggior parte dei microprocessori. Contiene i bit di riporto, decimale e zero, nonché i bit della modalità di abilitazione e i bit di paging.

f4...REGISTRA DI SELEZIONE FSR Come già accennato, il registro di selezione FSR viene utilizzato insieme al registro di indirizzamento indiretto f0 per selezionare indirettamente uno dei 64 registri possibili. Fisicamente vengono utilizzati 36 registri RAM utente, ubicati agli indirizzi 0Ch-2Fh e 15 registri di servizio, ubicati a vari indirizzi.

f5, f6... REGISTRI I/O PORTA, PORTB I registri f5 e f6 corrispondono alle due porte I/O disponibili sul PIC16C84. La porta A ha 5 bit PA4-PA0, che possono essere programmati individualmente come ingressi o uscite utilizzando il registro TRISA, che ha indirizzo 85h. La porta B ha 8 bit PB7-PB0 ed è programmata utilizzando il registro TRISB con indirizzo 86h. Il lavoro 1 nel bit del registro TRIS programma il bit della porta corrispondente come ingresso. Quando si legge una porta, viene letto lo stato immediato dell'uscita; quando si scrive su una porta, la scrittura avviene nel registro buffer.

f8, f9... REGISTRI EPROM EEDATA, EEADR PIC16C84 ha una ROM integrata riprogrammabile elettricamente di 64 byte di dimensione, che può essere letta e scritta utilizzando il registro dati EEDATA e il registro degli indirizzi EEADR. La scrittura di un nuovo byte dura circa 10 ms ed è controllata da un timer integrato. Il controllo della scrittura e della lettura viene effettuato tramite il registro EECON1, che ha indirizzo 88h. Per un ulteriore controllo sulla registrazione, utilizzare il registro EECON2, che ha l'indirizzo 89h.

REGISTRI PER SCOPI GENERALI I registri per scopi generali sono RAM statiche situate agli indirizzi 0Ch-2Fh. Nel PIC16C84 è possibile utilizzare un totale di 36 celle RAM.

REGISTRI SPECIALI W, INTCON, OPZIONE Infine, diamo un'occhiata ai registri speciali PIC. Questi includono il registro di lavoro W, utilizzato nella maggior parte dei comandi come registro accumulatore, e i registri INTCON e OPTION. Il registro di interruzione INTCON (indirizzo 0Bh) viene utilizzato per controllare le modalità di interruzione e contiene bit di abilitazione dell'interruzione da varie fonti e flag di interruzione. Il registro della modalità OPTION (indirizzo 81h) viene utilizzato per impostare le sorgenti del segnale per il prescaler e il timer/contatore, nonché per impostare il rapporto di divisione del prescaler, il fronte attivo del segnale per RTCC e l'ingresso di interruzione. Inoltre, utilizzando il registro OPTION, è possibile abilitare i resistori di carico per i bit della porta B programmati come ingressi.

WATCH TIMER WDT Il timer watchdog WDT è progettato per prevenire conseguenze catastrofiche derivanti da errori casuali del programma. Può essere utilizzato anche in applicazioni legate alla temporizzazione, come un rilevatore di impulsi mancanti. L'idea di utilizzare un timer watchdog è di reimpostarlo regolarmente sotto il controllo di un programma o di un'influenza esterna prima che scada il timeout e il processore venga reimpostato. Se il programma viene eseguito normalmente, il comando di ripristino del watchdog CLRWDT deve essere eseguito regolarmente per impedire il ripristino del processore. Se il microprocessore esce accidentalmente dal programma (ad esempio, a causa di una forte interferenza nel circuito di alimentazione) o si blocca in qualche parte del programma, molto probabilmente il comando di reset del timer watchdog non verrà eseguito entro un tempo sufficiente e un Si verificherà il ripristino completo del processore, inizializzando tutte le funzioni, i registri e riportando il sistema in condizioni di funzionamento.

Il timer watchdog nel PIC16C84 non richiede componenti esterni e funziona su un oscillatore RC integrato e la generazione non si interrompe anche se non viene rilevata la velocità di clock del processore. Il periodo tipico del timer watchdog è di 18 ms. È possibile collegare un prescaler al timer watchdog e aumentarne il periodo fino a 2 secondi.

Un'altra funzione del timer watchdog è quella di accendere il processore da una modalità a basso consumo, in cui il processore viene commutato con il comando SLEEP. In questa modalità, il PIC16C84 consuma pochissima corrente, circa 1 µA. È possibile passare da questa modalità alla modalità operativa tramite un evento esterno premendo un pulsante, attivando un sensore o tramite un timer watchdog.

GENERATORE DI OROLOGIO Per i microcontrollori della famiglia PIC è possibile utilizzare quattro tipologie di generatore di clock: XT risonatore al quarzo HS risonatore al quarzo ad alta frequenza LP risonatore al quarzo a microconsumo RC RC catena Il tipo di generatore di clock utilizzato viene specificato nel processo applicativo di programmazione il microcircuito. Se sono specificate le opzioni XT, HS e LP, al microcircuito è collegato un risonatore al quarzo o ceramico o una sorgente di clock esterna e, se è specificata l'opzione RC, sono collegati un resistore e un condensatore. Naturalmente, un risuonatore ceramico e, soprattutto, al quarzo è molto più preciso e stabile, ma se non è necessaria un'elevata precisione temporale, l'uso di un generatore RC può ridurre il costo e le dimensioni del dispositivo.

CIRCUITO DI RESET I microcontrollori della famiglia PIC utilizzano un circuito interno di reset all'accensione in combinazione con un timer di avvio del generatore, che consente nella maggior parte delle situazioni di fare a meno di un resistore e di un condensatore tradizionali.

Basta collegare l'ingresso MCLR a una fonte di alimentazione. Se sono possibili disturbi impulsivi o picchi di tensione all'accensione, è meglio utilizzare un resistore in serie da 100-300 Ohm. Se la potenza aumenta molto lentamente (meno di 70 ms) o si lavora a velocità di clock molto basse, è necessario utilizzare un circuito di reset tradizionale con resistore e condensatore.

DALLA TEORIA ALLA PRATICA...

Abbiamo brevemente conosciuto gli elementi principali che compongono la famiglia di microcontrollori PIC. Passiamo ora agli esercizi pratici.

Scriveremo brevi programmi, li assembleremo, li scriveremo in un microcircuito e vedremo cosa succede.

Per questo abbiamo bisogno delle seguenti cose: - chip PIC16C84; - assemblatore MPALC; -programmatore PROPIC; - alimentazione DC o AC 18-36 V; - breadboard con dispositivo di visualizzazione.

Lo schema del dispositivo di indicazione, che utilizzeremo per dimostrare il funzionamento dei principali comandi PIC16C84, è mostrato in Figura 5. (devi disegnare) Come puoi vedere, il dispositivo è costituito semplicemente da 8 LED con limitatore di corrente resistori ed elementi di regolazione della frequenza. Ciascun pin della famiglia di microcontrollori PIC può controllare direttamente un LED senza amplificatori aggiuntivi.

Cos'è PIC?

Cominciamo con una descrizione del codice base che verrà utilizzato nei nostri esempi. Quando inizi a scrivere il codice per il tuo progetto, la sezione dell'intestazione (tutto il codice fino alla riga con l'espressione ORG 0) dovrebbe tenere in considerazione le specifiche della tua applicazione. La sezione di intestazione definisce i nomi logici per tutte le risorse utilizzate nel progetto: porte, variabili bit e byte e registri. La nostra intestazione imposta anche le porte I/O, in modo che tutti i bit delle porte A e B verranno impostati come uscite dopo aver eseguito i seguenti comandi: MOVLW INITA MOVWF TRISA MOVLW INITB MOVWF TRISB All'accensione, il PIC16C84 imposta tutti i bit di porte A e B da inserire e avvia l'esecuzione del programma dall'indirizzo 000h. Il codice di base è mostrato nella Figura 6. (è necessario disegnare) Qualcosa del genere: ; Esempio di codice base per il programma demo; LISTA P=16C84, E=2 ; ; Sezione intestazione; ; descrizione dei registri operativi TMR0 EQU 01h PC EQU 02h STATUS EQU 03h FSR EQU 04h ; Registri I/O CNTRLPORT EQU 05h DATAPORT EQU 06h ; celle RAM SCRATCH EQU 0Ch DIGIT EQU 0Dh ; bit di registro STATUS C EQU 0h DC EQU 1h Z EQU 2h PD EQU 3h TO EQU 4h RP EQU 5h ; registri di controllo TRISA EQU 85h TRISB EQU 86h ; parole di inizializzazione per porte di ingresso/uscita INITA EQU B'00000000' INITB EQU B'00000000' ; ; Sezione di lavoro; ; inizio del codice eseguibile ORG 0 GOTO BEGIN ; ORG 100h BEGIN MOVLW INITA MOVWF TRISA MOVLW INITB MOVWF TRISB ; ; Incolla qui il codice di esempio; FINE ; Fare riferimento alla Figura 4 secondo necessità mentre si discute il codice sottostante. Innanzitutto tutte le righe che iniziano con il segno ";" vengono percepite dall'assembler come commenti. Passiamo all'espressione TMR0. Abbiamo detto all'assemblatore che ogni volta che si incontra la parola TMR0, questa deve sostituire il valore 01h (01 esadecimale). La parola "EQU" significa uguaglianza. Pertanto, abbiamo assegnato a TMR0 il valore 1h. Come si può vedere dalla Figura 4, il registro TMR0 ha in realtà l'indirizzo 1h. Puoi usare 01h ogni volta che vuoi indirizzare il registro TMR0, ma sarà molto più difficile eseguire il debug poiché dovrai ricordare sempre che 01h significa RTCC. Potresti anche avere dati pari a 01h. L'uso di nomi simbolici elimina l'ambiguità e rende il testo sorgente più facile da leggere. Puoi anche vedere le espressioni per definire i registri PC, STATUS e FSR. Il nome PC corrisponde all'indirizzo del registro 02h, il nome STATUS corrisponde all'indirizzo del registro 03h, il nome FSR all'indirizzo del registro 04h e così via. Impostiamo anche i nomi per le porte I/O, CNTRLPORT (05h) e DATAPORT (06h). Le celle RAM possono anche avere nomi. Abbiamo scelto i nomi "SCRATCH" per la cella con indirizzo 0Ch e "DIGIT" per la cella con indirizzo 0Dh. Se leggi questo testo fino alla fine, vedrai che non utilizziamo il PC direttamente da nessuna parte, sebbene questo nome sia definito. Non c'è alcun errore in questo: puoi definire i nomi e poi non usarli, anche se, ovviamente, non puoi usare un nome se non è stato precedentemente definito. Non preoccuparti troppo di questo: il lavoro dell'assemblatore è controllare il testo per assicurarsi che tutte le regole siano rispettate e riceverai messaggi di errore se qualcosa non corrisponde. È possibile denominare non solo i registri, ma anche i singoli bit all'interno dei registri. Si noti la sezione che imposta il registro STATUS. La Figura 7 mostra in cosa consiste il registro STATUS. (Figura 3.9.1 a pagina 2-544) Al simbolo C viene assegnato il valore 0h, poiché C o CARRY è il bit zero della parola di stato STATUS. Ogni volta che dovremo controllare il bit CARRY (bit 0), utilizzeremo il carattere predefinito "C". Ogni volta che vogliamo accedere al bit 2, o al bit ZERO, utilizzeremo il carattere "Z" invece di 02h. È possibile definire la struttura completa dei bit di registro, anche se in seguito non li si utilizza tutti. Ora ci è chiaro come vengono descritti i registri e possiamo passare al codice eseguibile. Prima di iniziare l'esecuzione del codice, dobbiamo impostare l'espressione ORG 0. Questa è un'indicazione all'assemblatore che il codice che segue questa espressione inizia all'indirizzo EEPROM zero. L'espressione "ORG" viene utilizzata per posizionare segmenti di codice in indirizzi diversi all'interno della dimensione EEPROM. Un'altra espressione ORG viene inserita prima dell'etichetta BEGIN, che ha l'indirizzo 100h, come specificato dall'espressione ORG 100h. Il codice eseguibile deve terminare con la direttiva END, il che significa che non ci sono comandi eseguibili che seguono questa direttiva. All'accensione il PIC16C84 va all'indirizzo 000h. La prima istruzione che verrà eseguita dal processore è il comando GOTO BEGIN, che trasferirà il controllo all'indirizzo 100h e da questo indirizzo continuerà il lavoro successivo. BEGIN è un nome di etichetta selezionabile dall'utente (le etichette devono sempre iniziare nella prima posizione della riga) che l'assembler utilizza come riferimento di indirizzo. Durante il funzionamento, l'assemblatore determina la posizione dell'etichetta BEGIN e ricorda che se questo nome viene incontrato nuovamente, l'indirizzo dell'etichetta verrà sostituito. I comandi CALL e GOTO utilizzano etichette per i riferimenti nel testo di origine. Ora diamo un'occhiata ai seguenti comandi eseguiti dal processore. Il comando MOVLW INITA carica il registro di lavoro W con il valore assegnato al nome INITA. Questo valore è specificato nell'intestazione ed è uguale a B'00000000', ovvero 00h. I caratteri B' indicano che i dati sono forniti in formato binario. Potresti scrivere 0 (decimale) o 0h (esadecimale) nello stesso posto e ottenere lo stesso risultato. La rappresentazione binaria è più comoda da utilizzare nei casi in cui è prevista un'operazione con i bit in un registro. Il seguente comando MOVWF TRISA carica il valore dal registro di lavoro W nel registro di controllo della configurazione della porta TRISA A. Impostando un bit di questo registro su 0 si specifica che il bit corrispondente della porta A è un'uscita. Nel nostro caso, tutti i bit della porta A sono impostati dalle uscite. Si noti che la porta A ha solo 5 bit e i 3 bit più alti del valore scritto nel registro TRISA, che ha anch'esso 5 bit, non vengono utilizzati. Se volessimo, ad esempio, impostare come input il bit meno significativo della porta A, imposteremmo il valore INITA nella sezione di descrizione del registro su B'00000001'. Se durante l'esecuzione del programma dobbiamo ridefinire l'assegnazione dei singoli bit della porta, ad esempio durante la trasmissione bidirezionale, allora è più conveniente impostare tutte le parole di configurazione necessarie nella sezione descrizione, come abbiamo fatto per INITA e INITB. I successivi due comandi MOVLW INITB e MOVWF TRISB definiscono la configurazione della porta B. Potremmo risparmiare denaro non scrivendo il comando MOVLW INITB, poiché nel nostro caso anche INITB è 0h. Tuttavia, non l'abbiamo fatto perché potrebbe portare a errori difficili da rilevare se in seguito avessimo bisogno di modificare l'assegnazione di un bit qualsiasi. Invece di cambiare solo un bit in una porta, cambieranno due bit con lo stesso numero in due porte. Pertanto, fino al completamento del programma, non è consigliabile effettuare tali risparmi, anche se alla fine, nella fase di ottimizzazione del codice, tali ripetizioni possono essere rimosse. Cosa abbiamo già fatto? 1. Usando le linee EQU, abbiamo detto all'assemblatore quali nomi simbolici avremmo usato. 2. Abbiamo impostato il vettore di ripristino all'indirizzo 000h. 3. Impostiamo l'indirizzo di inizio dell'esecuzione del programma dall'etichetta BEGIN all'indirizzo 100h. 4. Abbiamo configurato tutti i bit delle porte A e B come uscite. Ora possiamo inserire il codice di esempio tra l'intestazione e la fine del nostro codice di base invece della riga commentata "Inserisci qui il codice di esempio". Sostituiremo questa riga con comandi reali, assembleremo il programma risultante, lo scriveremo nel microcircuito, sposteremo il microcircuito su una breadboard con un dispositivo di indicazione e vedremo cosa succede. PRIMO PROGRAMMA Per il primo programma abbiamo bisogno solo di tre comandi: MOVLW k MOVWF f GOTO k Abbiamo già utilizzato questi comandi nell'intestazione del nostro codice base. L'istruzione MOVLW carica un byte letterale o costante nel registro di lavoro W. Il seguente comando MOVWF trasferisce un byte dal registro di lavoro W al registro specificato f. Il comando GOTO trasferisce il controllo all'indirizzo k. Il seguente programma scrive il valore 01010101 nel registro di lavoro W e quindi invia il suo contenuto alla porta B. Dopo aver avviato questo programma, vedrai quattro LED illuminarsi. MOVLW B'01010101' ;carica 01010101 nel registro W MOVWF DATAPORT ;scrive W nella porta B (DATAPORT) GOTO $ ;loop per sempre La direttiva assembler "$" indica il valore corrente del contatore del programma (PC). Pertanto, il comando GOTO $ significa andare dove ci troviamo attualmente. Questo ciclo è infinito perché non c'è modo (se non l'interruzione) di uscirne. Il comando GOTO $ viene spesso utilizzato per interrompere il codice durante il debug. ASSEMBLY Utilizzeremo il macro assembler MPALC, poiché è distribuito gratuitamente da MICROCHIP e contiene tutte le funzionalità di cui abbiamo bisogno. Se preferisci utilizzare un altro assemblatore, utilizza la sua descrizione per assemblare il nostro programma. La riga di comando per eseguire l'assemblatore di macro MPALC è molto semplice: MPALC <testo_origine> [opzioni] dove <testo_origine> è il nome del file contenente il testo sorgente che deve essere assemblato e possono esserci molte opzioni. Una descrizione completa delle opzioni viene fornita dall'assembler utilizzando l'opzione /?. Inizialmente non avremo bisogno di specificare una singola opzione. L'unica cosa che dobbiamo ancora fare è indicare il tipo di processore per il quale è scritto il nostro programma e il tipo di errori che l'assembler dovrà produrre. Questo viene fatto utilizzando la direttiva assembler LIST (Fig. 6). L'estensione del file di origine predefinita è .ASM. Un'altra estensione deve essere specificata in modo esplicito. Quindi, prendiamo il file EXAMPLE.ASM, contenente il testo mostrato in Figura 6, ed eseguiamo l'assemblatore: MPALC EXAMPLE Come risultato dell'assemblatore, vengono creati file con le seguenti estensioni: * File oggetto OBJ * File di elenco LST * Errore ERL e file di avviso * File simbolo SYM Il file oggetto è creato in formato esadecimale e contiene il codice che deve essere scritto sul chip. Il file di elenco contiene un elenco completo del programma insieme al codice di avvio. Il file di errori e avvisi registra tutti gli errori e gli avvisi che si verificano durante il processo di assemblaggio. Sono presenti anche nel file di quotazione. La tabella delle etichette simboliche, scritta nel file simbolico, è destinata all'ulteriore lavoro con il debugger. Dopo aver elaborato il nostro programma, l'assemblatore dovrebbe produrre il messaggio "Nessun errore trovato dall'assemblatore", il che significa che non è stato trovato alcun errore. Il file di errore non dovrebbe essere stato creato. Se il tuo assembler ha generato messaggi di errore oppure i file EXAMPLE.OBJ, EXAMPLE.LST e EXAMPLE.SYM non sono stati creati, controlla nuovamente se hai fatto tutto correttamente. PROGRAMMAZIONE Ora hai un file oggetto EXAMPLE.OBJ, che deve essere scritto sul chip. La registrazione viene eseguita utilizzando un programmatore e il programma PROPIC. La riga di comando per avviare il programma PROPIC è simile alla riga per avviare l'assemblatore: PROPIC <file_oggetto> [opzioni] dove <file_oggetto> è il nome del file oggetto creato dall'assemblatore e le opzioni determinano la modalità di registrazione nel patata fritta. L'elenco delle opzioni viene visualizzato utilizzando il tasto /? Come nel caso dell'assemblatore, inizialmente non avremo bisogno di specificare una sola opzione. Prendi il programmatore, collega il suo cavo al connettore della porta stampante (alla prima porta stampante se la tua macchina ha 2 o 3 porte stampante installate).

Cos'è PIC? Cos'è PIC?

Prendere una fonte di alimentazione da 18...36 V DC o AC, in grado di fornire una corrente fino a 100 mA e collegarla al programmatore. Preparare il chip PIC16C84, ma non inserirlo ancora nello zoccolo del programmatore. Ora puoi avviare il programmatore:

ESEMPIO PROPIC { qui è necessario inserire come funziona il programma del programmatore. } Ora hai un microcircuito programmato e puoi vedere come funzionerà. TEST

Prendi una breadboard e assembla su di essa il circuito mostrato in Figura 5. Non ci sono parti critiche in questo circuito. Tutti i resistori possono avere una deviazione dal valore nominale di +-30%, LED - qualsiasi con una corrente nominale non superiore a 10 mA. Per installare il chip PIC16C84, utilizzare il socket. Per alimentare il nostro circuito, puoi utilizzare lo stesso alimentatore utilizzato durante la programmazione del microcircuito. È inoltre possibile utilizzare un alimentatore da laboratorio da 5 V. In questo caso, lo stabilizzatore KR142EH5A, il ponte a diodi e il condensatore elettrolitico non sono necessari e una tensione di 5 V viene fornita al punto 2 del circuito.

Dopo aver assemblato il circuito, controllare attentamente che tutto sia assemblato correttamente, che i LED siano installati nella polarità corretta e che l'alimentazione al microcircuito sia fornita ai piedini corretti e nella polarità corretta. Prendi il chip programmato, inseriscilo nella presa sulla breadboard e accendi la corrente. Dovrebbero accendersi 4 LED (uno dopo l'altro). Il tuo primo programma funziona! SET COMANDI PIC

Ora che hai imparato come assemblare un programma, scriverlo in un microcircuito e testarlo su una breadboard, possiamo passare alla descrizione dell'intero set di comandi per la famiglia di microcontrollori PIC. Continueremo a concentrarci sul PIC16C84, anche se quasi tutto ciò di cui parleremo si applica anche agli altri microcontrollori della famiglia PIC. Man mano che la descrizione andrà avanti comporremo dei brevi programmi per comprendere meglio il funzionamento di determinati comandi. Puoi inserire questi programmi nel codice base, assemblarli, scriverli in un microcircuito e, inserendo il microcircuito in una breadboard, vedere come funziona. Se al punto successivo ti è tutto assolutamente chiaro, non devi provarci, ma passa direttamente al punto successivo. NO

Iniziamo la nostra descrizione con il comando NOP. È difficile vedere l'output di questo comando perché non fa nulla. Questa istruzione viene generalmente utilizzata nei cicli di ritardo o per ottimizzare il tempo di esecuzione di una sezione specifica di un programma. CLRW

Questo comando cancella il registro di lavoro W. Aggiungiamo una riga al nostro esempio e vediamo che tutti i LED si accendono.

MOVLW B'01010101' ;carica 01010101 nel registro W

CLRW ;cancella registro W

MOVWF DATAPORT ;scrivi W sulla porta B (DATAPORT)

GOTO $ ;loop per sempre CLRF f

CLRF fa per qualsiasi registro ciò che CLRW fa per il registro di lavoro W. Il seguente comando imposterà la porta B su 0h.

CLRF DATAPORT ;cancella porta B (DATAPORT) SUBWF f,d ADDWF f,d

Sottrarre il registro di lavoro W da qualsiasi registro f. Questo comando imposta anche i flag CARRY, DIGIT CARRY e ZERO nel registro STATUS. Dopo aver eseguito il comando, puoi controllare questi attributi e determinare se il risultato è zero, positivo o negativo. Il simbolo d dopo la virgola indica l'indirizzo in cui verrà inserito il risultato del comando. Se d=0, il risultato viene inserito nel registro di lavoro W e se d=1, il risultato viene scritto nel registro f utilizzato nel comando.

Nel nostro esempio, il valore 0FFh viene caricato nel registro SCRATCH e il valore 01h nel registro W. Successivamente viene eseguito il comando SUBWF e il risultato viene visualizzato sui LED.

MOVLW 0FFh ;carica 0FFh nel registro W

MOVWF SCRATCH ;carica il contenuto di W nel registro SCRATCH

MOVLW 01h ;carica 01h nel registro W

SUBWF SCRATCH,0 ;esegue la sottrazione I LED dovrebbero visualizzare 11111110, dove 1 corrisponde a un LED spento e 0 a un LED acceso.

Il comando ADDWF funziona esattamente allo stesso modo, aggiungendo il registro di lavoro W a qualsiasi registro fe impostando le stesse caratteristiche. L'esempio seguente dimostra il funzionamento del comando ADDWF.

MOVLW 0h ;carica 0 nel registro W

MOVWF SCRATCH ;carica il contenuto di W nel registro SCRATCH

MOVLW 1h ;carica 01h nel registro W

ADDWF SCRATCH,0 ;esegui l'addizione I LED dovrebbero visualizzare 00000001.

Si noti che il valore FFh nell'esempio di sottrazione è preceduto da uno "0". Il simbolo "0" in assembler significa che è un numero, non un'etichetta. Se non ci fosse il simbolo 0, l'assemblatore inizierebbe a cercare un'etichetta con il nome FFh, che non esiste in questo programma e, di conseguenza, si verificherebbe un errore. Il carattere "h" che segue il valore 0FF significa che il valore è specificato in formato esadecimale. SUBLW k ADDLW k

Questi due comandi funzionano esattamente come quelli descritti sopra, tranne che l'operazione viene eseguita tra il registro di lavoro W e la costante byte specificata nel comando. Il comando SUBLW sottrae il registro di lavoro W dalla costante k e il comando ADDLW aggiunge il registro di lavoro W alla costante k. Questi comandi impostano anche i flag CARRY, DIGIT CARRY e ZERO. Il risultato del comando viene inserito nel registro di lavoro W. L'esempio seguente diminuirà SCRATCH di 5.

MOVLW 0FFh ;carica 0FFh nel registro W

MOVWF SCRATCH ;carica il contenuto di W nel registro SCRATCH

SUBLW 05h ;sottrai 5 dal registro di lavoro

MOVWF SCRATCH ;carica nuovo contenuto SCRATCH I LED dovrebbero visualizzare 11111010. DECF f,d INCF f,d

L'istruzione DECF diminuisce il registro specificato di 1 e INCF incrementa il registro specificato di 1. Il risultato può essere reinserito nel registro specificato (per d=1) o nel registro di lavoro W (per d=0). Come risultato dell'esecuzione di questi comandi, l'attributo ZERO può essere impostato nel registro STATUS. Ecco un esempio di utilizzo di questi comandi:

MOVLW 0FFh ;carica 0FFh nel registro W

MOVWF SCRATCH ;carica il contenuto di W nel registro SCRATCH

DECF SCRATCH,0 ;diminuisce SCRATCH di 1

Questo esempio aumenterà SCRATCH da 0 a 1.

CLRF SCRATCH ;cancella SCRATCH

INCF SCRATCH,0 ;aumenta SCRATCH di 1 IORWF f,d ANDWF f,d XORWF f,d

Queste tre istruzioni eseguono le operazioni logiche OR, AND e OR ESCLUSIVO. L'operazione di addizione logica OR viene spesso utilizzata per impostare singoli bit nei registri. Questi bit vengono quindi cancellati mediante un'operazione di moltiplicazione logica AND. Quando un'operazione OR ESCLUSIVO viene eseguita su bit identici, il risultato è 0. Pertanto, l'operazione OR ESCLUSIVO viene spesso utilizzata per verificare lo stato (impostato o cancellato) di determinati bit in un registro. La seguente procedura imposterà il bit 1 sulla porta B utilizzando il comando IORWF:

CLRF DATAPORT; cancella porta B

MOVLW B'00000010' ;imposta la maschera nel registro W

IORWF DATAPORT,1 ;imposta i bit nella porta B utilizzando la maschera W

GOTO $ ;loop per sempre I LED dovrebbero mostrare 00000010. Ora resettiamo 2 bit usando il comando ANDWF:

MOVLW B'11111111' ;carica 0FFh nel registro W

MOVWF DATAPORT ;imposta tutti i bit nella porta B

MOVLW B'00000101' ;imposta la maschera nel registro W

ANDWF DATAPORT,1 ;cancella i bit nella porta B utilizzando la maschera W

GOTO $ ;loop per sempre I LED dovrebbero mostrare 00000101.

Diciamo che abbiamo utilizzato il registro SCRATCH e vogliamo sapere se è uguale al valore 04h. Questo è un caso conveniente per utilizzare il comando XORWF:

MOVLW 04h ;carica 04h nel registro W

MOVWF SCRATCH ;carica il registro W in SCRATCH

XORWF SCRATCH,0 ;controlla l'uguaglianza di W e SCRATCH Poiché SCRATCH e W sono uguali, il risultato dell'operazione XORWF è zero (tutti i LED sono accesi). Il registro STATUS imposterà il bit ZERO, che il programma reale potrà quindi verificare ed elaborare. IORLW k ANDLW k XORLW k

Questi tre comandi eseguono le stesse azioni dei loro omologhi sopra descritti, tranne che l'operazione viene eseguita tra il registro di lavoro W e la maschera specificata nel comando. Il risultato del comando viene inserito nel registro di lavoro W. Ad esempio:

MOVLW 0FFh ;carica 0FFh nel registro W

ANDLW 040h ;lascia il 6° bit I LED mostreranno 01000000.

MOVLW 10h ;carica 10h nel registro W

IORLW 09h ;imposta i bit 0 e 3 I LED mostreranno 00011001.

MOVLW B'00100000' ;carica 40h nel registro W

XORLW B'11111111' ;inverti W I LED mostreranno 11011111. MOVF f,d

Questo comando viene utilizzato principalmente per trasferire un registro nel registro di lavoro W (d=0). Se si imposta d=1, questo comando caricherà il registro in se stesso, ma il bit ZERO nel registro STATUS verrà impostato in conformità con il contenuto del registro. Ad esempio, vogliamo caricare il registro SCRATCH 0Fh, quindi caricare il registro SCRATCH nel registro di lavoro W.

MOVLW 0Fh ;carica 0Fh nel registro di lavoro W

MOVWF SCRATCH ;carica il registro W in SCRATCH

CLRW ;cancella W

MOVF SCRATCH,0 ;carica SCRATCH nel registro W Se durante l'esecuzione del programma vogliamo verificare che il registro SCRATCH sia zero, possiamo eseguire il seguente comando:

MOVF SCRATCH,1 Il bit ZERO del registro STATUS verrà impostato se la condizione è vera (SCRATCH = 0h). COMF f,d

Questo comando inverte qualsiasi registro dato. Quando d=0, il risultato viene inserito nel registro di lavoro W, e quando d=1, il contenuto del registro specificato viene invertito. Ad esempio, invertiamo il valore 01010101:

MOVLW B'01010101' ;carica 01010101 nel registro W

MOVWF SCRATCH ;carica il registro W in SCRATCH

COMF SCRATCH,0 ;inverti SCRATCH I LED mostreranno 10101010. DECFSZ f,d INCFSZ f,d

Una volta acquisita esperienza con l'assemblatore PIC, utilizzerai questi comandi molto spesso. Quando d=1, il comando DECFSZ diminuisce di uno e INCFZ aumenta di uno il registro specificato e salta il comando successivo se il registro diventa zero. Quando d=0, il risultato viene scritto nel registro W e il comando successivo viene saltato se il registro di lavoro W diventa zero. Questi comandi vengono utilizzati per generare ritardi temporali, contatori, loop, ecc. Ecco un tipico esempio di utilizzo di un ciclo: START

MOVLW 0FFh ;carica FFh nel registro W

MOVWF SCRATCH ;carica il registro W in SCRATCH LOOP

DECFSZ SCRATCH,1 ;diminuisce SCRATCH di 1

GOTO LOOP ;e torna indietro fino a = 0

MOVF DIGIT ;carica il registro DIGIT su W

MOVWF DATAPORT; uscita sui LED

DECF DIGIT,1 ;diminuisce il registro DIGIT di 1

GOTO START ;vai all'inizio Di conseguenza, i LED lampeggeranno con frequenze diverse. Il LED di basso ordine lampeggerà più spesso, mentre il LED di alto livello lampeggerà meno. A una frequenza di clock di 4 MHz, la frequenza di lampeggiamento del LED di ordine superiore sarà di circa 8 Hz e ciascuno successivo lampeggerà due volte più spesso. Ora scopriamo come l'abbiamo fatto. Il comando DECFSZ qui funziona in un ciclo di ritardo composto da due comandi: DECFSZ e GOTO LOOP. Poiché in precedenza abbiamo caricato il registro SCRATCH con il valore 0FFh, questo ciclo verrà eseguito 255 volte finché SCRATCH non diventa zero. Ad una frequenza di clock di 4 MHz ciò dà un ritardo di 1 µsec/comando * 2 comandi * 255 = 510 µsec. Non abbiamo scritto nulla in anticipo nel registro DIGIT, quindi potrebbe esserci qualsiasi valore, che viene inviato ai LED al primo passaggio. Quindi il registro DIGIT viene decrementato di 1 e il ciclo viene ripetuto dall'inizio. Di conseguenza, il registro DIGIT scorre tutti i valori in 256 cicli, vale a dire in circa 130 ms.

Lo stesso codice può essere utilizzato con il comando INCFSZ, sostituendo il valore caricato nel registro SCRATCH da FFh a 0h. I LED lampeggeranno allo stesso modo se si sostituisce il comando DECF con il comando INCF. SWAPF f,d

Questo comando scambia i bocconcini in qualsiasi registro. Come con gli altri comandi, quando d=0 il risultato viene scritto nel registro di lavoro W, e quando d=1 rimane nel registro. Ecco un semplice esempio di utilizzo di questo comando:

MOVLW B'00001111' ;carica 0Fh nel registro W

MOVWF SCRATCH ;carica il registro W in SCRATCH

SWAPF SCRATCH,0 ;i LED di modifica dei nibble mostreranno 11110000. RRF f,d RLF f,d

Ci sono due istruzioni di spostamento nell'assemblatore PIC: spostamento a destra tramite il bit CARRY di qualsiasi registro RRF e spostamento a sinistra tramite il bit CARRY di qualsiasi registro RRF. Come con gli altri comandi, quando d=0 il risultato dello spostamento viene scritto nel registro W e quando d=1 rimane nel registro. Le istruzioni di spostamento vengono utilizzate per eseguire operazioni di moltiplicazione e divisione, per il trasferimento seriale di dati e per altri scopi. In tutti i casi, il bit spostato dal registro a 8 bit viene scritto nel bit CARRY nel registro STATUS e il bit CARRY viene scritto all'altra estremità del registro, a seconda della direzione dello spostamento. Quando si sposta a sinistra, RLF CARRY viene scritto sul bit meno significativo del registro e quando si sposta a destra, RRF CARRY viene scritto sul bit più significativo del registro.

CLRF STATUS ;cancella il registro STATUS

MOVLW 0FFh ;carica 0FFh nel registro W

MOVWF SCRATCH ;carica il registro W in SCRATCH

RRF SCRATCH,0 ;shift a destra I LED dovrebbero mostrare 01111111 perché CARRY è caricato nel bit più significativo. Ora spostiamolo a sinistra:

CLRF STATUS ;cancella il registro STATUS

MOVLW 0FFH ;carica 0FFh nel registro W

MOVWF SCRATCH ;carica il registro W in SCRATCH

RLF SCRATCH,1 ;muovi a sinistra i LED dovrebbero mostrare 11111110. BCF f,b BSF f,b

I comandi cancella bit BCF e imposta bit BSF vengono utilizzati per lavorare con i singoli bit nei registri. Per parametro b si intende il numero del bit con cui viene eseguita l'operazione, e può assumere valori da 0 a 7. Proviamo ad accendere il led tramite il comando BCF:

MOVLW 0FFh ;carica 0FFh nel registro W

MOVWF DATAPORT ;spegne i LED

BCF DATAPORT,7 ;cancella il bit 7 nella porta B

GOTO $ ;loop per sempre Questo accenderà il LED corrispondente al bit 7. Ricordiamo che abbiamo fatto cose simili usando una maschera e il comando ANDWF. La differenza è che i comandi ANDWF e IORWF richiedono la formazione preliminare di una maschera e la sua memorizzazione in qualche registro, ma allo stesso tempo sono in grado di impostare o cancellare simultaneamente più bit. Le istruzioni BCF e BSF funzionano con un solo bit. Inoltre, le istruzioni BCF e BSF non modificano il registro di stato STATUS, quindi vengono spesso utilizzate nei casi in cui non è richiesto il controllo successivo del registro di stato. BTFSC f,b BTFSS f,b

Le istruzioni di salto condizionato BTFSC e BTFSS controllano lo stato di un dato bit in qualsiasi registro e, a seconda del risultato, saltano o meno l'istruzione successiva. Il comando BTFSC salta il comando se il bit specificato è azzerato e il comando BTFSS salta il comando se è impostato. Ecco un semplice esempio:

MOVLW 0FFh ;carica 0FFh nel registro W

MOVWF DATAPORT ;spegne i LED

MOVLW B'00000001' ;carica 01h nel registro W

MOVWF SCRATCH ;carica il registro W in SCRATCH LOOP

BTFSS CNTRLPORT,0 ;controlla il bit 0 in CNTRLPORT

GOTO LOOP ;attende finché non viene impostato il bit 0

BCF DATAPORT,7 ;accende il LED

GOTO $ ;loopforever Questo esempio controlla il bit 0 della porta A (pin 17 del chip) e, se questo pin è impostato su alto, accende il LED. Prova a sostituire BTFSS con BTFSC in questo esempio. Il LED si accenderà quando il bit 0 della porta A diventa basso.

In precedenza abbiamo menzionato la possibilità di controllare i bit di stato nel registro STATUS. Questo viene fatto anche utilizzando i comandi BTFSS e BTFSC:

;Verifica del bit CARRY

BTFSS STATUS,C ;se C è impostato, salta GOTO

VAI DOVE_MAI; Il bit ZERO viene controllato allo stesso modo:

;Verifica del bit ZERO

BTFSS STATUS,Z ;se Z è impostato, salta GOTO

VAI DOVE_MAI; Si può dire con certezza che utilizzerai questi esempi molto spesso. CHIAMA k RITORNO

Questi due comandi sono progettati per funzionare con le subroutine. Il comando CALL viene utilizzato per andare a un sottoprogramma all'indirizzo specificato nel comando e il comando RETURN viene utilizzato per tornare da un sottoprogramma. Entrambi i comandi vengono eseguiti in 2 cicli. L'indirizzo in cui si trovava il comando CALL è memorizzato in registri appositamente organizzati chiamati stack. Questi registri non sono accessibili per l'accesso e vengono utilizzati solo per le chiamate e i ritorni di subroutine. Profondità dello stack, ad es. il numero di registri speciali è 8. Pertanto, dal programma principale non possono essere effettuate più di 8 chiamate di subroutine annidate. Dopo il ritorno dalla subroutine, l'esecuzione continua con il comando successivo dopo CALL. Il registro W e il registro STATUS non vengono salvati quando si richiama una subroutine, quindi, se necessario, possono essere salvati in locazioni di memoria separate. Ecco un semplice esempio di utilizzo di una subroutine: START

BSF DATAPORT,7 ;spegne il LED

CALL TURNON ;chiama subroutine

GOTO START ;vai all'inizio ACCENDI

BCF DATAPORT,7 ;accende il LED

RETURN ;ritorno dalla subroutine Di conseguenza, il LED lampeggerà con una frequenza di circa 150 kHz. RETLW k RETFIE

Ci sono altri due comandi progettati per tornare dalle subroutine. Il comando RETLW restituisce la costante specificata in questo comando nel registro di lavoro W e il comando RETFIE abilita gli interrupt. Il comando RETLW viene spesso utilizzato per creare tabelle di valori. Lascia che il registro di lavoro W contenga l'offset dall'inizio della tabella. Quindi puoi ottenere l'elemento desiderato utilizzando la seguente procedura:

MOVLW 02h ;imposta l'offset

CALL SHOWSYM ;chiama la subroutine

MOVWF DATAPORT; invia l'elemento della tabella alla porta B

GOTO $ ;loop per sempre SHOWSYM

ADDWF PC ;calcola l'offset della tabella

RETLW 0AAh ;1° elemento della tabella

RETLW 0BBh ;2° elemento della tabella

RETLW 0CCh ;3° elemento della tabella I LED dovrebbero visualizzare 10111011. COMANDI SPECIALI

Dobbiamo solo menzionare due comandi speciali: CLRWDT e SLEEP. Il comando CLRWDT ha lo scopo di reimpostare il timer del watchdog, il cui scopo abbiamo già discusso. Questo comando deve essere presente in sezioni del programma tali che il tempo di esecuzione del programma tra due comandi CLRWDT adiacenti non superi il timer del watchdog. Il comando SLEEP ha lo scopo di mettere il processore in modalità a basso consumo energetico. Dopo aver eseguito questo comando, il generatore di clock del processore viene spento e il processore può essere riportato alla modalità operativa tramite l'ingresso di ripristino, oppure tramite il funzionamento di un timer watchdog o tramite un'interruzione. CONCLUSIONE

Questo articolo non pretende di essere una descrizione completa delle capacità del microcontrollore PIC16C84. Per fare ciò, dovresti leggere la sua descrizione tecnica. Anche per comprendere tutte le funzionalità dell'assemblatore MPALC, i macro comandi, le opzioni, ecc. Ti sarà utile leggere il suo manuale. Per impostare correttamente tutte le opzioni necessarie, è necessario leggere le istruzioni per l'uso del programmatore. Esempi di utilizzo dei microcontrollori ti forniranno una solida base per progetti indipendenti. In caso di domande, è possibile contattare il centro di supporto regionale per i prodotti MICROCHIP all'indirizzo: Mosca, terrapieno Rubtsovskaya. 3 ufficio 502, tel. (095)-263-9930 Saranno sempre pronti a rispondere a tutte le tue domande. È inoltre possibile ottenere nuove versioni del software, esempi di applicazioni e informazioni di aiuto sulla BBS regionale chiamando il numero (095)-162-8405

AD micro BBS

Pubblicazione: N. Bolshakov, rf.atnn.ru

Vedi altri articoli sezione microcontrollori.

Leggere e scrivere utile commenti su questo articolo.

<< Indietro

Ultime notizie di scienza e tecnologia, nuova elettronica:

Macchina per diradare i fiori nei giardini 02.05.2024

Nell'agricoltura moderna si sta sviluppando il progresso tecnologico volto ad aumentare l'efficienza dei processi di cura delle piante. Presentata in Italia l'innovativa macchina per il diradamento dei fiori Florix, progettata per ottimizzare la fase di raccolta. Questo attrezzo è dotato di bracci mobili, che permettono di adattarlo facilmente alle esigenze del giardino. L'operatore può regolare la velocità dei fili sottili controllandoli dalla cabina del trattore tramite joystick. Questo approccio aumenta significativamente l'efficienza del processo di diradamento dei fiori, offrendo la possibilità di adattamento individuale alle condizioni specifiche del giardino, nonché alla varietà e al tipo di frutto in esso coltivato. Dopo due anni di test della macchina Florix su diverse tipologie di frutta, i risultati sono stati molto incoraggianti. Agricoltori come Filiberto Montanari, che utilizza una macchina Florix da diversi anni, hanno riscontrato una significativa riduzione del tempo e della manodopera necessari per diluire i fiori. ... >>

Microscopio infrarosso avanzato 02.05.2024

I microscopi svolgono un ruolo importante nella ricerca scientifica, consentendo agli scienziati di approfondire strutture e processi invisibili all'occhio. Tuttavia, vari metodi di microscopia hanno i loro limiti e tra questi c'è la limitazione della risoluzione quando si utilizza la gamma degli infrarossi. Ma gli ultimi risultati dei ricercatori giapponesi dell'Università di Tokyo aprono nuove prospettive per lo studio del micromondo. Gli scienziati dell'Università di Tokyo hanno presentato un nuovo microscopio che rivoluzionerà le capacità della microscopia a infrarossi. Questo strumento avanzato consente di vedere le strutture interne dei batteri viventi con sorprendente chiarezza su scala nanometrica. In genere, i microscopi nel medio infrarosso sono limitati dalla bassa risoluzione, ma l’ultimo sviluppo dei ricercatori giapponesi supera queste limitazioni. Secondo gli scienziati, il microscopio sviluppato consente di creare immagini con una risoluzione fino a 120 nanometri, ovvero 30 volte superiore alla risoluzione dei microscopi tradizionali. ... >>

Trappola d'aria per insetti 01.05.2024

L’agricoltura è uno dei settori chiave dell’economia e il controllo dei parassiti è parte integrante di questo processo. Un team di scienziati dell’Indian Council of Agricultural Research-Central Potato Research Institute (ICAR-CPRI), Shimla, ha trovato una soluzione innovativa a questo problema: una trappola per insetti alimentata dal vento. Questo dispositivo risolve le carenze dei metodi tradizionali di controllo dei parassiti fornendo dati sulla popolazione di insetti in tempo reale. La trappola è alimentata interamente dall'energia eolica, il che la rende una soluzione ecologica che non richiede energia. Il suo design unico consente il monitoraggio sia degli insetti dannosi che utili, fornendo una panoramica completa della popolazione in qualsiasi area agricola. “Valutando i parassiti target al momento giusto, possiamo adottare le misure necessarie per controllare sia i parassiti che le malattie”, afferma Kapil ... >>

Notizie casuali dall'Archivio

Telecomando di nuova serie 14.03.2005

Pogo Products ha introdotto un telecomando senza batteria. EZPower Universal ha una maniglia integrata che deve essere ruotata solo leggermente per generare l'energia necessaria al dispositivo per sette giorni.

Pertanto, il telecomando non è solo "amichevole" per l'ambiente e per le tue mani, ma è anche in grado di azionare dispositivi come TV, videoregistratore, cavo, SAT, AUX e lettore DVD. Il telecomando apparirà per la prima volta negli Stati Uniti per circa $ 25.

Altre notizie interessanti:

▪ Le Alpi crescono

▪ Bioaccumulatori respiratori

▪ Il sequestro agricolo per superare la crisi climatica

▪ Robot carri armati invece di vigili del fuoco

▪ Nanocompresse con micromotore

News feed di scienza e tecnologia, nuova elettronica

 

Materiali interessanti della Biblioteca Tecnica Libera:

▪ sezione del sito Fatti interessanti. Selezione di articoli

▪ articolo Servo del popolo. Espressione popolare

▪ articolo Cos'è la Magna Carta? Risposta dettagliata

▪ articolo di cappero. Leggende, coltivazione, metodi di applicazione

▪ articolo Blocco di accensione per VAZ-2108 e VAZ-2109. Enciclopedia dell'elettronica radio e dell'ingegneria elettrica

▪ articolo Transistor di campo domestici e loro controparti estere. Enciclopedia dell'elettronica radio e dell'ingegneria elettrica

Lascia il tuo commento su questo articolo:

Nome:


E-mail (opzionale):


commento:





Tutte le lingue di questa pagina

Homepage | Biblioteca | Articoli | Mappa del sito | Recensioni del sito

www.diagram.com.ua

www.diagram.com.ua
2000-2024