37
PIC 16F84A Ing. Pasquale Zambrotta

PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

Embed Size (px)

Citation preview

Page 1: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

PIC 16F84A

Ing. Pasquale Zambrotta

Page 2: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

Panoramica• LEARNING ON THE JOB

• Creazione del programmatore hardware

• Creazione di una scheda per la prova dei programmi

• Impostazione di un problema da risolvere e programmazione PIC in linguaggio ASSEMBLY

• Traduzione del linguaggio ASSEMBLY in linguaggio PIC BASIC

• Programmazione PIC e verifica funzionamento

Page 3: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

Obiettivo a lungo temine

• Comprendere la logica del linguaggio di programmazione

• Imparare l'Assembly ed il Pic Basic nei loro comandi principali ed essenziali

Page 4: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

INIZIAMO..

• Problema : accendere in maniera intermittente un LED senza utilizzare circuiti risonanti o circuiti integrati, ma semplicemente utilizzando il PIC16F84A.

• Guardiamo come deve essere realizzato il programma in Assembly

Page 5: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

; LED.ASMPROCESSOR 16F84

RADIX DECINCLUDE "P16F84.INC"

ERRORLEVEL -302;Setup of PIC configuration flags;XT oscillator;Disable watch dog timer;Enable power up timer;Disable code protect

__CONFIG 3FF1HLED EQU 0ORG 0CH

Count RES 2

Page 6: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

;Reset Vector;Start point at CPU reset

ORG 00Hbsf STATUS,RP0movlw 00011111B

movwf TRISAmovlw 11111110B

movwf TRISBbcf STATUS,RP0bsf PORTB,LED

MainLoopcall Delay

btfsc PORTB,LEDgoto SetToZerobsf PORTB,LED

goto MainLoop

Page 7: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

; SetToZerobcf PORTB,LED

goto MainLoop;Subroutines

;Software delayDelay

clrf Countclrf Count+1

DelayLoopdecfsz Count,1goto DelayLoop

decfsz Count+1,1goto DelayLoop

returnEND

Page 8: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

VEDIAMO LE RIGHE DI COMANDO

PROCESSOR 16F84PROCESSOR è una direttiva del compilatore assembler che consente didefinire per quale microprocessore è stato scritto il nostro source. Ledirettive non sono delleistruzioni mnemoniche che il compilatore traduce nel rispettivo opcode,ma delle semplici indicazioni rivolteal compilatore per determinarne il funzionamento durante lacompilazione. In questo caso informiamo il compilatore che le istruzioniche abbiamo inserito nel nostro source sono relative ad un PIC16F84.

RADIX DECLa direttiva RADIX serve ad informare il compilatore che i numeririportati senza notazione, sono da intendersi come numeri decimali.Ovvero se intendiamo specificare, ad esempio il numero esadecimale 10(16 decimale) non possiamo scrivere solamente 10 perché verrebbeinterpretato come 10 decimale, ma 10h oppure 0x10 oppure H'10'.

Page 9: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

INCLUDE "P16F84.INC"

Un'altra direttiva. Questa volta indichiamo al compilatore la nostraintenzione di includere nel source un secondo file denominatoP16F84.INC. Il compilatore si limiterà a sostituire la linea contenente ladirettiva INCLUDE con il contenuto del file indicato e ad effettuarequindi la compilazione come se fosse anch'esso parte del nostro source.

Page 10: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

LED EQU 0La direttiva EQU è molto importante in quanto ci consente di definiredelle costanti simboliche all'interno del nostro source. In particolare laparola LED da questo punto in poi del source sarà equivalente al valore0. Lo scopo principale dell'esistenza della direttiva EQU è quindi renderei source più leggibili e consentire di cambiare i valori costanti in ununico punto del source. E' importante notare che la parola LED nonidentifica una variabile ma semplicemente un nome simbolico validodurante la compilazione. Non sarà quindi possibile inserire instruzionitipo LED = 3 all'interno del source in quanto l'assegnazione dinamica diun valore ad una variabile è un'operazione che richiede l'interventodella CPU del PIC e che quindi deve essere espressa con istruzioni e noncon direttive. Le direttive hanno senso solo durante la compilazione delsource quindi un PIC non potrà mai eseguire una direttiva.

