Iot prototype ( Arduino+electret microphone+esp-01) which analyses and distingueshes sounds. Useful to study and monitor data about noise pollution and road traffic.
Iot prototype ( Arduino+electret microphone+esp-01) which analyses and distingueshes sounds. Useful to study and monitor data about noise pollution and road traffic.
Siamo un team appassionato di ingegneri che ha avviato Ace PLC perché eravamo frustrati da quanto poco il mercato dei PLC si sia evoluto. L’hardware è costoso e il software sembra essere stato congelato in tempo per anni. Volevamo progettare un PLC più avanzato per accelerare i tempi di sviluppo e ridurre i costi.
Il nostro team è nel mondo dell’automazione da molti anni. Dennis, il nostro presidente, ha iniziato Optimation nel 1990. Optimation fatto i primi pannelli operatore. A testimonianza della loro qualità, sono ancora oggi in vendita.
L’avventura di Ace PLC è iniziata nel 2007. Sono stati dedicati 5 anni allo sviluppo di un PLC di nuova generazione. In quel periodo abbiamo creato molti prototipi, ma ci siamo rifiutati di andare sul mercato fino a quando non avessimo qualcosa di cui andassimo veramente fieri. Ace PLC sono il risultato di questa ricerca di un PLC veramente grande.
Lezione sullo sviluppo e l'applicazione dell'automazione e della roboticain ambito industriale.
Classe quarta Ist.Tecn.Ind. indirizzo Informatica.Materia di SISTEMI E AUTOMAZIONE IIS "G.Marconi" di Latina
This is a basic implementation of the famous game Arkanoid running on a FPGA that I've developed for the final project of Electronic II FPGA course at the University of Trieste.
The development board I've used is TERASIC DE1 with Cyclone II FPGA by Altera.
Features:
- 6 different angles of impact for the sphere.
- The ball striking a brick causes the brick to disappear.
- When all the bricks are gone, the player has won.
- Some bricks are indestructible.
- The Player has 3 lives to win the game.
- Start/Pause and restart game button.
For More Informations and for the english version look at this: http://www.vuolsavest.net/t3o/arkanoidFpga/
Siamo un team appassionato di ingegneri che ha avviato Ace PLC perché eravamo frustrati da quanto poco il mercato dei PLC si sia evoluto. L’hardware è costoso e il software sembra essere stato congelato in tempo per anni. Volevamo progettare un PLC più avanzato per accelerare i tempi di sviluppo e ridurre i costi.
Il nostro team è nel mondo dell’automazione da molti anni. Dennis, il nostro presidente, ha iniziato Optimation nel 1990. Optimation fatto i primi pannelli operatore. A testimonianza della loro qualità, sono ancora oggi in vendita.
L’avventura di Ace PLC è iniziata nel 2007. Sono stati dedicati 5 anni allo sviluppo di un PLC di nuova generazione. In quel periodo abbiamo creato molti prototipi, ma ci siamo rifiutati di andare sul mercato fino a quando non avessimo qualcosa di cui andassimo veramente fieri. Ace PLC sono il risultato di questa ricerca di un PLC veramente grande.
Lezione sullo sviluppo e l'applicazione dell'automazione e della roboticain ambito industriale.
Classe quarta Ist.Tecn.Ind. indirizzo Informatica.Materia di SISTEMI E AUTOMAZIONE IIS "G.Marconi" di Latina
This is a basic implementation of the famous game Arkanoid running on a FPGA that I've developed for the final project of Electronic II FPGA course at the University of Trieste.
The development board I've used is TERASIC DE1 with Cyclone II FPGA by Altera.
Features:
- 6 different angles of impact for the sphere.
- The ball striking a brick causes the brick to disappear.
- When all the bricks are gone, the player has won.
- Some bricks are indestructible.
- The Player has 3 lives to win the game.
- Start/Pause and restart game button.
For More Informations and for the english version look at this: http://www.vuolsavest.net/t3o/arkanoidFpga/
Lo scopo di questa Tesi è mostrare come le piattaforme Arduino e Android possano essere utilizzate in un sistema di Ambient Intelligence per il monitoraggio dei sensori e l'interazione con gli attuatori.
La prima parte del lavoro è stata quella di progettare e sviluppare con l’hardware e il software fornito da Arduino le schede necessarie per il sistema:
• Una scheda per il monitoraggio ambientale, attraverso la lettura di quattro sensori (temperatura, umidità, luce, gas) (vedi figura a lato);
• Una scheda per la presenza all’interno della stanza attraverso un lettore di tag RFID e NFC, un sensore di movimento PIR e un sensore di suono ad alta sensibilità che comunicano i loro dati con un modulo ZigBee;
• Una scheda per la comunicazione ZigBee;
• Una scheda per gli attuatori e per il riconoscimento di dispositivi Android attraverso un USB Host.
Queste schede sono state installate in una Wireless Sensor Network (WSN) e comunicheranno con un server creato ad hoc attraverso tecnologie wireless e wired. Il server ha il compito di elaborare i dati grezzi che arrivano dalle schede, salvarli in un database, renderli disponibili a un client web che li possa visualizzare attraverso un’interfaccia (saranno rappresentati i dati letti delle ultime ore attraverso dei grafici) e di mettere a disposizione servizi utili per interrogazioni da parte di dispositivi Android.
Un altro servizio implementato è stato quello di un modulo software con il quale, attraverso una rete di Bayes per l’auto apprendimento appositamente creata per il progetto, è possibile prevedere lo stato della stanza in basa alla lettura dei sensori/dispositivi sopra elencati. Tale modulo è in grado di rilevare se c’è un incendio, se c’è un intrusione, ma anche se c’è attività lavorativa di una singola persona o se c’è una conferenza oppure se c’è una condizione anomala per cui bisogna azionare determinati attuatori. Attraverso la lettura di eventi di basso livello (sensori, tag di utenti entrati nel locale, ecc), il modulo riesce a prevedere con buona probabilità quale è lo stato della stanza in quel momento.
L’interfaccia utente del sistema è raggiungibile via Web attraverso una pagina presente sul server, oppure attraverso un’applicazione Android (vedi figura a lato) che permette di visualizzare i dati letti dai sensori, di ricevere notifiche push in caso di eventi di alto livello (rilevati dai moduli sopra descritti), attraverso il servizio Google Cloud Messaging, o azionare gli attuatori in remoto.
Tesi magistrale in ingegneria informatica
Progettazione e sviluppo di un gateway per la gestione efficiente a servizi e risorse per l'accesso locale e remoto in scenari di Internet of Things attraverso tecniche di Cloud Computing
Corso di 20 ore sulla piattaforma Arduino. Corso tenuto nelle scuole superiori di San Secondo e Fornovo come corso di aggiornamento per il personale docente. Il corso si suddivide in 5 lezioni dove vengono spiegate più o meno tutte le funzionalità della piattaforma. I file li potete trovare al seguente indirizzo https://github.com/loweherz/ArduinoLessons
Programmazione degli ATTiny - Il computer nella scarpaPaolo Aliverti
Slide del workshop di programmazione del chip ATTiny come sostituto di arduino. Il chip ATTiny, di costo contenuto e di piccole dimensioni può stare in una scarpa (!) e può aiutarci nella realizzazione di progetti di Physical Computing
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...Sardegna Ricerche
L'intervento di Paolo Paolucci durante l'Arduino Day, che si è tenuto il 29 marzo 2014 presso il FabLab Sardegna Ricerche, nella sede di Pula del Parco scientifico e tecnologico della Sardegna.
Corso di 20 ore sulla piattaforma Arduino. Corso tenuto nelle scuole superiori di San Secondo e Fornovo come corso di aggiornamento per il personale docente. Il corso si suddivide in 5 lezioni dove vengono spiegate più o meno tutte le funzionalità della piattaforma. I file li potete trovare al seguente indirizzo https://github.com/loweherz/ArduinoLessons
Located in the heart of the Emilia Romagna region, and just a stone's throw from Parma in the renowned Food Valley, LAUMAS Elettronica has for 30 years been Italy's leader in the weighing and batching industry.
The company facility consists of 3000 square metres, integrating "green" technologies for eco-compatibility with the surrounding environment.
LAUMAS' cutting-edge equipment tests various electronic and mechanical components in order to guarantee the products' quality.
The Company has made consistent investments towards the realisation of an EMC testing laboratory.
Today, using these resources, Laumas Research & Development is able to perform every type of product control and testing required by current standards relating to electromagnetic compatibility, electrical safety and legal metrology.
• Extremely specialized personnel with a high level of know-how.
• Research and development area dedicated to designing high-tech products.
• Attention to continuous innovation in products and productive processes.
• Pre-sales support and assistance, analysis of necessities, and choice of the most appropriate products for the customer's needs.
• Goods ready for delivery, guaranteeing that your order will be dealt with quickly.
• Fast and effective post-sales technical assistance.
• Company training aimed at gaining in-depth technical knowledge of products and potential fields of application.
LAUMAS ELETTRONICA can offer an all-round weighing service that is comprised of an enormous range of weighing and batching components, and tailor-made solutions. All the products blend with each other modularly ; while their functions are quite varied, they are simple and intuitive to use, and come with complete, easily consulted manuals.
• weight transmitters ........
• weight indicators with multi-function software .......
• load cells with mounting accessories for all applications ........
• single and multi-product batching systems with formula management......
• PC supervisory software to manage and control the weighing and batching systems.
LAUMAS' products can be linked to all types of peripherals, such as printers, data recorders, data storage on pen drive usb, large digit-display , PC or PLC....... using the field devices most widely employed on the market.
There is also an enormous range of scale products marketed under our IDEA SCALES brand:
• scales,
• crane scales,
• weighing platforms
• weighing modules.
LAUMAS Elettronica is associated with numerous organizations of manufacturing recognized in Europe and around the world.
Over the years, the company has earned a large number of certifications, for both its corporate system and its products. This guarantees high-quality products, and strict control over the production process that generated them.
With its well-established experience in industrial weighing and batching, LAUMAS ELETTRONICA offers its customer a degree of security.
1. Il microcontrollore PIC 16F84
di EMANUELE TONUCCI
(Matr. 091450 – Classe Concorso A042)
PAS 2014
Architettura degli Elaboratori – Prof. Leonardo Pasini
2. Il termine microcontrollore (microcontroller)
si intende comunemente un sistema a
microprocessore integrato su un unico chip
Comprende oltre alla CPU:
◦ una memoria di programma, solitamente di sola
lettura (PROM, EPROM, EEROM o FLASH)
◦ una memoria RAM, generalmente di dimensioni
ridotte, per i risultati intermedi dell'elaborazione
◦ periferici di I/O vari (porte seriali e/o
parallele, contatori/timer, convertitori AD ecc.)
3. PIC = Programmable Integrated Controller
CPU RISC (Riduced Instruction Set
Computing, elaborazione con insieme di
istruzione ridotto):
◦ poche e semplici istruzioni
◦ tutte della stessa lunghezza
◦ tutte richiedenti lo stesso numero di cicli macchina
per il fetch e per l’esecuzione
Basato su una struttura del tipo Harvard:
◦ Memoria programma e memoria dati (e relativi bus)
separati.
4. Questa caratteristica unita alla separazione
fisica dei canali lungo cui fluiscono istruzioni
e dati:
◦ Permette di ottenere una sovrapposizione (Pipe
Lineing) delle fasi di fetch di un’istruzione con
quella di esecuzione della precedente
◦ Velocità dovuta al fatto che la riduzione del numero
di istruzioni (unita a quella dei tempi di
indirizzamento), semplifica l’hardware richiesto per
la loro decodifica.
5. Nel PIC 16F84, la gestione di una istruzione (fetch +
esecuzione) richiede, con l’eccezione delle istruzioni di salto,
un singolo ciclo macchina, costituito da 4 cicli di clock come
si può vedere dalla figura:
6. Il PIC 16F84 è dotato di una FLASH Memory che viene utilizzata per
la riprogrammabilità del chip.
7.
8. Set ridotto di istruzioni: 35 istruzioni di una singola parola da 14
bit, tutte di un solo ciclo macchina (200 ns minimo), tranne le
istruzioni di salto che ne richiedono 2.
Dati a 8 bit
Frequenza di clock dalla d.c. a 20 MHz, ottenibili con varie opzioni
da software (cristallo o risuonatore ceramico bassa/media/alta
frequenza o gruppo RC)
Memoria di programma FLASH di 1024 x 14 bit (quindi fino a 1024
istruzioni)
68 byte di RAM di uso generale, organizzata in 68 registri di 8 bit
ciascuno.
15 registri con funzioni speciali.
64 byte di memoria dati EEPROM (scrivibile, con tempi dell’ordine
dei ms, durante il normale funzionamento da programma)
9. Stack hardware (cioè separato dalle aree di memoria dati e
programma e non accessibile al programmatore) profondo 8 livelli.
13 linee di I/O organizzate in un Port A di 5 bit e in un Port B di 8
bit, con controllo individuale della direzione, TTL compatibili ad alta
corrente di uscita (25 mA in sink e 20 mA in source), alcune delle
quali specializzabili (richiesta interrupt, clock contatore, ecc.).
Le linee del Port B dichiarate in ingresso possono essere connesse
da software a Vdd tramite un pull-up a bassa corrente (circa 100
µA).
Contatore/temporizzatore programmabile a 8 bit, con prescale
programmabile sempre a 8 bit.
Possibilità di interrupt su richiesta da linea esterna (bit 0 di Port
B), su cambiamento della linee 7÷4 di Port B, su overflow del
contatore/temporizzatore e infine su completamento scrittura
EEPROM dati.
10. I PIC 16FXX hanno un Program Counter a 13
bit in grado di indirizzare uno spazio di
memoria di 8K x 14.
Come mostrato nella figura, per il PIC 16F84A
solo i primi 1K x 14 di memoria (0000h –
03FFh) sono fisicamente implementati.
L’accesso a locazioni oltre gli indirizzi
fisicamente implementati causerà un
“riavvolgimento” degli indirizzi. Per esempio
se si tentasse di accedere alle locazioni
20h, 420h, 820h, C20h, 1020h, 1420h, 1820
h, and 1C20h, l’istruzioni che si incontrerà
sarà sempre le stessa.
11. L’autoreset all’accensione, senza necessità di componenti esterni,
tale reset porta il Program Counter alla locazione 0000h, da cui
parte l’esecuzione del programma.
La possibilità, decidibile da programma, di attivare un Power-up
timer, cioè un temporizzatore interno che ritarda l’esecuzione del
programma di qualche millisecondo per dar modo a tutte le tensioni
e al clock di stabilizzarsi.
La possibilità di porre da programma il microcontrollore in SLEEP,
cioè in uno stato di attesa in cui l’esecuzione del programma di
arresta, le linee di I/O restano nello stato in cui erano
precedentemente e il consumo del chip diventa minimo (meno di 1
µA a 2 V di alimentazione, uscite escluse). Dallo stato di SLEEP il PIC
esce con un livello basso sull’ingresso di reset MCLR, con reset dal
Watchdog Timer o con un interrupt.
12. La presenza di un Watchdog Timer (WDT), attivabile o
disattivabile in fase di programmazione. Il WDT genera un
reset ogni 18 ms (espandibili a circa 128 x 18 = 2,3 secondi
con un prescaler). Questa ripartenza ciclica del programma è
utile per sbloccare il microcontrollore da eventuali situazioni
critiche o di blocco in cui possa finire a causa del verificarsi di
particolari condizioni esterne.
Per le applicazioni commerciali è possibile proteggere il
codice del programma e renderlo inaccessibile in lettura una
volta scritto nella FLASH, stessa cosa è possibile farla per i
dati presenti nella EEPROM da 64 byte.
13. Nella parte bassa delle due
pagine di memoria sono
presenti 15 registri speciali.
Alcuni di questi registri sono
indirizzabili da entrambe le
pagine di memoria, come si può
vedere dal nome ripetuto sulla
stessa riga nella immagine
seguente (Mappa del Register
File).
14.
15. TMR0 (indirizzo 01h): contiene il conteggio attuale del
contatore/temporizzatore programmabile. Può essere letto, ma
anche scritto, si può cioè impostare il valore iniziale da cui il
contatore comincerà a contare (in avanti).
Il contatore/timer può contare (eventualmente attraverso un
prescaler) impulsi esterni (sul piedino RA4, corrispondente al bit 4
del Port A) o gli impulsi dell’instruction cycle clock. Arrivato a 255,
riparte da 0; in corrispondenza di questa transizione di overflow può
generare una interrupt.
16. PCL (indirizzo 02h): è il byte basso del Program Counter (bit 7÷0
degli indirizzi). Di per se il PC è un registro a 13 bit, può quindi
indirizzare 213 = 23 * 210 = 8 k locazioni (di 14 bit).
I 5 bit alti 12÷8 non sono accessibili direttamente
Una loro copia aggiornata è contenuta nel registro PCLATH
(indirizzo 0Ah).
Ogni operazione che modifichi i bit 12÷8 del PC modifica nello
stesso modo i bit 4÷0 di PCLATH.
Viceversa, i bit di PCLATH, che sono
scritti da programma, vengono
caricati nel Program Counter in
occasione di trasferimenti che
abbiano PCL come destinazione o
quando sono invocate istruzioni di
salto.
17. STATUS (indirizzo 03h): comprende una serie di bit (flag) che vengono influenzati
dal risultato di operazioni o da particolari eventi, e altri che concorrono alla
gestione degli indirizzamenti nell’archivio dei registri.
◦ C (bit 0) flag di Carry/Borrow: segnala un riporto/prestito nelle operazioni di addizione e
sottrazione su 8 bit.
◦ DC (bit 1) flag di Digit Carry: segnala un riporto/prestito sul nibble (4 bit) basso nelle operazioni di
addizione e sottrazione. Utile nelle operazioni BDC.
◦ Z (bit 2) flag di Zero: va a 1 quando il risultato dell’operazione logico/aritmetica precedente è 0; va
a 0 se tale risultato è diverso da 0. Viene anche influenzato da alcune istruzione di trasferimento.
◦ PD (bit 3) flag di Power Down: va a 1 durante la temporizzazione di Power-up o per una istruzione
CLRWDT (azzeramento del Watchdog timer); viene riportato a 0 da una istruzione di SLEEP (messa in
stato di attesa)
◦ TO (bit 4) flag di Time-Out: va a 1 durante la temporizzazione di Power-up o per un’istruzione di
CLRWDT; viene riportato a 0 dal time-out del watchdog timer. Sostanzialmente, PD e TO
permettono, dalle loro combinazioni, di individuare se un re-inizio di programma (reset) è stato
determinato da un normale RESET hardware su MCLR, se invece si tratta di una uscita dal modo
SLEEP, o di un time-out del watchdog , o ancora una combinazione di queste combinazioni. Si può
notare che PD e TO sono gli unici bit di STATUS che non possono essere scritti direttamente, ma
solo letti.
◦ RP1, RP0 (bit 6 e 5): sono bit di selezione pagina per l’indirizzamento diretto nell’archivio registri.
Se posti a 00 viene impostata la pagina 0 (00h – 7Fh), mentre se posti a 01 viene impostata la
pagina 1 (80h – FFh).
◦ IRP (bit 7): bit di selezione pagine per l’indirizzamento indiretto nell’archivio registri. Poiché in
questo tipo di indirizzamento la selezione avviene di due pagine in due e il PIC 16F84 ha solo 2
pagine, tale bit non ha nessun effetto sulla selezione.
18. Il procedimento dei due indirizzamenti è descritto nello schema qui
di seguito riportato:
19. PORTA e PORTB (indirizzi 05h e 06h): sono i
registri corrispondenti ai due port di I/O; nel primo
sono rilevanti solo i bit 4÷0 (il Port A ha solo 5
linee).
Ciascuna linea di ciascun port può essere
indipendentemente impostato in input oppure in
output, mediante la scrittura di un 1 (input) o di
uno 0 (output) nella corrispondente posizione del
registro di controllo TRISA (indirizzo 85h), per il
Port A, e TRISB (indirizzo 86h), per il Port B.
20. OPTION (indirizzo 81h): è un registro di controllo i
cui singoli bit (scrivibili e leggibili) determinano la
scelta di particolari opzioni riguardanti il
counter/timer, il watchdog timer, le modalità di
generazione di interrupt, il comportamento delle
linee di input.
21. Il PIC 16F84 ha 4 possibili sorgenti di
interrupt:
◦ Interrupt esterni dalla linea RB0/INT;
◦ Interrupt su overflow del timer/counter TMR0;
◦ Interrupt su fine scrittura EEPROM dati;
◦ Interrupt su cambiamento di livello ai pin
RB7÷RB4
22. Se avviene una interruzione, ulteriori interrupt vengono disabilitati
dall’abbassamento automatico del flag di abilitazione generale degli
interrupt GIE (bit 7 del registro INTCON)
L’indirizzo di rientro è salvato sullo stack hardware e il PIC è caricato
con 0004h, indirizzo a cui deve iniziare la routine di gestione
dell’interrupt. (Vettore di interruzione unico)
Le diverse interrupt comunque si “qualificano” alzando particolari
flag di richiesta contenuti nel registro INTCON.
Il software deve individuare quale condizione ha determinato
interrupt interrogando (polling) tali flag e diramarsi di conseguenza.
Al rientro dalla routine di gestione GIE viene riportato a
1, riabilitando gli interrupt non mascherati
23. Il contenuto del registro INTCON determina l’interrupt:
◦ RBIF (bit 0) che individua l’interrupt su cambiamento delle linee RB7÷RB4;
◦ INTF (bit 1) che individua l’interrupt della linea RB0/INT;
◦ TOIF (bit 2) che individua l’interrupt su overflow del timer/counter.
◦ Se tutti sono a 0 allora la interrupt è stata causa dalla scrittura in EEPROM
◦ RBIE (bit 3) che (dis)abilita l’interrupt corrispondente a RBIF;
◦ INTE (bit 4) che (dis)abilita l’interrupt corrispondente a INTF;
◦ TOIE (bit 5) che (dis)abilita l’interrupt corrispondente a TOIF;
◦ EEIE (bit 6) che (dis)abilita l’interrupt di fine scrittura EEPROM dati.
24. Il set di istruzioni, riportato nella prossima slide, è estremamente
compatto, in ottemperanza alla logica dei RISC; sono in tutto 35
istruzioni, tutte della stessa lunghezza (14 bit) e tutte della stessa
durata di 1 ciclo macchina (4 cicli di clock), tranne quelle di salto che
ne impiegano 2.
25.
26. PORTA EQU 5 ; Indirizzo Port A
PORTB EQU 6 ; Indirizzo Port B
TRISA EQU 5 ; Indirizzo reg. controllo Port A (pag.1)
TRISB EQU 6 ; Indirizzo reg. controllo Port B (pag.1)
PC EQU 2 ; Indirizzo Program Counter (parte bassa)
STATUS EQU 3 ; Indirizzo reg, stato
RP0 EQU 5 ; Il flag RP0 Š il bit 5 di STATUS
ORG 0x00 ; Inizio FLASH di programma
BSF STATUS,RP0 ; Alza bit 5 di STATUS (RP0) per
; selezionare Pag.1 del file registri
MOVLW 0xFF ; Port A
MOVWF TRISA ; in input
CLRW ; Port B
MOVWF TRISB ; in output
BCF STATUS,RP0 ; Abbassa RP0 per selezionare
; Pag.0 del file registri
PLA MOVF PORTA,w ; Leggi input in W
ANDLW 0x0F ; (solo i 4 bit bassi)
CALL TBL ; Vai alla subroutine di gestione tabella
MOVWF PORTB ; Aggiorna l'uscita
GOTO PLA ; Ripeti indefinitamente
TBL ADDWF PC,f ; Somma al valore corrente del pc (che punta
; alla istr. successiva) l'ingresso (che va da
; 0 a 15 e sta in W)
27. ; Qui di seguito la "Look-Up Table": ogni
istruzione mette il relativo dato
; di output in W e recupera in pc dallo
stack l'indirizzo di rientro
; Display anodo comune
; a = RB0
; b = RB1
; c = RB2
; d = RB3
; e = RB4
; f = RB5
; g = RB6
RETLW b'00111111' ;0
RETLW b'00000110' ;1
RETLW b'01011011' ;2
RETLW b'01001111' ;3
RETLW b'01100110' ;4
RETLW b'01101101' ;5
RETLW b'01111101' ;6
RETLW b'00000111' ;7
RETLW b'01111111' ;8
RETLW b'01100111' ;9
RETLW b'01111001' ;E
RETLW b'01111001' ;E
RETLW b'01111001' ;E
RETLW b'01111001' ;E
RETLW b'01111001' ;E
RETLW b'01111001' ;E
END
; NOTA SULLE TEMPORIZZAZIONI: il ciclo che
implementa il PLA è costituito
; da 7 istruzioni di cui 3 di salto, per un totale di 4
+ 3 x 2 = 10 cicli
; macchina = 40 periodi di clock. Alla massima
frequenza di clock del
; PIC 16F84A (20 Mhz) ciò significa 2µs di ritardo
fra variazione degli
; ingressi e aggiornamento delle uscite.