Page 11: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

ORG 0CH

Anche ORG è una direttiva e ci consente di definire l'indirizzo da cuivogliamo che il compilatore inizi ad allocare i dati o le istruzioniseguenti. In questo caso stiamo per definire un'area dati all'interno delPIC ovvero un'area in cui memorizzare variabili e contatori durantel'esecuzione del nostro programma. Quest'area coincide con l'area RAMdel PIC definita dalla Microchip come area dei FILE REGISTER.I file register altro non sono che locazioni RAM disponibili per l'utente apartire dall'indirizzo 0CH. Questo indirizzo di inizio è fisso e non puòessere cambiato in quanto le locazioni precedenti sono occupate da altriregistri specializzati per uso interno.

Page 12: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

Count RES 2In questa linea incontriamo una label : Count e una direttiva: RES.La direttiva RES indica al compilatore che intendiamo riservare un certonumero di byte o meglio di file register all'interno dell'area dati; inquesto caso 2 byte. La label Count, dove Count è un nome scelto da noi,è un marcatore che nel resto del source assumerà il valore dell'indirizzoin cui è stato inserito. Dato che precedentemente avevamo definitol'indirizzo di partenza a 0CH con la direttiva ORG, Count varrà 0CH. Sead esempio inseriamo una label anche alla linea successiva essa varrà0CH + 2 (due sono i byte che abbiamo riservato) ovvero 0EH. I nomidelle label possono essere qualsiasi ad eccezione delle parole riservate alcompilatore quali sono le istruzioni mnemoniche e le direttive).Una label si distingue da una costante simbolica perchè il suo valoreviene calcolato in fase di compilazione e non assegnato da noistaticamente.

Page 13: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

ORG 00HQuesta seconda direttiva ORG fà riferimento ad un indirizzo in area programma (nella EEPROM) anzichè in area dati.Da questo punto in poi andremo infatti ad inserire leistruzioni mnemoniche che il compilatore dovrà convertire negli opportuni opcode per il PIC.Il primo opcode eseguito dal PIC dopo il reset è quellomemorizzato nella locazione 0, da qui il valore 00H inserito nella ORG.

Page 14: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

bsf STATUS,RP0Ecco finalmente la prima istruzione mnemonica completa di parametri.I PIC hanno una CPU interna di tipo RISC per cui ogni istruzioneoccupa una sola locazione di memoria, opcode e parametri inclusi. Inquesto caso l'istruzione mnemonica bsf sta per BIT SET FILEREGISTER ovvero metti a uno (condizione logica alta) uno dei bitcontenuti nella locazione di ram specificata.Il parametro STATUS viene definito nel file P16F84.INC tramite unadirettiva EQU. Il valore assegnato in questo file è 03H e corrisponde adun file register (ovvero una locazione ram nell'area dati) riservato.Anche il parametro RP0 viene definito nel file P16F84.INC con valore05H e corrisponde al numero del bit che si vuole mettere a uno. Ognifile register è lungo 8 bit e la numerazione di ciascuno parte da 0 (bitmeno significativo) fino adarrivare a 7 (bit più significativo)Questa istruzione in pratica mette a 1 il quinto bit del file registerSTATUS. Questa operazione è necessaria, come vedremo nelle lezionisuccessive, per accedere ai file register TRISA e TRISB come vedremoora.

Page 15: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

movlw 00011111B

Questa istruzione sta a significare: MOVE LITERAL TO W REGISTER ovveromuovi un valore costante nell'accumulatore. Come avremo modo di vedere piùavanti, l'accumulatore è un particolare registro utilizzatodalla CPU in tutte quelle situazioni in cui vengono effettuateoperazioni tra due valori oppure in operazioni di spostamento tralocazioni di memoria. In pratica è un registro di appoggio utilizzatodalla CPU per memorizzare temporaneamente unbyte ogni volta che se ne presenta la necessità.Il valore costante da memorizzare nell'accumulatore è 00011111Bovvero un valore binario a 8 bit dove il bit più a destra rappresentail bit 0 o bit meno significativo

Page 16: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

movwf TRISAil valore 00011111 viene memorizzato nel registro TRISA(come per il registro STATUS anche TRISA è definitotramite una direttiva EQU) la cui funzione è quella di definireil funzionamento di ogni linea di I/O della porta A. In particolare ogni bit ad uno del registro TRISA determina un ingresso sullarispettiva linea della porta A mentre ogni 0 determina un'uscita.

Page 17: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

Nella seguente tabella viene riportata la configurazione cheassumeranno i pin del PIC dopo l'esecuzione di questaistruzione:

N.bit registro TRISA Linea porta A N.Pin Valore Stato Stato0 RA0 17 1 Input1 RA1 18 1 Input2 RA2 1 1 Input3 RA3 2 1 Input4 RA4 3 1 Input5 0

6 0

7 0

-Come è possibile vedere i bit 5, 6 e 7 non corrispondono anessuna linea di I/O e quindi il loro valore non ha alcunainfluenza.

Page 18: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

Le due istruzioni successive svolgono le stesse funzioni per la porta B delPIC:movlw B'11111110'movwf TRISB

N.bit registro TRISB Linea porta B N.Pin Valore Stato Stato0 RB0 6 0 OUTput1 RB1 7 1 Input2 RB2 8 1 Input3 RB3 9 1 Input4 RB4 10 1 Input5 RB5 11 1 Input6 RB6 12 1 Input7 RB7 13 1 Input

- Notate come il valore 0 nel bit 0 del registro TRISB determinila configurazione in uscita della rispettiva linea del PIC.Nella nostra applicazione infatti questa linea viene utilizzata per ilotareil LED da far lampeggiare.

Abbiamo visto che l'istruzione movwf TRISB trasferisce il valorecontenuto nell'accumulatore (inizializzato opportunamente conìl'istruzione movlw 11111110B) nel registro TRISB. Il significatodi movwf è infatti MOVE W TO FILE REGISTER..

Page 19: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

bcf STATUS,RP0Questa istruzione è simile alla bsf vista in precedenza, con lasola differenza che azzera il bit anzichè metterlo a uno. Lasigla un questo caso è BIT CLEAR FILE REGISTER.Dal punto di vista funzionale questa istruzione è stata inserita perconsentire l'accesso ai registri interni del banco 0 anzichèai registri interni del banco 1 di cui fanno parte TRISA e TRISB.

bsf PORTB,LEDsi effettua la prima operazione che ha qualche riscontro all'esternodel PIC. In particolare viene acceso il led collegato alla linea RB0.PORTB è una costante definita in P16F84.INC e consente direferenziare il file register corrispondente alle linee di I/O dellaporta B mentre LED è il numero della linea da mettere a 1.All'inizio del source la costante LED è stata definita pari a 0, quindi la linea interessata sarà RB0.

Page 20: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

MainLoop

Questa linea contiene una label ovvero un riferimento ad un indirizzodi memoria. Il valore della label, viene calcolato in fase di compilazionein base al numero di istruzioni, alle direttive ORG e alle altre istruzioneche allocano spazio nella memoria del PIC. In questo caso, se contiamo le istruzioniinserite a partire dall'ultima direttiva ORG possiamo calcolare il valore che verràassegnato a MainLoop ovvero 07H.In realtà il valore che assumono le label non ha molta importanza inquanto il loro scopo è proprio quello di evitare di dover conoscere laposizione precisa degli opcode nella memoria del PICLa label MainLoop viene utilizzata come punto di ingresso di un ciclo (dall'ingleseLoop) di accensione e spegnimento del led, ovvero unaparte di codice che verrà ripetuta ciclicamente all'infinito. Più avanti vi èun riferimento a questa label.

Page 21: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

call Delay.

Questa istruzione determina unachiamata (dall'inglese call) ad una subroutine che inizia in corrispondenzadella label Delay.Le subroutine sono delle parti di programma specializzare ad effettuare unafunzione specifica. Quando occorre quella funzione è sufficiente richiamarlacon una sola istruzione, anzichè ripetere ogni volta tutte le istruzioninecessarie ad effettuarla. In questo caso la subroutine inserisce un ritardopari al tempo di accensione e spegnimento del LedEssendo un programma a parte verrà analizzato più avantile

Page 22: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

btfsc PORTB,LEDIl significato di questa istruzione è BIT TEST FLAG, SKIP IF CLEARovvero controlla lo stato di un bit all'interno di un registro e salta l'istruzionesuccessiva se il valore di tale bit è zero. Il bit da controllare corrispondealla linea di uscita cui è collegato il diodo led, tramite questo test potremodeterminare quindi se il led è acceso o spento e quindi agire diconseguenza, ovvero se il led è gia acceso lo spegneremo, se il led èspento lo accenderemo.

goto SetToZeroQuesta istruzione è un salto incondizionato (dall'inglese GO TO, vai a)allalabel SetToZero dove troveremo le istruzioni per spegnere il led. Questaistruzione verrà saltata dall'istruzione successiva se il led è gia spento.

bsf PORTB,LEDgoto MainLoopQueste due istruzioni semplicemente accendono il led e rimandano ilprogramma all'ingresso del ciclo di lampeggiamento.e le istruzioninecessarie ad effettuarla.le

Page 23: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

SetToZerobcf PORTB,LEDgoto MainLoop

Queste istruzioni spengono il led e rimandano il programma all'ingressodel ciclo di lampeggiamento.

Page 24: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

Subroutine DelayQuesta subroutine inserisce un ritardo di circa un secondo e può esserechiamata più volte nel source tramite l'istruzione call Delay.Come funziona:Delay

clrf Countclrf Count+1DelayLoop

decfsz Count,1goto DelayLoop

decfsz Count+1,1goto DelayLoop

retlw 0END

Page 25: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

Delay e DelayLoop sono due label.

Delay identifica l'indirizzo di inizio della subroutine e viene utilizzato per le chiamate dal corpo principale del programma.

DelayLoop viene chiamato internamente dalla subrountine e serve come punto di ingresso per il ciclo (dall'inglese loop) di ritardo.In pratica il ritardo viene ottenuto eseguendo migliaia di istruzioni che non fanno nulla !Questo è un ritardo software o ritardo a programma. E' il più semplice daimplementare e può essere utilizzato quando non è richiesto che il PICesegua altri compiti mentre esegue il ritardo.

Page 26: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

Le istruzioni:clrf Countclrf Count+1

CLEAR FILE REGISTER azzerano le due locazioni di ram riservateprecedentemente con l'istruzione:

Count RES 2Queste due locazioni sono adiacenti a partire dall'indirizzo referenziato dallalabel Count.decfsz Count,1

L'istruzione significa DECREMENT FILE REGISTER, SKIP IF ZERO ovvero decrementa il contenuto di un registro (in questo caso Count e saltal'istruzione successiva se il valore raggiunto è zero). Se il valore raggiuntonon è zero viene eseguita l'istruzione successiva:goto DelayLoopChe rimanda rimanda l'esecuzione all'inizio del ciclo di ritardo. Una voltaraggiunto lo zero con il contatore Count Se il valore raggiunto non è zero vieneeseguita l'istruzione successiva:goto DelayLoopChe rimanda rimanda l'esecuzione all'inizio del ciclo di ritardo.

Page 27: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

Una volta raggiunto lo zero con il contatore Count vengono eseguite leistruzioni:decfsz Count+1,1goto DelayLoop

Che decrementano il registro seguente fino a che anche questo raggiunge lo zero. Il registro Count+1 in particolare verrà decrementato diuno ogni 256 decrementi di Count. Quando anche Count+1 avràraggiunto lo zero l'istruzione:returnil cui significato è RETURN FROM SUBROUTINE determinerà l'uscitadalla routine di ritardo ed il proseguimento dell'esecuzione dall'istruzionesuccessiva la call Delay.Per finireENDè una direttiva che indica al compilatore la fine del source assembler.

Page 28: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

COSA DOBBIAMO FARE AFFINCHE’ IL PIC ESEGUA I COMANDI ?

•…o meglio dov’è sarà messo il nostro programma?

• Su quale memoria andiamo a scrivere affinchè il PIC possa eseguire le istruzioni che abbiamo utilizzato?

• Dov’è allocata la memoria del PIC?

Page 29: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

Come trasferire il nostro programma in linguaggio assembler nel PIC affinchè possa eseguirlo?

•Il nostro programma dovrà essere salvato con l’estensione .ASM

•Insieme al programma PIC16f84.INC dovrà essere memorizzato nel PIC

•Affinchè possono essere trasferiti nella memoria del PIC dovranno essere compilati, occorrerà unprogramma che traduca il linguaggio assembler in linguaggio macchina comprensibile per il PIC.

•Il compilatore darà in uscita 4 file con estensione diversa, SOLO QUELLO CON ESTENSIONE .hex dovrà essere inviato nella memoria del PIC

Page 30: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi
Page 31: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

Occorre un programmatore per trasferire il file .hex alla memoria del PIC

Il programmatore si può acquistare o autocostruire.

Il programma per gestire il programmatore da noi usato

sarà ICprog

Page 32: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

Questo è il programmatore da realizzare .

Page 33: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

Possibili alternative

• Si è visto che la programmazione in linguaggio assembler è particolarmente laboriosa e lunga

• Si può utilizzare un qualche altro linguaggio che abbrevi e faciliti tutte le operazioni?

• Una soluzione può essere costituita dal PIC BASIC

Page 34: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

Come può essere scritto lo stesso programma in linguaggio PIC BASIC?

Prima di iniziare a scrivere il programma vero e proprioccorre settare il PIC secondo le impostazioni che ciservono

@ device pic16f84A,xt_osc,wdt_off,pwrt_on,protect_off

device pic16f84A dice quale PIC intendiamo usarext_osc quale oscillatore usare ( qui tra 200KhZ e 4mHZ)wdt_off non si usa il watchdog. E' un oscillatore interno del

PIC, esso resetta il PIC ogni 18-2000 millisecondiServe per sbloccare dai loop infiniti di errore

pwrt_on mettendo in ON il registro pwrt settatutte le porte come ingressifinchè ilprogramma non và in esecuzione

protect_off il registro protect va messo in off altrimenti non saràpiù possibile riscrivere sulla memoria del PIC

Page 35: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

Prima di iniziare a scrivere il programma vero e proprioccorre settare il PIC secondo le impostazioni che ciservono

@ device pic16f84A,xt_osc,wdt_off,pwrt_on,protect_offTRISA=%11111111TRISB=%11111110DLED VAR PORTB.0MAIN_LOOP

DLED =1pause 1000DLED =0pause 1000goto MAIN_LOOP

END

Page 36: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

La prima riga sappiamo cosa indica

TRISA=%11111111 setta tutte le 5 porte della porta Acome ingressi

TRISB=%11111110 setta tutte le porte di B comeingressi tranne RB0

DLED VAR PORTB.0 Associa la Variabile "DLED"al Bit 0 della porta B

MAIN_LOOP E' una LabelDLED =1 Setta DLED a 1pause 1000 Introduce un ritardo di

1 secondoDLED =0 Setta DLED a 0pause 1000 Introduce un ritardo di 1 secondogoto MAIN_LOOP Rimanda alla Label MAIN_LOOPEND dice che il programma è finito

Page 37: PIC 16F84A Ing. Pasquale Zambrotta Panoramica LEARNING ON THE JOB Creazione del programmatore hardware Creazione di una scheda per la prova dei programmi

Consiglio

• Consiglio di una o più strategie

• Consegnate un resoconto dei risultati attesi

• Menzionate i passi successivi da intraprendere

• Distribuzione dei compiti