Magnetometro differenziale Fluxgate

I.T.I.S. “M. PLANCK” LANCENIGO DI VILLORBA (TV)
GEOMAGNETOMETRO FLUXGATE
MODELLO TL30
Ferdinando Barbon
CLASSE 5 A ELETTRONICA TELECOMUNICAZ. SER. A.S. 2005/2006
Ferdinando_Barbon
SOMMARIO
¾ Capitolo 1 .....................................................................................................................................2
ƒ
Il campo Geomagnetico ......................................................................................................2
• Introduzione storica .........................................................................................................2
• Il campo ...........................................................................................................................2
• Influenze ...........................................................................................................................3
• La bussola .........................................................................................................................4
• Le componenti Del Campo Magnetico .............................................................................5
¾ Chapter 1......................................................................................................................................6
ƒ The Geomagnetic field ........................................................................................................6
• Historical introduction ......................................................................................................6
• The field ............................................................................................................................6
• Influences..........................................................................................................................7
• The compass......................................................................................................................8
• Magnetic Field components..............................................................................................9
¾ Capitolo 2 ...................................................................................................................................10
ƒ I sensori Fluxgate...............................................................................................................10
• Principio di funzionamento.............................................................................................10
¾ Capitolo 3 ...................................................................................................................................12
ƒ Il fluxgate FGM 03h ..........................................................................................................12
• Caratteristiche tecniche del sensore ................................................................................12
¾ Capitolo 4 ...................................................................................................................................14
ƒ Il sensore di temperatura....................................................................................................14
• Introduzione ....................................................................................................................14
• Descrizione .....................................................................................................................15
• Comandi:.........................................................................................................................16
¾ Capitolo 5 ...................................................................................................................................18
ƒ La trasmissione seriale.......................................................................................................18
• Introduzione ....................................................................................................................18
• Schema applicativo .........................................................................................................19
¾ Capitolo 6 ...................................................................................................................................23
ƒ Magnetometro differenziale Fluxgate................................................................................23
• Introduzione ....................................................................................................................23
• Presentazione progetto ....................................................................................................23
• Centralina master ............................................................................................................23
• Unita remota differenziale ..............................................................................................24
• Software di comunicazione.............................................................................................24
• Circuito elettrico .............................................................................................................24
• Alimentazioni..................................................................................................................24
• Procedimento ..................................................................................................................24
• Caratteristiche tecniche geomagnetometro .....................................................................25
¾ Capitolo 7 ...................................................................................................................................26
ƒ Schemi e grafici .................................................................................................................26
ƒ Datasheet Display LCD .....................................................................................................32
ƒ Forma d’onda del segnale d’uscita del Fluxgate ...............................................................34
¾ Capitolo 8 ...................................................................................................................................37
ƒ Programmi .........................................................................................................................37
• Programma di raccolta dati su PC...................................................................................37
• Software per gestione PIC16C84P..................................................................................50
• Software per gestione PIC16F877P ................................................................................58
1
Ferdinando_Barbon
Capitolo 1
Il campo Geomagnetico
Introduzione storica
Plinio il Vecchio (23-79 D.C.) nel Libro di Storia Naturale, narra che il
nome Magnete proviene dal pastore Cretese di nome “Magnes “ il quale
adoperando il suo bastone con la punta di ferro, scopri la proprietà di
attrazione e repulsione di alcune pietre che furono chiamate magnetiche.
Oggi sappiamo che tali pietre contengono la magnetite, un magnete naturale
composto di ossidi di ferro. Le proprietà magnetiche di alcuni materiali
erano già note dai tempi antichi in India ed in Cina. Nel 1600, William
Gilbert, che fu più tardi il medico della regina Elizabeth I dell'Inghilterra,
pubblicava il suo grande studio sul magnetismo, "De Magnete". Vi dava la
prima spiegazione razionale del comportamento misterioso che aveva l'ago
William Gilbert
della bussola ad indicare nella direzione nord-sud: la terra stessa era
magnetica. "De Magnete" apriva l'era della fisica e dell'astronomia moderna, e cominciava allora
un secolo, segnato dai grandi lavori di Galileo, Kepler, Newton e di altri.
Il campo
Il campo geomagnetico è generato dalle correnti elettriche situate in molte parti differenti della
terra. Nel nucleo esterno, la parte principale del campo geomagnetico, è mantenuto da una dinamo
naturale. Nella superficie le correnti possono
essere indotte tramite le variazioni nel tempo del
campo magnetico ambientale. Nella crosta il
campo viene indotto anche da componenti
magnetiche permanenti. Nella ionosfera e nella
magnetosfera le correnti elettriche sono mantenute
da un'interazione complicata con il sole, il campo
heliomagnetico ed il vento solare delle particelle
caricate. Con la loro posizione particolare, Le
molte diverse e remote fonti del campo magnetico
della terra contribuiscono ciascuna al campo totale
con i processi fisici molto differenti in ogni luogo e
provocano un'ampia varietà di variazioni
geomagnetiche temporali.
Di conseguenza, attraverso l'analisi delle serie
cronologiche del campo magnetico delle diverse
posizioni geografiche, le differenti zone di
Fig. 1: Il nucleo della terra
sorgente che sono sotto o sopra la superficie della
terra, possono essere studiate per scopi scientifici. Il controllo e l'analisi del campo geomagnetico
sono inoltre importanti per le applicazioni pratiche, alcune delle quali sono state utilizzate da
secoli.
Il campo magnetico viene ora studiato per l'orientamento, la navigazione, la ricerca di idrocarburi,
del minerale; ecc…
2
Ferdinando_Barbon
Influenze
Di interesse più recente è quanto il campo magnetico possa influenzare le attività della nostra
società moderna basata sulla tecnologica. Ciò è particolarmente interessante durante le cosiddette
tempeste magnetiche, quando la comunicazione radio può essere difficile o impossibile, il sistema
di posizionamento globale (GPS) può essere degradato, i circuiti elettronici satellitari possono
essere danneggiati, la durata del satellite può essere aumentata, gli astronauti ed i piloti di alta
quota possono essere sottoposti all’aumento dei livelli di radiazione, la corrosione di condutture,
griglie elettriche possono generare degli impulsi di tensione causando mancanze di corrente
elettrica.
Le manifestazioni più belle di attività geomagnetiche sono le aurore, visioni marcate alle alte
latitudini vicino ai poli geomagnetici. Data la pluralità di fenomeni geomagnetici, non sorprende
che i gruppi scientifici interessati ai dati del magnetismo siano numerosi e vari.
Fig. 2: Magnetosfera
3
Ferdinando_Barbon
La bussola
Forse la dimostrazione più famigliare della realtà del campo magnetico della terra è la tendenza
che ha l'ago della bussola di orientarsi al nord, una proprietà
che è stata sfruttata dai navigatori per secoli. Una bussola è
costruita in modo che il relativo ago magnetico sia libero di
ruotare nel piano orizzontale. Ma se dovessimo consentire
all'ago di avere una libertà di orientamento in tutte le direzioni,
sospendendo l'ago da un filetto in modo che possa orientarsi
liberamente sia orizzontalmente che verticalmente, troveremmo
che l'allineamento dell'ago varierebbe da un punto all’altro
della terra. Ancora, se dovessimo misurare la forza sull'ago
magnetico che lo induce a posizionarsi, troveremmo che la
resistenza di questa forza è proporzionale all'intensità del
campo magnetico, inoltre varia continuamente con la posizione
nello spazio. Queste proprietà possono essere usate per
tracciare una famiglia di linee di forza. A qualsiasi punto sulla
superficie della terra, l'orientamento del vettore geomagnetico
è descritto convenzionalmente usando due angoli:
1 declinazione, l'angolo fra il componente orizzontale ed il
Fig. 3: La bussola
nord magnetico
2 inclinazione, l'angolo fra il piano orizzontale ed il vettore del campo. L'intensità del campo
magnetico, che è indipendente dal sistema di coordinate di riferimento, è rappresentata dalla
lunghezza del vettore.
CENTRI UFFICIALI
TromsøGeophysical Observatory
Fig. 4: centri ufficiali misure Geomagnetiche
4
Ferdinando_Barbon
Le componenti Del Campo Magnetico
Le componenti del campo magnetico:(X, Y, Z)
definiscono i componenti cartesiani (Nord, Est, verso
il centro della terra), la rappresentazione del settore H
è di tipo polare e quindi I angolo d’inclinazione del
vettore magnetico riguardo al piano orizzontale, e F
l'intensità di campo totale. Il campo magnetico della
terra è spesso descritto come approssimativamente
dipolare, con le linee di forza che escono dal polo
geomagnetico sud per convergere al polo
geomagnetico nord, come rappresentato nella figura
qui sotto. Anche se questa descrizione è utile per
molti scopi, non è particolarmente esatta. La parte
dipolare del campo realmente è inclinata di
approssimativamente 11° rispetto all'asse di rotazione
e ci sono ingredienti supplementari e non-dipolari nel
campo geomagnetico, che, una volta aggiunti
insieme, formano il campo di superficie totale
Fig. 5:Componenti asse magnetico
caratterizzato da tutta la sua complessità. Come
conseguenza di questa complessità, non solo il senso dell'ago della bussola devia dal nord reale,
ma la quantità della deviazione, la declinazione, varia in funzione della posizione geografica.
Questo fatto è sempre stato storicamente un problema per i navigatori e, non sorprende che sia
stato un motivo che ha aiutato le indagini globali sul campo magnetico terrestre. Un'altra misura
semplice della geometria del campo è quella della posizione dei poli magnetici. Al polo
geomagnetico nord, il nostro ago magnetico indicherebbe verso il basso, mentre al polo
geomagnetico del sud, l'ago indicherebbe una posizione verso l’alto. Per questi motivi, i poli
geomagnetici a volte si riferiscono come bipolari. Il polo geomagnetico del nord è situato
nell'Artide canadese circa alla latitudine 82°N ed alla longitudine 248°E. Il polo geomagnetico del
sud è situato nel sud dell'oceano antartico dell'Australia circa alla latitudine 65°S ed alla
longitudine 138°E. Si può notare che i poli geomagnetici non sono contrapposti e l’asimmetria è
ovviamente un'altra misura della complessità geometrica del campo.
Fig.6: Campo geomagnetico
5
Ferdinando_Barbon
Chapter 1
The Geomagnetic field
Historical introduction
Plinio the Old (the 23-79 B.C.) in the Natural History Book, it narrates that
the name Magnet comes from the Cretese shepherdesses of name "Magnes"
which using its stick with the iron tip, discover to the property of attraction
and repulsion of some stones that were calls magnetic. . Today we know
that such stones contain the magnetite, a natural magnet composed of iron
oxides. The magnetic properties of some materials were already notes from
the ancients times in India and China.
In 1600, four hundred years ago William Gilbert, later physician to Queen
Elizabeth I of England, published his great study of magnetism, "De
Magnete". It gave the first rational explanation to the mysterious ability of
William Gilbert
the compass needle to point north-south: the Earth itself was magnetic.
"De Magnete" opened the era of modern physics and astronomy and started a century marked by
the great achievements of Galileo, Kepler, Newton and others.
The field
The geomagnetic field is generated by electric currents located in many different parts of the
Earth. In the outer core the main part of the geomagnetic field is sustained by a naturally occurring
dynamo. In the mantle currents can be induced by
time-dependent variations in the ambient
magnetic field. In the crust the field has both
induced and permanent components. In the
ionosphere and magnetosphere electric currents
are sustained through a complicated interaction
with the Sun, the heliomagnetic field, and the
solar wind of charged particles. The many
different, and sometimes remote, sources of the
Earth's magnetic field each contribute to the total
field at any one particular location, with the very
different physical processes in each domain giving
rise to a wide variety of time-dependent
geomagnetic variations. Therefore, through the
analysis of the time series of the magnetic field
from different geographic locations, the different
Fig. 1: The nucleus of the earth
source regions, be they below or above the Earth's
surface, can be studied for the purposes of
scientific scopes. The monitoring and analysis of the geomagnetic field is also important for
practical applications, some of which have been used from centuries. The magnetic field can be
used for orientation, navigation, and mineral and oil exploration, ecc…
6
Ferdinando_Barbon
Influences
Of more recent interest the magnetic field is how much can influence the activities of our modern
society based on the technological one. That is particularly interesting during the so-called
magnetic storms, when the communication radio can be difficult or impossible, global-positioning
systems (GPS) can be degraded, the satellite electronics circuits can be damaged, the duration of
the satellite can be increased, the astronauts and the pilots of high- altitude can be subordinates to
the increase levels of radiation, the corrosion of ducts and electric-power grids workers can
generate of the tension impulses causing blackouts.
The most beautiful manifestations of geomagnetic activity are aurorae, seen prominently at high
latitudes near the geomagnetic poles. Given the plurality of geomagnetic phenomena, it is not
strange that the interested scientific groups to the data of the magnetism are numerous and several.
Fig. 2: Magnetosphere
7
Ferdinando_Barbon
The compass
The Perhaps the most familiar demonstration of the reality of the Earth's magnetic field is the
tendency that has the needle of the compass to orient itself to
the north, a property that has been exploited by navigators for
centuries. A compass is constructed, of course, such that its
magnetic needle is free to rotate in the horizontal plane. But if
we were to permit the compass needle to have full directional
freedom, suspending the needle (say) from a thread so that it
could freely obtain its orientation both horizontally and
vertically, we would find that the alignment of the needle would
vary continuously from one point in space to another.
Furthermore, if we were to measure the force on the magnetic
needle causing it to assume its preferred alignment, we would
find that the strength of this force, proportional to the intensity
of the magnetic field, also varies continuously with position in
space. These properties can be used to map a of lines of force.
At any one point on the surface of the Earth the orientation of
the geomagnetic vector is conventionally described using two
angles: declination, the angle between the horizontal component
Fig. 3: The compass
of the magnetic-field vector relative to true north, and
inclination, the angle between the horizontal plane and the field vector. The intensity of the
magnetic field, which is independent of the reference coordinate system, is represented by the
length of the vector.
OFFICIAL CENTERS
TromsøGeophysical Observatory
Fig. 4: official centers Geomagnetic measures
8
Ferdinando_Barbon
Magnetic Field components
The magnetic-field components: (X,Y,Z) define the
Cartesian components (north, east, towards the center
of the earth), the rappresent of the H field is of polar
type and therefore I horizontal plane (I) is inclination
with regard to the horizontal plan, and (F) is the total
field intensity. The magnetic field of the Earth is
often times described as being approximately dipolar,
with field lines emanating from the south
geomagnetic pole and converging at the north
geomagnetic pole, as depicted in the figure below.
Although this description is useful for many
purposes, it is not particularly accurate. The dipolar
part of the field is actually tilted by approximately
11° with respect to the rotational axis, and there are
additional,
non-dipolar
ingredients
in
the
geomagnetic field, all of which, when added together,
are the total superficial field in all of its complex
Fig. 5: Magnetic field components
detail. As a result of this complexity, not only does
the direction of the compass needle deviate from true north, but the amount of the deviation, the
declination, varies as a function of geographic location; see the map below. This fact has been an
historical problem for navigators, and, not surprisingly, it helped to motive some of the original
global-scale surveys of the Earth's magnetic field. Another simple measure of the field's geometry
is the position of the magnetic poles. At the north geomagnetic pole, our freely moving magnetic
needle would point down, whilst at the south geomagnetic pole, the needle would point up. For
these reasons, the geomagnetic poles are sometimes referred to as 'dip poles'. The north
geomagnetic pole is located in the Canadian Arctic at about 82°N latitude and 248°E longitude.
The south geomagnetic pole is located in the Antarctic Ocean south of Australia at about 65°S
latitude and 138°E longitude. Note that the geomagnetic poles are not antipodal, an asymmetry
that is just another measure of the field's geometric complexity.
Fig.6: geomagnetic field
9
Ferdinando_Barbon
Capitolo 2
I sensori Fluxgate
I sensori Fluxgate sono dei dispositivi in grado di misurare campi magnetici lentamente variabili
nel tempo e con variazioni lente di temperatura intorno a quella ambientale. Hanno cominciato ad
essere utilizzati negli strumenti elettronici intorno al periodo della seconda guerra mondiale. Da
molti anni sono di interesse scientifico e tecnologico per la loro praticità e per l’applicabilità in
diversi ambiti.
I geomagnetometri Fluxgate sono strumenti molto versatili, utilizzati tanto sulla terra che nello
spazio per misurare le componenti vettoriali del campo magnetico. La loro gamma tipica si
estende da 0.1 nanoTesla circa ad 1 milliTesla.
Uno degli strumenti più comunemente impiegato nella ricerca archeologica è il gradiometro di tipo
“Fluxgate”, appositamente predisposto per ricerche di questo tipo. Si tratta di una strumentazione
portatile, compatta e leggera, alimentata a batteria, costituita da un’unità centrale a
microprocessore per la programmazione del sistema di rilievo e dotata di memorie.
I Fluxgate trovano impiego anche nella realizzazione di bussole elettroniche comunemente
utilizzate nella strumentazione di bordo navale. In campo militare sono utilizzati nella produzione
di apparecchiature di rilevazione dei sottomarini, per l'individuazione di mine antiuomo, nel
settore spaziale per controllare il posizionamento di satelliti; ma anche in campo tecnologico
hanno una notevole versatilità per i metal detectors oppure per i rilevatori di giacimenti sotterranei
come il petrolio. I Fluxgate inoltre sono adatti in tutte quelle aree in cui possa essere necessario
misurare distorsioni locali dell’intensità del campo magnetico terrestre, spesso associate a
movimenti della crosta terrestre, cioè in campo geologico e geofisico.
Le loro potenzialità sono in relazione alle ridotte dimensioni e alla grande sensibilità, in grado di
apprezzare variazione anche dell’ordine del nT.
Gli studi attuali sono indirizzati a migliorarne le prestazioni attraverso la realizzazione di nuovi
schemi di funzionamento; grazie inoltre al crescente sviluppo tecnologico, orientato anche alla
ricerca di materiali sempre più efficienti, è stato possibile ridurne notevolmente le dimensioni,
ampliandone ulteriormente le possibilità di utilizzo.
Principio di funzionamento
Il funzionamento dei sensori Fluxgate si basa sulla non linearità magnetica di un nucleo di
materiale ferromagnetico, quale ad esempio il FeNi. In una semplice schematizzazione, il sensore
può essere rappresentato come un nucleo cilindrico di materiale ferromagnetico ad alta
permeabilità, intorno al quale sono avvolte due bobine coassiali, denominate “bobina di
riferimento” e “bobina di rilevazione”, come rappresentato in figura 7.
La bobina di eccitazione (o di
riferimento) alimentata in modo
alternato (onda triangolare in
questo caso) con ampiezza HO,
crea un campo magnetico
circostante (B); il relativo campo
magnetico allinea gli assi
magnetici degli atomi nel nucleo
Fig.7: Schema di principio del sensore Fluxgate
ferromagnetico con la funzione
di potenziare il campo stesso.
Questo campo causa alternativamente una saturazione periodica del materiale ferromagnetico nei
punti massimi, sia nella semionda positiva che in quella negativa (figura 8).
10
Ferdinando_Barbon
Esistono determinate ferriti dove la saturazione avviene bruscamente e completamente, ad un
definito livello stabile, se una corrente alternata abbastanza grande alimenta una bobina avvolta
intorno ad un nucleo di tale materiale; le inversioni magnetiche del nucleo avvengono avanti e
indietro e la saturazione si presenta a metà di ogni ciclo in modo simmetrico. Il segnale presente
sulla bobina di rilevazione sarà come rappresentato in figura 8 (basso a destra).
Se tuttavia questa bobina è situata completamente o parzialmente in un campo magnetico esterno
direzionato esattamente o approssimativamente lungo l'asse del nucleo della ferrite HD+HO, la
simmetria viene modificata (figura 9). A metà del ciclo in cui il campo della bobina raggiunge la
massima ampiezza, la saturazione arriva leggermente in anticipo; questo è causato dalla presenza
di un campo maggiore dipendente dall'intensità magnetica esterna statica sommata a quella della
bobina. Nell’altra metà del ciclo, in cui il campo esterno statico si oppone a quello della bobina, la
saturazione avviene leggermente in ritardo.
B
Zona di saturazione
t
H
Zona di saturazione
t
t1
2
H0
e
-d0
dt
t
Fig8: Grafici in assenza di campo esterno
B
Zona di saturazione
H
t
Zona di saturazione
t1
t2
HD+H0
e
-d0
dt
t
Fig.9: Grafici in presenza di campo esterno
11
Ferdinando_Barbon
Il segnale presente sulla bobina di rilevazione sarà come rappresentato in fig. 9 (basso a destra).
Questa asimmetria (errore di fase) può essere percepita ed elaborata attraverso ulteriori circuiti
elettronici. Alcuni blocchi che possono essere utilizzati sono: il PLL (Phase lock loop), il PSD
(Phase Sensitive Detection) o altri sistemi di comparazione di fase.
Il rumore elettromagnetico che limita la sensibilità del Fluxgate è determinato dall’effetto
Barkhausen, associato al movimento oscillatorio delle pareti dei domini nel nucleo, quando si
applica il campo di riferimento. La risoluzione dei magnetometri Fluxgate è principalmente
limitata dalla stabilità del sensore di riferimento al variare della temperatura.
La variazione dell’offset dipende dal livello di rumore e dall’instabilità nel tempo del sensore . Il
dispositivo misura la componente secondo l’asse del nucleo di un campo magnetico stazionario o
di bassa frequenza, con una sensibilità che può raggiungere il nanoTesla. Nei sistemi commerciali
di alta qualità, impiegati in misure di precisione del campo magnetico e nei test non distruttivi, il
corrispondente livello di rumore risulta essere inferiore a 20pT/Hz.
Capitolo 3
Il fluxgate FGM 03h
I sensori magnetometri Fluxgate FGM 03h sono costruiti da Speake & dal Co., I magnetometri
sono particolarmente sensibili e sono destinati a misurare le piccole fluttuazioni del campo
geomagnetico. Il modello FGM-3h è il più sensibile nella gamma di sensori Speake, ed in effetti è
così sensibile che si satura se allineato lungo il flusso terrestre Nord-Sud. Normalmente è usato
allineato nella direzione di Est-Ovest, che è equivalente a misurare il vettore Y del campo; ciò
approssimativamente proporzionale alla declinazione magnetica D.
Il campo a zero del magnetometro è situato in una zona a cui corrispondere una frequenza vicino
ai 68 kHz. Per allineare il magnetometro si procede in questo modo:
(1) regolando il magnetometro il più vicino all'asse magnetico di Est-Ovest
(2) trovando l'allineamento del magnetometro tale che, quando si inverte esattamente il sensore
nella stessa direzione, la frequenza dell'uscita rimane la stessa.
Notare tuttavia che la curva di risposta ottenuta non dà una risposta lineare concentrata sulla
misura del campo zero La risposta non comincia neppure vagamente a diventare lineare fino
all’applicazione di campi magnetici positivi.
Il punto migliore di funzionamento del sensore è intorno allo zero, corrispondente alle frequenze
fra 60 e 70 kHz, dove la risposta è un po’ più di 1 Hz/nT. Si nota dalle caratteristiche fornite dal
costruttore, che i sensori sono approssimativamente lineari nel periodo e non nella frequenza,
visto che la risposta in Hz/nT varia approssimativamente come il quadrato della frequenza del
sensore, a 40 kHz è circa 0.5 Hz/nT, mentre a 80 kHz (due volte la frequenza), è circa 2 Hz/nT, o
4 volte più grandi. Questa sensibilità alla reazione non deve essere confusa con la sensibilità
del fluxgate .
Caratteristiche tecniche del sensore
Tensione di alimentazione: 5v +/- 0.5v
Corrente tipica 12 mA
Campo di temperatura 0 a 50° C
Segnale di uscita: da 50 kHz a 120 kHz proporzionale al campo magnetico misurato.
Banda passante: da DC a ~20kHz.
12
Ferdinando_Barbon
Figura 10: Dimensioni e collegamenti
Grafico 1: Campo magnetico/ Periodo
Foto 1: Fluxgate FGM-3 Speake
13
Ferdinando_Barbon
Capitolo 4
Il sensore di temperatura
Introduzione
Il sensore digitale DS18B20 è un integrato prodotto dalla DALLAS SEMICONDUCTORS, viene
consegnato in contenitore TO-92 , SOIC o uSOP ( fig. 11 e Tab.1), fornisce misure di temperatura
in gradi Centigradi; il valore della misurazione è generato sotto forma di segnale digitale da 9 a 12
bit.
1
Inoltre è provvisto di una funzione di allarme con livelli di trigger alti e bassi programmabili dall’
utente e allocati in memorie non volatili .
Il sensore DS18B20 comunica tramite il protocollo 1-Wire®, un protocollo standard che permette
di usare un solo filo di comunicazione (e massa) per il colloquio con un microprocessore centrale.
E’in grado di misurare temperature da -55°C a 125°C con una precisione di 0.5°C nella gamma
compresa tra -10°C a +85°C.
Un'altra caratteristica del DS18B20 è la capacità di funzionare senza un’alimentazione esterna.
L'alimentazione preferibilmente è assicurata tramite la resistenza di “Pull up” sulla linea 1Wire®; quando il bus è alto, viene caricato un condensatore interno (c), che a sua volta fornisce
l'alimentazione necessaria al dispositivo allorquando il bus si trova basso. Questo metodo di
prelevare l'alimentazione dal bus 1-Wire® viene classificata come "alimentazione parassita.".
In alternativa il DS18B20 può anche essere collegato ad un’alimentazione esterna ( Fig. 12).
Figura 12: Configurazione del DS18B20 con alimentazione esterna
14
Ferdinando_Barbon
Ogni DS18B20 ha un codice seriale univoco a 64-bit, che permette di fare funzionare più sensori
sullo stesso bus 1-Wire®. E’ possibile usare fino a 100 sensori su una linea di lunghezza che
potrebbe arrivare fino a 300m, quindi, è facile utilizzare un solo microprocessore per controllare
molti DS18B20 distribuiti in un’ampia area.
Le applicazioni che possono trarre beneficio da questa tecnica di indirizzamento univoco
includono i controlli dell’ambiente, sistemi di controllo della temperatura all'interno delle
costruzioni, controlli nelle attrezzature, nei macchinari,nei sistemi di processo e di controllo.
Descrizione
Come precedentemente indicato, la Figura 11 mostra uno schema a blocchi del DS18B20 e la
pedinatura viene elencata in tabella 1
La ROM a 64-bit immagazzina il codice seriale univoco del
dispositivo. La memoria tampone contiene un registro da 2 byte per
memorizzare l’uscita digitale che proviene dal sensore di
temperatura.
In più, permette l’accesso ai registri da 1 byte per i trigger di
allarme massimo e minimo TH e TL, questi registri sono allocati in
EEPROM non volatile, viene mantenuta così l’informazione anche
in assenza di alimentazione.
In questo specifico progetto, il dispositivo DS18B20 comunica con un
PIC modello PIC16C84P tramite l’uscita "open collector" attraverso la
porta RA0. Il valore logico uno viene quindi generato da una resistenza
di “Pull-up” da 4,7 kOhm collegata da un lato al polo positivo (5V) e
dall’altro lato all’uscita RA0, quindi i due dispositivi che dialogano
Tabella 1
possono scrivere uno ZERO collegando la linea a massa o scrivere un
UNO semplicemente "rilasciando la linea". La comunicazione viene impostata dal "master", cioè dal PIC.
Fig. 13
15
Ferdinando_Barbon
Comandi:
RESET
Quando il PIC inizia a dialogare deve inviare sulla linea un "impulso di reset" che consiste nel
mettere la linea a ZERO e mantenerla per un tempo compreso fra i 480 e i 960us, nel nostro caso è
stato impostato a 500 microsecondi. Dopo l'impulso di reset il PIC si mette in ascolto. A questo
punto la sonda, dopo avere interpretato l'impulso di reset risponde con un impulso di presenza che
consiste nel mettere la linea a ZERO a partire da 15-60us dall'impulso di reset e per un tempo
compreso fra i 60 e i 240us. (Figura 13).
Il flag "errore,0" vale UNO se il PIC non ha trovato la sonda, ovvero se non vi è stato alcun
impulso
di “presence” sulla linea.
A questo punto inizia la comunicazione vera e propria. Dopo l'inizializzazione il bus-master, cioè il
PIC, può finalmente dialogare con la sonda.
Figura 13
SKIP ROM (OXCC)
Subito dopo l'inizializzazione il bus master invia alla sonda un comando che si chiama "SKIP
ROM" XCC.
Quando la sonda riceve questo comando sa che subito dopo deve attendersi un comando diretto a
lei che riguarda le sue funzioni di "sonda". Il comando “SKIP ROM” dice alla sonda di "saltare"
l'invio del codice univoco da 64 bit che nel nostro caso è perfettamente inutile avendo a che fare
con una sola sonda.
START CONVERSION (OX44)
Quindi dopo il comando di "SKIP ROM" spediamo il comando “START CONVERSION” OX44
Esiste anche all’occorrenza, una "configuration word" che può essere programmata e una memoria
in cui memorizzare un valore di temperatura in base al quale la sonda può fare da allarme settando
un flag quando la temperatura supera tale valore, in questo caso non è stato utilizzata questa
16
Ferdinando_Barbon
opzione.
Dopo il comando "converti temperatura" (OX44) la sonda ha esaurito il suo ciclo di operazioni e
ha bisogno di essere reindirizzata. La routine principale quindi dovrà eseguire di nuovo un impulso
di reset per inizializzare nuovamente la sonda
SCRATCHPAD (OXBE)
Quello che dobbiamo fare adesso è leggere la "SCRATCHPAD" cioè la memoria in cui viene
memorizzato l'ultimo valore di temperatura convertito. Mandiamo il comando "LEGGI
SCRATCHPAD" OXBE, il quale dice alla sonda che subito dopo dovrà inviarci il dato di
temperatura.
I dati dell'uscita DS18B20 sono in gradi centigradi e sono memorizzati a 16 bit nel registro di
temperatura (si veda ura 2). I bit contrassegnati con “S” indicano se la temperatura è positiva o
negativa: per la positiva, S = 0 e per la negativa, S=1. La tabella 2 fornisce gli esempi dei dati
dell'uscita digitale e la corrispondente lettura.
Viene effettuata la lettura del dato che ci viene inviato a partire dal bit meno significativo e
continua fino al nono byte (Byte 8 – CRC). Inoltre abbiamo il flag di controllo rappresentato dal
bit 0 del registro "errore". Nel caso in cui tale bit valga 1 il contenuto dei temp1 e temp2 è da
ignorare perchè la sonda non è presente anche se le istruzioni di lettura vengono comunque
eseguite.
In seguito, il dato viene memorizzato all’interno del PIC16C84P e a mezzo di una apposita
routine, contemporaneamente inviato e visualizzato in un display LCD collegato alle uscite RB0
…
RB7 del PIC.
17
Ferdinando_Barbon
Capitolo 5
La trasmissione seriale
Introduzione
Lo standard RS-232, di cui si sente spesso parlare, è un protocollo di comunicazione seriale
asincrona utile per collegare ad un personal computer dei circuiti esterni. Dato che il canale seriale
RS-232 deve essere discretamente immune ai disturbi, i livelli di tensione adoperati sono diversi
da quelli di tipo TTL o CMOS. Così è necessario dover traslare le tensioni per adattarle ai circuiti
elettronici. Riportiamo la tabella di relazione delle tensione tra lo standard TTL-CMOS e RS-232.
TTL - CMOS
RS-232
livello logico "0"
+12 Volt (+6V...+15V)
livello logico "1"
-12 Volt (-0V...-15V)
Come è possibile vedere, non solo le tensioni sono diverse e ben più alte, per garantire una buon
immunità ai disturbi, ma anche sono invertite. E’ necessario disporre di un traslatore ed invertitore
di tensione. Per far ciò, ci sono diverse soluzioni, dalle più semplici, che richiedono dei transistors
e/o i ±12 Volt, alle più eleganti, che utilizzano dei circuiti integrati appositamente concepiti; uno
tra questi è il MAX232, prodotto dalla Maxim. Per quanto riguarda la velocità di comunicazione,
si può arrivare anche ad 1Mbit/s.
Questo circuito integrato, dispone di 2 canali per la comunicazione RS-232 bidirezionale, come è
possibile vedere osservando la piedinatura. Inoltre ha il pregio di richiedere solo i +5Vcc anche
per supportare, in trasmissione, lo standard RS-232. Ciò è possibile, grazie a due stadi convertitori
DC-DC, ovvero un elevatore di tensione a capacità, da +5Vcc a +12Vcc; cui segue uno stadio
invertitore di polarità, sempre a capacità, da +12Vcc a -12Vcc. Queste tensioni, poi sono pure rese
disponibili per altri impieghi, ai seguenti piedini: pin 2: +12Vcc, pin 6: -12Vcc. E i condensatori
18
Ferdinando_Barbon
Schema applicativo
presenti collegati al circuito integrato permettono il regolare funzionamento
degli stadi convertitori DC-DC, come è possibile vedere osservando lo schema applicativo, posto
più sotto.
Sebbene la sola piedinatura di un circuito integrato possa dare molte informazioni, spesso ciò non
è sufficiente per l'utilizzo reale. Così disporre di un semplice ma funzionante schema elettrico, può
essere davvero utile. Nello schema elettrico riportato qui sotto, è stato utilizzato un solo canale
bidirezionale, ma per usi particolari è possibile impiegare entrambi i canali.
Foto 2: Centralina master TL30 – vista di fronte
19
Ferdinando_Barbon
Foto 3: Centralina master TL30 – vista laterale
Foto 4: Unità remota differenziale- vista dall'alto
20
Ferdinando_Barbon
Foto 5: Centralina master TL30 montata in rack
21
Ferdinando_Barbon
Foto 6: Unita remota - Gradiometro
22
Ferdinando_Barbon
Capitolo 6
Magnetometro differenziale Fluxgate
Introduzione
Questo lavoro consiste nella progettazione e costruzione di un geomagnetometro in grado di
misurare il campo magnetico terrestre o piccoli cambiamenti magnetici locali prodotti da veicoli o
da oggetti magnetizzati (chiavi, forbici, lame di acciaio, monete,….) in movimento nell’ambiente
circostante; inoltre può essere utilizzato per misurare il campo magnetico prodotto dal passaggio di
una corrente elettrica in un conduttore .
Per questo progetto sono stai utilizzati due sensori Fluxgate prodotto dalla Speake & Co.I Fluxgate
sono montati in modalità differenziale ed orientati vicinissimi a l’asse Est – Ovest. Il principio di
funzionamento è stato ampiamente sviluppato nel Capitolo 3. Ai capi del sensore si misura, una
frequenza che potrà variare proporzionalmente al campo magnetico circostante .
In questa applicazione, la linearità non è una preoccupazione, poiché utilizzeremo il sensore per
rilevare la presenza di piccolissime anomalie del campo magnetico nell’asse Est-Ovest ossia a
circa 70KHz.
Presentazione progetto
Il progetto si compone di:
Una centralina base costruita su cassetto rack 19”
Una stazione remota predisposta per i tre assi X – Y – Z organizzata per la misura
differenziale sull’ asse Est – Ovest. Il sistema ridistribuisce le varie tensioni di alimentazione
in modo da ottenere il massimo isolamento con il resto dell’ apparecchiatura.
Un Gradiometro remoto per il rilievo di anomalie locali nel terreno. Il sistema ridistribuisce le
varie tensioni di alimentazione in modo da ottenere il massimo isolamento con il resto dell’
apparecchiatura.
Un software sviluppato in C in grado di colloquiare con la stazione base.
•
•
•
•
Centralina master
La centralina è un sistema di gestione di unità remote e può amministrare fino a tre magnetometri
Fluxgate con relativo controllo delle temperature dei sensori, è in grado di elaborare e fornire i dati
provenienti da 3 sensori in modo contemporaneo ( per esempio tre assi geomagnetici X,Y,Z).
E’ così composta:
Un integrato PIC primario modello: 16F877P dedicato alla lettura dei dati del Fluxgate
principale ed elaborazioni primarie, l’organizzazione dei colloqui con i PIC secondari, la
raccolta dei dati l’elaborazione e l’invio degli stessi al chip di comunicazione seriale; inoltre
gestisce la comunicazione con il display alfanumerico.
Due integrati PIC secondari modello: 16C84P per la lettura dei dati dei due Fluxgate
rimanenti e dei relativi sensori di temperatura. Questi due PIC colloquiano ininterrottamente
con il PIC primario 16F877P.
Un visualizzatore a display LCD modello CM16022 a 2 righe e 16 caratteri per la
visualizzazione dei dati in tempo reale.
Tre oscillatori a quarzo a 4 Mhz per il clock di riferimento dei PIC.
•
•
•
•
23
Ferdinando_Barbon
•
•
•
Visualizzatori a diodo Led per i vari controlli del sistema
pulsanti di settaggio e reset per controllo della centralina. (Vedi allegato 1)
Un circuito stampato a doppia faccia (Vedi allegati 2 e 2A)
Unita remota differenziale
L’ unita remota comprende:
un contenitore plastico per l’alloggiamento dei sensori e del gruppo alimentazione.
Due sensori fluxgate inseriti in due contenitori cilindrici regolabili nell’asse X e l’asse Z.
Un circuito stampato per la distribuzione di alimentazioni e dei dati.
Un sensore di temperatura digitale montato direttamente in contatto col sensore.
•
•
•
•
Software di comunicazione
Il software è stato sviluppato per funzionare su Pc IBM o compatibile.
Permette l’acquisizione dei dati e registra i dati in vari files con formato ASCII standard
Questi files in seguito possono essere letti da programmi appositi o anche fogli elettronici,
permettendo ulteriori elaborazioni.
Circuito elettrico
Come chiarito precedentemente l’apparecchiatura si compone di due parti separate. La prima,
chiamata centralina master, dove sono alloggiati i PIC (IC1, IC3, IC4), l’integrato di
comunicazione (IC2), il display (LCD1), le segnalazioni (L1, L2, L3, L4, L5, L8, L9) e id i
pulsanti (P1, P4, P5, P15); la seconda dove sono allogati i vari sensori (G1, FG2, FG3, T1).
Alimentazioni
Le due unità possono essere alimentate da una tensione esterna compresa tra 12V e 15V.
Nella centralina un circuito stabilizzatore UA7805 adeguatamente filtrato porta la tensione esterna
a 5V stabilizzati; nell’unità remota troviamo due integrati stabilizzatori, il primo UA7809 abbassa
la tensione e la porta a 9V viene poi ridotta ulteriormente a 5V; l’impiego di due integrati
stabilizzatori della serie UA78XXCT in cascata ci permette di per avere un maggiore isolamento
ed una ridotta dispersione di calore, i due circuito sono protetti da un diodo al silicio contro
l’inversione accidentale della polarità.
Procedimento
Il cuore del geomagnetometro è formato da un PIC 16F877P (IC1), questo dispositivo è costruito
in tecnologia CMOS, contiene una RAM da 368 Byte una EEPROM da 256 Byte, una memoria
FLASH da 8K, la frequenza di clock è generata da un quarzo esterno a 4 MHz (Q1)
Troviamo nel suo interno:
- Tre timer programmabili utilizzabili come contatori.
- Otto canali analogici d’ingresso.
- Un convertitore analogico digitale a 10 Bit.
- L’interfaccia per la porta seriale.
- Quattordici diversi segnali di interrupt.
La funzione del PIC 16F877P (IC1) che chiameremo “master” è quella di leggere i dati del
sensore FG1 (asse Z), come già specificato nelle caratteristiche del sensore di campo magnetico di
fluxgate FGM 03h; si tratta di un segnale che può variare da 30 kHz a 120 kHz però nel nostro
caso viene utilizzato il punto di maggiore linearità del sensore che si trova intorno alle frequenze
24
Ferdinando_Barbon
fra 60 e 70 kHz corrispondente al campo zero ossia intorno all’asse geomagnetico Est-Ovest; in
questo contesto il PIC funziona in modalità contatore di frequenza. Inoltre il master pilota altri
due PIC secondari “Slave” del tipo 16C84P (IC3, IC4), collegati anch’essi rispettivamente ai
sensori FG2 (asse X) e FG3 (asse Y) in modalità conteggio della frequenza.
Dopo avere premuto il pulsante R (reset) andiamo a selezionare i rispettivi sensori attraverso i tasti
S (select) e C (confirm); i led X, Y, Z (L1, L2, L3) ci indicano quali sono i sensori inclusi per la
misura. Se vogliamo avere sullo schermo una maggiore sensibilità ottenuta dalla sola variazione
differenziale dei valori assoluti ottenuti dai rispettivi fluxgate,dovremmo premere il pulsante O
(offset), la funzione ci verrà segnalata dal led relativo (L4). Il master comincia il ciclo di colloquio
azzerando i contatori, inizia ad interrogare il primo PIC secondario (IC3) che gli risponde con un
acknowledge ed invia i suoi dati. A questo punto il master interroga il secondo PIC secondario
(IC4) che esegue a sua volta l’acknowledge e l’operazione di trasferimento dei dati.
Una volta terminato il ciclo di trasferimento delle informazioni provenienti dai rispettivi slave, il
master inizia a richiedere i dati delle relative temperature fornite dai sensori digitali DS18B20 T1,
T2, T3) in contatto diretto con i fluxgate, sempre che siano stati inseriti nel sistema.
Questo dato è molto importante visto che questo tipo di sensore di campo magnetico è
particolarmente sensibile alla temperatura; queste informazioni ci serviranno in seguito per
compensare automaticamente i valori misurati dai fluxgate.
Questi scambi d’informazioni che avvengono tra il master (IC1), i due slaves (IC3, IC4) ed i
sensori di temperatura (T1, T2, T3) possono essere visualizzati attraverso degli indicatori a Led
(L1, L2, L3, L4, L5, L8, L9) posti sul frontale dell’apparecchiatura. Dopo aver ottenuto i dati
richiesti, i valori di frequenza acquisiti dai sensori vengono, attraverso un algoritmo matematico,
convertiti in nanoTesla, unità ufficialmente utilizzata per la lettura del campo geomagnetico.
Otteniamo così tre blocchi da 3 byte ciascuno per ogni misure del campo magnetico e 1 byte
ciascuno per ogni misura di temperatura.
A questo punto il master (IC1) invia le informazioni di valore dei rispettivi tre assi contenuti
nell’accumulatore ad un display LCD alfanumerico a 16 caratteri su 2 righe, modello CM16022A
(LCD1) che verranno così visualizzati direttamente in nanoTesla.
Infine, attraverso l’interfaccia MAX232 che utilizza il protocollo di comunicazione seriale RS232
(IC2), il master (IC1) invia le informazioni dei valori di campo magnetico e delle temperature, per
mezzo di un cavo seriale, ad una periferica di acquisizione esterna, un personal computer a 9600
bit/sec. Quest’ultimo attraverso un programma apposito scritto in linguaggio C acquisisce i dati
permettendoci di vedere sullo schermo gli andamenti temporali, in formato grafico a colori. Essi
vengono convertiti in un formato ASCII standard, e salvati nel sistema in più files separati,
nominati appositamente ad ogni apertura del programma. Questi dati possono, per esempio, essere
trattati dalla maggior parte dei programmi di analisi come per esempio l’ Excel ® della Microsoft.
In allegato è possibile osservare alcuni grafici ottenuti per mezzo di questa apparecchiatura.
Caratteristiche tecniche geomagnetometro
Tensione di alimentazione: da 12 a 15V
Corrente tipica (con 2 sensori): 100mA
Campo di temperatura 0 – 50° C
Segnale di uscita: RS232C
Tempo di acquisizione: da 1Sec a 4 Min.
Numero sensori: da 1 a 3 magnetici- da 1 a 3 temperatura
Banda passante: da DC a ~20kHz.
25
Ferdinando_Barbon
Capitolo 7
Schemi e grafici
Inizio
Configura sistema
1
2
Scelta fluxgate
3
Scelta
tempo
No
Offset
Sì
misura
misura
Elabora
offset
Elabora
Assoluto
Visualizza
LCD
Visualizza
LCD
Connetti
porta seriale
Connetti
porta seriale
RS232
RS232
Computer
Computer
Monitor
Grafico
Salvataggio
dati
Monitor
Grafico
Salvataggio
dati
26
Ferdinando_Barbon
Architettura Hardware
Schema a blocchi unità remota
FLUXGATE ASSE X
SENSORE
TEMPERATURA X
ALIMENTAZIONE
FLUXGATE ASSE Y
CIRCUITO DI ALIMENTAZIONE REMOTA
SENSORE
TEMPERATURA Y
SEGNALI
FLUXGATE ASSE Z
SENSORE
TEMPERATURA Z
27
Ferdinando_Barbon
28
Ferdinando_Barbon
Schema a blocchi unità master
ALIMENTAZIONE
PIC 3
PIC 2
PIC 1
CLOCK 3
CLOCK 2
CLOCK 1
DISPLAY LCD
COMANDO PER PROGRAMMAZIONE
SERIALE
SERIALE
29
Ferdinando_Barbon
30
Ferdinando_Barbon
Architettura interna del PIC 16F877
31
Ferdinando_Barbon
Datasheet Display LCD
DIMENSIONAL DATA
Item
CM16022A 16 char. x 2 line
Module
Dimension
Viewing Area
Character Size
Dot size
Weight
Measurement (W) x(H) x(T)
80.0 x 36.0 x 10.0 (Reflective)
Min.
-0.3
VDD - 0.3
-0.3
0
-20
mm
mm
mm
mm
g
62.2 x 17.9
2.95 x 5.55
0.55 x 0.65
38
ABSOLUTE MAXIMUM RATINGS
Item
Symbol Condition
Supply Voltage (Logic)
VDD - VSS
Supply Voltage(LCD)
VDD - VO
Ta = 25 C
Input Voltage
VI
Operating Temp.
Topr
Storage Temp.
Tstg
Unit
Max.
7
VDD + 0.3
VDD + 0.3
50
70
ELECTRICAL CHARACTERISTIC
Test
Item
Symbol
Min.
Typical
Condition
2.2
Input "High" Voltage VIH
Input "Low" Voltage
VIL
0
Output "High"
2.4
VOH -IOH=0.205mA
Voltage
Output "Low"
VOL
IOL=1.2mA
0
Voltage
VDD=5.0V
2.0
Supply Current
IDD
LED Forward Voltage
I=200mA
4.2
EL Operatinc condition
AC 100Vrms 400Hz
SINE WAVE
Unit
V
V
V
C
C
Max.
Unit
VDD
0.6
V
V
VDD
V
0.4
V
5.0
4.6
mA
V
32
Ferdinando_Barbon
Datasheet Display LCD
BLOCK DIAGRAM
PIN ASSIGNMENT
Pin Symbol Level
Function
1
VSS
GND (0V)
2 VDD
+5V
3
VO
LCD Drive Voltage
H-->Data Input
4
RS
H/L
L-->Instructions input
H : Data Read
5 R/W
H/L
L : Data Write
6
E
H,H-->L Enable Signal
7 DB0
H/L
8 DB1
H/L
9 DB2
H/L
10 DB3
H/L
Data Bus Input
11 DB4
H/L
12 DB5
H/L
13 DB6
H/L
14 DB7
H/L
15 LEDA
+5V
LED Power Supply
16 LEDK GND(0V)
33
Ferdinando_Barbon
Forma d’onda del segnale d’uscita del Fluxgate
34
Ferdinando_Barbon
1000
800
600
400
200
0
-200
-400
-600
-800
-1000
Campo magnetico
Sensore1 & sensore 2
Rilievi dal 29/05/2006 al 01/06/2006
Temperatura
sensore
Partenza e arrivo
automobile a 15
mt dai sensori
2 3 .2 3 .0 0
0 .2 3 .0 0
1 .2 3 .0 0
2 .2 3 .0 0
3 .2 3 .0 0
4 .2 3 .0 0
5 .2 3 .0 0
6 .2 3 .0 0
7 .2 3 .0 0
8 .2 3 .0 0
9 .2 3 .0 0
1 0 .2 3 .0 0
1 1 .2 3 .0 0
1 2 .2 3 .0 0
1 3 .2 3 .0 0
1 4 .2 3 .0 0
1 5 .2 3 .0 0
1 6 .2 3 .0 0
1 7 .2 3 .0 0
1 8 .2 3 .0 0
1 9 .2 3 .0 0
2 0 .2 3 .0 0
2 1 .2 3 .0 0
2 2 .2 3 .0 0
2 3 .2 3 .0 0
0 .2 3 .0 0
1 .2 3 .0 0
2 .2 3 .0 0
3 .2 3 .0 0
4 .2 3 .0 0
5 .2 3 .0 0
6 .2 3 .0 0
7 .2 3 .0 0
8 .2 3 .0 0
9 .2 3 .0 0
1 0 .2 3 .0 0
1 1 .2 3 .0 0
1 2 .2 3 .0 0
1 3 .2 3 .0 0
1 4 .2 3 .0 0
1 5 .2 3 .0 0
1 6 .2 3 .0 0
1 7 .2 3 .0 0
1 8 .2 3 .0 0
1 9 .2 3 .0 0
2 0 .2 3 .0 0
2 1 .2 3 .0 0
2 2 .2 3 .0 0
2 3 .2 3 .0 0
0 .2 3 .0 0
1 .2 3 .0 0
2 .2 3 .0 0
3 .2 3 .0 0
4 .2 3 .0 0
5 .2 3 .0 0
6 .2 3 .0 0
7 .2 3 .0 0
8 .2 3 .0 0
9 .2 3 .0 0
1 0 .2 3 .0 0
1 1 .2 3 .0 0
1 2 .2 3 .0 0
1 3 .2 3 .0 0
1 4 .2 3 .0 0
1 5 .2 3 .0 0
1 6 .2 3 .0 0
1 7 .2 3 .0 0
1 8 .2 3 .0 0
1 9 .2 3 .0 0
2 0 .2 3 .0 0
2 1 .2 3 .0 0
2 2 .2 3 .0 0
2 3 .2 3 .0 0
0 .2 3 .0 0
35
Ferdinando_Barbon
1000
800
600
400
200
0
-200
-400
-600
-800
-1000
8 .5 9 .0 0
1 2 .5 9 .0 0
2 0 .5 9 .0 0
0 .5 9 .0 0
4 .5 9 .0 0
Andamento
del campo
1 6 .5 9 .0 0
8 .5 9 .0 0
1 2 .5 9 .0 0
1 6 .5 9 .0 0
2 0 .5 9 .0 0
Rilievi dal 02/06/2006 al 08/06/2006
0 .5 9 .0 0
4 .5 9 .0 0
8 .5 9 .0 0
1 6 .5 9 .0 0
2 0 .5 9 .0 0
Disturbo su
sensore
1 2 .5 9 .0 0
0 .5 9 .0 0
8 .5 9 .0 0
1 2 .5 9 .0 0
1 6 .5 9 .0 0
Partenza e arrivo
automobile a 15
mt dai sensori
4 .5 9 .0 0
2 0 .5 9 .0 0
0 .5 9 .0 0
4 .5 9 .0 0
8 .5 9 .0 0
1 2 .5 9 .0 0
1 6 .5 9 .0 0
2 0 .5 9 .0 0
0 .5 9 .0 0
4 .5 9 .0 0
8 .5 9 .0 0
1 2 .5 9 .0 0
1 6 .5 9 .0 0
2 0 .5 9 .0 0
0 .5 9 .0 0
36
Ferdinando_Barbon
Capitolo 8
Programmi
Programma di raccolta dati su PC
//velocita' trasmissione 9600 bits/sec
//per uscire premere ESC
//il programma riceve i dati e li elabora ( non li elabora il PIC//
//LA TEMPERATURA VIENE VISUALIZZATA E SALVATA SU FILE//
# include <stdlib.h>
# include <graphics.h>
# include <iostream.h>
# include <process.h>
# include <conio.h>
# include <math.h>
# include <string.h>
# include <stdio.h>
# include <dos.h>
#include <bios.h>
#include <stdlib.h>
void autorilevamento(void);
void imposta(void);
int ricevi(void);
void informa(void);
int fine (void);
void quadro(void);
void stampafx (void);
void stampafy (void);
void stampafz (void);
void stampatemp (void);
void converti(float conv);
int tasto,x,y,x1,y1;
int xx,xy,xx1,xy1,yx,yy,yx1,yy1,zx,zy,zx1,zy1,nx,nx1,ny1;
char filex[14000];
char filey[14000];
char filez[14000];
char filet[3000];
char u,d,c,m,dm,flag;
char dati[10]={'0','1','2','3','4','5','6','7','8','9'};
FILE *pfilex;
FILE *pfiley;
FILE *pfilez;
FILE *pfilet;
double dato1,dato,f,f1,tt,ntx,nty,ntz,ntd,nto,vvoffset,ass;
double ntxo,ntyo,ntzo;
int voffset,mem1,mem2,mem3,un,deca,cent,migl,migld,pippo;
int fxl,fxh,fxhh,fyl,fyh,fyhh,fzl,fzh,fzhh,temp;
int mfxl,mfxh,mfxhh,mfyl,mfyh,mfyhh,mfzl,mfzh,mfzhh;
37
Ferdinando_Barbon
char stringa[200],a;
void main(void)
{
flag=0;
//segnala se memorizzare dati su file
cout<<" Si desiderano aprire i file per memorizzare x,y,z e temperatura ? (s/n)\n ";
a=getch();
if(a=='s')
{
flag=1;
//segnala che i dati devono essere memorizzati//
cout<<" \nNome del filex su cui memorizzare i dati ricevuti: ";
gets(filex);
//apri file//
if((pfilex = fopen(filex,"wt")) !=NULL)
goto avanti;
else
{
cout<<"Impossibile aprire file \n";
fine();
}
avanti:
cout<<" \nNome del filey su cui memorizzare i dati ricevuti: ";
gets(filey);
//apri file//
if((pfiley = fopen(filey,"wt")) !=NULL)
goto avanti1;
else
{
cout<<"Impossibile aprire file \n";
fine();
}
avanti1:
cout<<" \nNome del filez su cui memorizzare i dati ricevuti: ";
gets(filez);
//apri file//
if((pfilez = fopen(filez,"wt")) !=NULL)
goto avanti2;
else
{
cout<<"Impossibile aprire file \n";
fine();
}
avanti2:
cout<<" \nNome del file su cui memorizzare temperatura: ";
gets(filet);
//apri file//
if((pfilet = fopen(filet,"wt")) !=NULL)
goto avanti3;
else
{
cout<<"Impossibile aprire file \n";
fine();
}
38
Ferdinando_Barbon
}
avanti3:
bioscom(0,(0xe0|0x03|0x00|0x00),0);
//9600baud,8bits dati,1bit stop,no parita'//
informa();
//chiama funzioni che inizializzano//
autorilevamento();
imposta();
dato=0;
//inizializza alcune variabili//
pippo=0;
nto=0;
inizio:
setcolor(15);
quadro();
moveto(0,480); //inizializza variabili per la grafica//
x=20;
xx=20;
xx1=20;
xy1=480;
yx=20;
yx1=20;
yy1=480;
zx=20;
zx1=20;
zy1=480;
nx1=20;
ny1=480;
nx=20;
loop:
voffset=ricevi();
//ricevi se porre nuovo offset //
fxl=ricevi();
//ricevi fx //
fxh=ricevi();
fxhh=ricevi();
fyl=ricevi();
//ricevi fy //
fyh=ricevi();
fyhh=ricevi();
fzl=ricevi();
//ricevi fz //
fzh=ricevi();
fzhh=ricevi();
temp=ricevi();
//ricevi temperatura//
stampafx( );
//stampa tre punti//
stampafy( );
stampafz( );
stampatemp();
//memorizza temperatura//
if(voffset!=0)
//vedi se impostare nuovo offset//
{
pippo=1;
ntxo=ntx;
ntyo=nty;
ntzo=ntz;
}
if(pippo!=0)
{
39
Ferdinando_Barbon
x++;
}
if(x!=633) //controlla se finita schermata//
goto loop;
else
goto inizio;
}
//
*************************AUTORILEVAMENTO*****************************
void autorilevamento(void)
{
int g_driver, g_mode, g_error;
detectgraph(&g_driver,&g_mode);
if (g_driver < 0)
{
cout<<"Non ho trovato hardware grafico\n";
exit(1);
}
initgraph(&g_driver,&g_mode,"");
g_error=graphresult();
if (g_error <0)
{
cout<<"Errore di initgraph: "<<grapherrormsg(g_error)<<"\n";
exit(1);
}
}
//
***************************** IMPOSTA *******************************
void imposta (void)
{
setbkcolor(1);
setcolor(15);
setfillstyle(1,9);
bar(3,13,636,480);
rectangle(0,10,639,479);
setviewport(3,12,636,478,0);
}
int fine(void)
{
fclose(pfilex);
fclose(pfiley);
fclose(pfilez);
closegraph();
exit(1);
return(0);
}
//**************************************
int ricevi(void)
{
int in,stato;
ciclo:
40
Ferdinando_Barbon
tasto=kbhit();
if (tasto==0)
tasto=kbhit();
if (tasto!=0)
{
tasto=getche();
if(tasto==27)
fine();
}
stato=bioscom(3,0,0);
//test su bit 8 per controllare se dato in
//ricezione pronto//
stato=stato&0x100;
if(stato!=0)
{
in=bioscom(2,0,0); //leggi dato//
return(in);
}
goto ciclo;
}
//*****************************************
void informa (void)
{
int tasto;
cout<<"
***** Per uscire premere ESC *****"<<"\n\n\n\n";
cout<<"premere un tasto per continuare.................";
cicla:
tasto=kbhit();
if (tasto==0)
goto cicla;
return;
}
//*****************************************
void stampafx(void)
{
setcolor(12);
un=fxl&0x000f;
//calcola fx
deca=fxl&0x00f0;
deca=deca>>4;
cent=fxh&0x000f;
migl=fxh&0x00f0;
migl=migl>>4;
migld=fxhh&0x000f;
f=float(un)+16*float(deca)+256*float(cent)+4096*float(migl)+65536*float(migld);
if(f==0)
//se f=0 esci altrimenti overflow e blocco programma//
return;
tt=1/f;
//calcola periodo T
ntx=3571000000*tt-50890; //calcola nT
ltoa((long)ntx,stringa,10); //converti f in una stringa e visualizza
bar(125,30,190,37);
outtextxy(125,30,stringa);
41
Ferdinando_Barbon
outtextxy(1,30," canale x (nT) ");
if(pippo!=0) //controlla se stampare punto//
{
moveto(xx1,xy1);
lineto(x,-int(ntxo-ntx)/5+240);
xy1=-int(ntxo-ntx)/5+240;
xx1=x-1;
}
if(flag!=0)
{
converti(abs(ntx)); //converti in bcd//
if(ntx<0) //vedi se valore positivo o negativo//
fputc('-',pfilex);
else
fputc('+',pfilex);
fputc(dati[dm],pfilex); //memorizza su file//
fputc(dati[m],pfilex);
fputc(dati[c],pfilex);
fputc(dati[d],pfilex);
fputc(dati[u],pfilex);
fputc(0x0d,pfilex); //memorizza ritorno a capo
}
return;
}
//*****************************************
void stampafy(void)
{
setcolor(10);
un=fyl&0x000f;
//calcola fy//
deca=fyl&0x00f0;
deca=deca>>4;
cent=fyh&0x000f;
migl=fyh&0x00f0;
migl=migl>>4;
migld=fyhh&0x000f;
f=float(un)+16*float(deca)+256*float(cent)+4096*float(migl)+65536*float(migld);
if(f==0)
//se f=0 esci altrimenti overflow e blocco programma//
return;
tt=1/f;
//calcola T
nty=3571000000*tt-50890; //calcola nT
ltoa((long)nty,stringa,10); //converti f in una stringa e visualizza
bar(325,30,400,37);
outtextxy(325,30,stringa);
outtextxy(200,30," canale y (nT)");
if(pippo!=0)
{
moveto(yx1,yy1);
lineto(x,-int(ntyo-nty)/5+240);
yy1=-int(ntyo-nty)/5+240;
yx1=x-1;
42
Ferdinando_Barbon
}
if(flag!=0)
{
converti(abs(nty)); //converti in bcd//
if(nty<0) //vedi se valore positivo o negativo//
fputc('-',pfiley);
else
fputc('+',pfiley);
fputc(dati[dm],pfiley); //memorizza su file//
fputc(dati[m],pfiley);
fputc(dati[c],pfiley);
fputc(dati[d],pfiley);
fputc(dati[u],pfiley);
fputc(0x0d,pfiley); //memorizza ritorno a capo
}
return;
}
//*****************************************
void stampafz(void)
{
setcolor(15);
un=fzl&0x000f;
//calcola fz
deca=fzl&0x00f0;
deca=deca>>4;
cent=fzh&0x000f;
migl=fzh&0x00f0;
migl=migl>>4;
migld=fzhh&0x000f;
f=float(un)+16*float(deca)+256*float(cent)+4096*float(migl)+65536*float(migld);
if(f==0)
//se f=0 esci altrimenti overflow e blocco programma//
return;
tt=1/f;
//calcola T
ntz=3571000000*tt-50890; //calcola nT
ltoa((long)ntz,stringa,10); //converti f in una stringa e visualizza
bar(525,30,600,37);
outtextxy(525,30,stringa);
outtextxy(400,30," canale z (nT) ");
if(pippo!=0)
{
moveto(zx1,zy1);
lineto(x,-int(ntzo-ntz)/5+240);
zy1=-int(ntzo-ntz)/5+240;
zx1=x-1;
}
if(flag!=0)
{
converti(abs(ntz)); //converti in bcd//
if(ntz<0) //vedi se valore positivo o negativo//
fputc('-',pfilez);
else
43
Ferdinando_Barbon
fputc('+',pfilez);
fputc(dati[dm],pfilez); //memorizza su file//
fputc(dati[m],pfilez);
fputc(dati[c],pfilez);
fputc(dati[d],pfilez);
fputc(dati[u],pfilez);
fputc(0x0d,pfilez); //memorizza ritorno a capo
}
return;
}
//***************************************** memorizza temperatura
void stampatemp(void)
{
ltoa((long)temp,stringa,10); //converti T in una stringa e visualizza
bar(300,40,350,47);
outtextxy(300,40,stringa);
outtextxy(150,40,"Temp.(øC):");
if(flag!=0)
{
converti(float(temp)); //converti in bcd//
fputc(dati[d],pfilet); //memorizza//
fputc(dati[u],pfilet);
fputc(0x0d,pfilet); //memorizza ritorno a capo
}
return;
}
//*****************************************
void quadro (void)
{
bar(0,0,633,464);
for(x=20;x<=633;x=x+3)
{
putpixel(x,240,15);
}
for(x=25;x<=633;x=x+3)
{
putpixel(x,90,15);
}
for(x=25;x<=633;x=x+3)
{
putpixel(x,150,15);
}
for(x=25;x<=633;x=x+3)
{
putpixel(x,210,15);
}
for(x=25;x<=633;x=x+3)
{
44
Ferdinando_Barbon
putpixel(x,270,15);
}
for(x=25;x<=633;x=x+3)
{
putpixel(x,330,15);
}
for(x=25;x<=633;x=x+3)
{
putpixel(x,390,15);
}
for(x=25;x<=633;x=x+3)
{
putpixel(x,420,15);
}
outtextxy(0,236,"0");
for(x=20;x<=633;x=x+3)
{
putpixel(x,120,15);
}
outtextxy(0,55,"900");
for(x=25;x<=633;x=x+3)
{
putpixel(x,60,15);
}
outtextxy(0,116,"600");
for(x=20;x<=633;x=x+3)
{
putpixel(x,360,15);
}
outtextxy(0,356,"-600");
for(x=20;x<=633;x=x+3)
{
putpixel(x,300,15);
}
outtextxy(0,296,"-300");
for(x=20;x<=633;x=x+3)
{
putpixel(x,180,15);
}
outtextxy(0,176,"300");
outtextxy(0,416,"-900");
outtextxy(1,10,"
//outtextxy(1,10,"offset
for(y=0;y<=450;y=y+3)
{
putpixel(20,y,15);
}
PREMERE ESC PER USCIRE ");
nT
PREMERE ESC PER USCIRE ");
45
Ferdinando_Barbon
outtextxy(18,458,"0");
for(y=0;y<=440;y=y+3)
{
putpixel(40,y,15);
}
outtextxy(35,445,"1");
for(y=0;y<=450;y=y+3)
{
putpixel(60,y,15);
}
outtextxy(50,458,"2");
for(y=0;y<=440;y=y+3)
{
putpixel(80,y,15);
}
outtextxy(75,445,"3");
for(y=0;y<=450;y=y+3)
{
putpixel(100,y,15);
}
outtextxy(90,458,"4");
for(y=0;y<=440;y=y+3)
{
putpixel(120,y,15);
}
outtextxy(110,445,"5");
for(y=0;y<=450;y=y+3)
{
putpixel(140,y,15);
}
outtextxy(130,458,"6");
for(y=0;y<=440;y=y+3)
{
putpixel(160,y,15);
}
outtextxy(150,445,"7");
for(y=0;y<=450;y=y+3)
{
putpixel(180,y,15);
}
outtextxy(170,458,"8");
for(y=0;y<=440;y=y+3)
{
putpixel(200,y,15);
}
outtextxy(190,445,"9");
for(y=0;y<=450;y=y+3)
{
putpixel(220,y,15);
}
46
Ferdinando_Barbon
outtextxy(210,458,"10");
for(y=0;y<=440;y=y+3)
{
putpixel(240,y,15);
}
outtextxy(230,445,"11");
for(y=0;y<=450;y=y+3)
{
putpixel(260,y,15);
}
outtextxy(250,458,"12");
for(y=0;y<=440;y=y+3)
{
putpixel(280,y,15);
}
outtextxy(270,445,"13");
for(y=0;y<=450;y=y+3)
{
putpixel(300,y,15);
}
outtextxy(290,458,"14");
for(y=0;y<=440;y=y+3)
{
putpixel(320,y,15);
}
outtextxy(310,445,"15");
for(y=0;y<=450;y=y+3)
{
putpixel(340,y,15);
}
outtextxy(330,458,"16");
for(y=0;y<=440;y=y+3)
{
putpixel(360,y,15);
}
outtextxy(350,445,"17");
for(y=0;y<=450;y=y+3)
{
putpixel(380,y,15);
}
outtextxy(370,458,"18");
for(y=0;y<=440;y=y+3)
{
putpixel(400,y,15);
}
outtextxy(390,445,"19");
for(y=0;y<=450;y=y+3)
{
putpixel(420,y,15);
}
outtextxy(410,458,"20");
47
Ferdinando_Barbon
for(y=0;y<=440;y=y+3)
{
putpixel(440,y,15);
}
outtextxy(430,445,"21");
for(y=0;y<=450;y=y+3)
{
putpixel(460,y,15);
}
outtextxy(450,458,"22");
for(y=0;y<=440;y=y+3)
{
putpixel(480,y,15);
}
outtextxy(470,445,"23");
for(y=0;y<=450;y=y+3)
{
putpixel(500,y,15);
}
outtextxy(490,458,"24");
for(y=0;y<=440;y=y+3)
{
putpixel(520,y,15);
}
outtextxy(510,445,"25");
for(y=0;y<=450;y=y+3)
{
putpixel(540,y,15);
}
outtextxy(530,458,"26");
for(y=0;y<=440;y=y+3)
{
putpixel(560,y,15);
}
outtextxy(550,445,"27");
for(y=0;y<=450;y=y+3)
{
putpixel(580,y,15);
}
outtextxy(570,458,"28");
for(y=0;y<=430;y=y+3)
{
putpixel(600,y,15);
}
outtextxy(590,445,"29");
for(y=0;y<=430;y=y+3)
{
putpixel(620,y,15);
}
outtextxy(610,458,"30");
return;
48
Ferdinando_Barbon
}
//***********converti numero float in BCD
void converti (float conv)
{
u=0;
d=0;
c=0;
m=0;
dm=0;
while(conv>=10000)
{
conv=conv-10000;
dm++;
}
while(conv>=1000)
{
conv=conv-1000;
m++;
}
while(conv>=100)
{
conv=conv-100;
c++;
}
while(conv>=10)
{
conv=conv-10;
d++;
}
u=conv;
return;
}
49
Ferdinando_Barbon
Software per gestione PIC16C84P
MPASM 02.61 Released
LOC OBJECT CODE
VALUE
MAGN84.ASM 3-20-2006 17:45:11
PAGE 1
LINE SOURCE TEXT
00001 ;************************** MAGNETOMETRO*******************************
00002
00003 ;********************* LOGICA DI FUNZIONAMENTO*************************
00004 ;***** QUANDO COMAND (PIN RB4) SI PORTA ALTO PARTE LA MISURA***********
00005 ;***** LA MISURA DURA FINCHE' COMMAND E' ALTO (1 SECONDO) **
00006 ;**** TERMINATA LA MISURA SI ATTENDE CHE SELECT (PIN RB3) SI PORTI A 1*
00007 ;**** LA TRASMISSIONE INIZIA PORTANDO ACK (PIN RB2) ALTO PER 2 MS
**
00008 ;**** I DATI (16 BIT) VENGONO TRASMESSI ATTRAVERSO ACK CON BIT TIME 2MS**
00009
00010 #include <p16f84.inc>
;DIRETTIVA DI ASSEMBLAGGIO
00001
LIST
00002 ; P16F84.INC Standard Header File, Version 2.00 Microchip Technology, Inc.
Message[301]: MESSAGE: (Processor-header file mismatch. Verify selected processor.)
00136
LIST
00011
0000000C
00012 MS
EQU 0X0C
;DICHIARA LE LOCAZIONI DI RAM UTILIZZATE
0000000D
00013 DS EQU 0X0D
0000000E
00014 SEC EQU 0X0E
0000000F
00015 SAVE_W EQU 0X0F
00000010
00016 SAVE_S EQU 0X10
00000011
00017 DATOL EQU 0X11
00000012
00018 DATOH EQU 0X12
00000013
00019 DATOHH EQU 0X13
00000014
00020 FLAG EQU 0X14
00021
0000
00022
ORG 0
;VETTORE DI RESET
0000 2805
00023
GOTO MAIN
0004
00024
ORG 4
;VETTORE DI INTERRUPT
0004 28A8
00025
GOTO INTERRUPT
00026
0005 1683
00027 MAIN BSF STATUS,5
;SELEZIONA BANCO1 PER CONFIGURARE PIC
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0006 1106
00028
BCF TRISB,2
;RB2 (ACK) COME USCITA
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0007 1086
00029
BCF TRISB,1
;RB1 (LED) COME OUT
0008 3081
00030
MOVLW B'10000001' ;DISABILITA PULL UP PORTB - SELEZIONA CLOCK PER TMR0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0009 0081
00031
MOVWF OPTION_REG
;ASSEGNA PRESCALE A TMR0 - CONFIGURA PRESCALER
000A 1283
00032
BCF STATUS,5
;BANCO0
000B 1106
00033
BCF PORTB,2
;ACK BASSO
000C 1486
00034
BSF PORTB,1
;LED ACCESO PER 1 SECONDO
000D 0194
00035
CLRF FLAG
;SEGNALA INTERRUPT MISURA TEMPO
000E 30A0
00036
MOVLW B'10100000' ;ABILITA INTERRUPT
000F 008B
00037
MOVWF INTCON
0010 2095
00038
CALL SEC1
0011 1086
00039
BCF PORTB,1
;LED SPENTO
0012 138B
00040 LOOP BCF INTCON,7
;DISABILITA INTERRUPT
0013 1E06
00041 LP BTFSS PORTB,4
;CONTROLLA SE COMMAND ALTO
0014 2813
00042
GOTO LP
0015 0192
00043
CLRF DATOH
;AZZERA MISURA
0016 0193
00044
CLRF DATOHH
0017 0181
00045
CLRF TMR0
0018 3001
00046
MOVLW 1
;INTERRUPT DA MAGNETOMETRO
50
Ferdinando_Barbon
MPASM 02.61 Released
LOC OBJECT CODE
VALUE
MAGN84.ASM 3-20-2006 17:45:11
PAGE 2
LINE SOURCE TEXT
0019 0094
00047
MOVWF FLAG
001A 1683
00048
BSF STATUS,5
;SELEZIONA BANCO1 PER CONFIGURARE OPTION
001B 30AF
00049
MOVLW B'10101111' ;DISABILITA PULL UP PORTB - SELEZIONA CLOCK DA RA4 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
001C 0081
00050
MOVWF OPTION_REG
001D 1283
00051
BCF STATUS,5
;BANCO0
001E 30A0
00052
MOVLW B'10100000' ;ABILITA INTERRUPT
001F 008B
00053
MOVWF INTCON
0020 1A06
00054 LP1 BTFSC PORTB,4
;CONTROLLA SE COMMAND BASSO (TIME OUT)
0021 2820
00055
GOTO LP1
0022 138B
00056
BCF INTCON,7
;DISABILITA INTERRUPT
0023 0801
00057
MOVF TMR0,0
;SALVA PARTE BASSA MISURA
0024 0091
00058
MOVWF DATOL
0025 1683
00059
BSF STATUS,5
;SELEZIONA BANCO1 PER CONFIGURARE OPTION
0026 3081
00060
MOVLW B'10000001' ;DISABILITA PULL UP PORTB - SELEZIONA CLOCK PER TMR0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0027 0081
00061
MOVWF OPTION_REG
;ASSEGNA PRESCALE A TMR0 - CONFIGURA PRESCALER
0028 1283
00062
BCF STATUS,5
;BANCO0
0029 0194
00063
CLRF FLAG
;SEGNALA INTERRUPT MISURA TEMPO
002A 30A0
00064
MOVLW B'10100000' ;ABILITA INTERRUPT
002B 008B
00065
MOVWF INTCON
002C 1D86
00066 LP2 BTFSS PORTB,3
;CONTROLLA SE SELECT E' ALTO
002D 282C
00067
GOTO LP2
002E 1486
00068
BSF PORTB,1
;LED ACCESO
002F 3009
00069
MOVLW 9
;SINCRONIZZA CLOCK
0030 0081
00070
MOVWF TMR0
0031 209C
00071
CALL UNO
;PORTA ACK ALTO PER 2 MS
0032 2038
00072
CALL DATL
;INVIA DATOL
0033 2061
00073
CALL DATH
;INVIA DATOH
0034 208A
00074
CALL DATHH
;INVIA DATOHH
0035 1106
00075
BCF PORTB,2
;ACK BASSO
0036 1086
00076
BCF PORTB,1
;LED SPENTO
0037 2812
00077
GOTO LOOP
00078
00079 ;********** INVIA DATOL
0038 1811
00080 DATL BTFSC DATOL,0
0039 283C
00081
GOTO LP3
003A 209F
00082
CALL ZERO
003B 283D
00083
GOTO LP4
003C 209C
00084 LP3 CALL UNO
003D 1891
00085 LP4 BTFSC DATOL,1
003E 2841
00086
GOTO LP5
003F 209F
00087
CALL ZERO
0040 2842
00088
GOTO LP6
0041 209C
00089 LP5 CALL UNO
0042 1911
00090 LP6 BTFSC DATOL,2
0043 2846
00091
GOTO LP7
0044 209F
00092
CALL ZERO
0045 2847
00093
GOTO LP8
0046 209C
00094 LP7 CALL UNO
0047 1991
00095 LP8 BTFSC DATOL,3
0048 284B
00096
GOTO LP9
0049 209F
00097
CALL ZERO
51
Ferdinando_Barbon
MPASM 02.61 Released
LOC OBJECT CODE
VALUE
004A
004B
004C
004D
004E
004F
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
005A
005B
005C
005D
005E
005F
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
006A
006B
006C
006D
006E
006F
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
007A
007B
007C
MAGN84.ASM 3-20-2006 17:45:11
PAGE 3
LINE SOURCE TEXT
284C
209C
1A11
2850
209F
2851
209C
1A91
2855
209F
2856
209C
1B11
285A
209F
285B
209C
1B91
285F
209F
2860
209C
0008
00098
GOTO LP10
00099 LP9 CALL UNO
00100 LP10 BTFSC DATOL,4
00101
GOTO LP11
00102
CALL ZERO
00103
GOTO LP12
00104 LP11 CALL UNO
00105 LP12 BTFSC DATOL,5
00106
GOTO LP13
00107
CALL ZERO
00108
GOTO LP14
00109 LP13 CALL UNO
00110 LP14 BTFSC DATOL,6
00111
GOTO LP15
00112
CALL ZERO
00113
GOTO LP16
00114 LP15 CALL UNO
00115 LP16 BTFSC DATOL,7
00116
GOTO LP17
00117
CALL ZERO
00118
GOTO LP18
00119 LP17 CALL UNO
00120 LP18 RETURN
00121
00122 ;********** INVIA DATOH
1812
00123 DATH BTFSC DATOH,0
2865
00124
GOTO LL3
209F
00125
CALL ZERO
2866
00126
GOTO LL4
209C
00127 LL3 CALL UNO
1892
00128 LL4 BTFSC DATOH,1
286A
00129
GOTO LL5
209F
00130
CALL ZERO
286B
00131
GOTO LL6
209C
00132 LL5 CALL UNO
1912
00133 LL6 BTFSC DATOH,2
286F
00134
GOTO LL7
209F
00135
CALL ZERO
2870
00136
GOTO LL8
209C
00137 LL7 CALL UNO
1992
00138 LL8 BTFSC DATOH,3
2874
00139
GOTO LL9
209F
00140
CALL ZERO
2875
00141
GOTO LL10
209C
00142 LL9 CALL UNO
1A12
00143 LL10 BTFSC DATOH,4
2879
00144
GOTO LL11
209F
00145
CALL ZERO
287A
00146
GOTO LL12
209C
00147 LL11 CALL UNO
1A92
00148 LL12 BTFSC DATOH,5
287E
00149
GOTO LL13
209F
00150
CALL ZERO
52
Ferdinando_Barbon
MPASM 02.61 Released
LOC OBJECT CODE
VALUE
007D
007E
007F
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
MAGN84.ASM 3-20-2006 17:45:11
PAGE 4
LINE SOURCE TEXT
287F
209C
1B12
2883
209F
2884
209C
1B92
2888
209F
2889
209C
0008
00151
GOTO LL14
00152 LL13 CALL UNO
00153 LL14 BTFSC DATOH,6
00154
GOTO LL15
00155
CALL ZERO
00156
GOTO LL16
00157 LL15 CALL UNO
00158 LL16 BTFSC DATOH,7
00159
GOTO LL17
00160
CALL ZERO
00161
GOTO LL18
00162 LL17 CALL UNO
00163 LL18 RETURN
00164
00165 ;********** INVIA DATOHH (2 BIT)
008A 1813
00166 DATHH BTFSC DATOHH,0
008B 288E
00167
GOTO LA3
008C 209F
00168
CALL ZERO
008D 288F
00169
GOTO LA4
008E 209C
00170 LA3 CALL UNO
008F 1893
00171 LA4 BTFSC DATOHH,1
0090 2893
00172
GOTO LA5
0091 209F
00173
CALL ZERO
0092 2894
00174
GOTO LA6
0093 209C
00175 LA5 CALL UNO
0094 0008
00176 LA6 RETURN
00177
00178 ;********** RITARDO DI 1 SECONDO
0095 018C
00179 SEC1 CLRF MS
0096 018D
00180
CLRF DS
0097 018E
00181
CLRF SEC
Message[305]: Using default destination of 1 (file).
0098 088E
00182 RSEC MOVF SEC
0099 1903
00183
BTFSC STATUS,2
009A 2898
00184
GOTO RSEC
009B 0008
00185
RETURN
00186
00187 ;********** INVIA 1
009C 1506
00188 UNO BSF PORTB,2
009D 20A2
00189
CALL MS2
009E 0008
00190
RETURN
00191
00192 ;********** INVIA 0
009F 1106
00193 ZERO BCF PORTB,2
00A0 20A2
00194
CALL MS2
00A1 0008
00195
RETURN
00196
00197 ;********** RITARDO DI 2 MS
00A2 018C
00198 MS2 CLRF MS
00A3 3002
00199 MS22 MOVLW 2
00A4 020C
00200
SUBWF MS,0
00A5 1D03
00201
BTFSS STATUS,2
00A6 28A3
00202
GOTO MS22
53
Ferdinando_Barbon
MPASM 02.61 Released
LOC OBJECT CODE
VALUE
MAGN84.ASM 3-20-2006 17:45:11
PAGE 5
LINE SOURCE TEXT
00A7 0008
00203
RETURN
00204
00205 ;********** RISPOSTA AD INTERRUPT
00A8
00206 INTERRUPT
00A8 008F
00207
MOVWF SAVE_W
;salva contesto ( accumulatore e registro di stato )
00A9 0E03
00208
SWAPF STATUS,0
00AA 0090
00209
MOVWF SAVE_S
Message[305]: Using default destination of 1 (file).
00AB 0894
00210
MOVF FLAG
;CONTROLLA SE MISURARE TEMPO O IMPULSI
00AC 1D03
00211
BTFSS STATUS,2
00AD 28C3
00212
GOTO PULS
00AE 3009
00213
MOVLW 9
;reinizializza TMR0
00AF 0081
00214
MOVWF TMR0
Message[305]: Using default destination of 1 (file).
00B0 0A8C
00215
INCF MS
;aggiorna millisecondi
00B1 3064
00216
MOVLW D'100'
00B2 020C
00217
SUBWF MS,0
00B3 1D03
00218
BTFSS STATUS,2
00B4 28BD
00219
GOTO EXIT
00B5 018C
00220
CLRF MS
Message[305]: Using default destination of 1 (file).
00B6 0A8D
00221
INCF DS
;aggiorna decimi di secondo
00B7 300A
00222
MOVLW D'10'
00B8 020D
00223
SUBWF DS,0
00B9 1D03
00224
BTFSS STATUS,2
00BA 28BD
00225
GOTO EXIT
00BB 018D
00226
CLRF DS
Message[305]: Using default destination of 1 (file).
00BC 0A8E
00227
INCF SEC
;aggiorna secondi
00BD 110B
00228 EXIT BCF INTCON,2
;Azzera flag interrupt
00BE 0E10
00229
SWAPF SAVE_S,0
;Ripristina contesto
00BF 0083
00230
MOVWF STATUS
Message[305]: Using default destination of 1 (file).
00C0 0E8F
00231
SWAPF SAVE_W
00C1 0E0F
00232
SWAPF SAVE_W,0
00C2 0009
00233
RETFIE
Message[305]: Using default destination of 1 (file).
00C3 0A92
00234 PULS INCF DATOH
;OGNI 256 IMPULSI DATOH INCREMENTA DI 1
Message[305]: Using default destination of 1 (file).
00C4 0892
00235
MOVF DATOH
;CONTROLLA SE DATOH VA IN OVERFLOW
00C5 1D03
00236
BTFSS STATUS,2
00C6 28BD
00237
GOTO EXIT
Message[305]: Using default destination of 1 (file).
00C7 0A93
00238
INCF DATOHH
;AGGIORNA CONTEGGIO
00C8 28BD
00239
GOTO EXIT
00240
END
54
Ferdinando_Barbon
MPASM 02.61 Released
SYMBOL TABLE
LABEL
C
DATH
DATHH
DATL
DATOH
DATOHH
DATOL
DC
DS
EEADR
EECON1
EECON2
EEDATA
EEIE
EEIF
EXIT
F
FLAG
FSR
GIE
INDF
INTCON
INTE
INTEDG
INTERRUPT
INTF
IRP
LA3
LA4
LA5
LA6
LL10
LL11
LL12
LL13
LL14
LL15
LL16
LL17
LL18
LL3
LL4
LL5
LL6
LL7
LL8
LL9
LOOP
LP
LP1
LP10
LP11
LP12
MAGN84.ASM 3-20-2006 17:45:11
PAGE 6
VALUE
00000000
00000061
0000008A
00000038
00000012
00000013
00000011
00000001
0000000D
00000009
00000088
00000089
00000008
00000006
00000004
000000BD
00000001
00000014
00000004
00000007
00000000
0000000B
00000004
00000006
000000A8
00000001
00000007
0000008E
0000008F
00000093
00000094
00000075
00000079
0000007A
0000007E
0000007F
00000083
00000084
00000088
00000089
00000065
00000066
0000006A
0000006B
0000006F
00000070
00000074
00000012
00000013
00000020
0000004C
00000050
00000051
55
Ferdinando_Barbon
MPASM 02.61 Released
SYMBOL TABLE
LABEL
LP13
LP14
LP15
LP16
LP17
LP18
LP2
LP3
LP4
LP5
LP6
LP7
LP8
LP9
MAIN
MS
MS2
MS22
NOT_PD
NOT_RBPU
NOT_TO
OPTION_REG
PCL
PCLATH
PORTA
PORTB
PS0
PS1
PS2
PSA
PULS
RBIE
RBIF
RD
RP0
RP1
RSEC
SAVE_S
SAVE_W
SEC
SEC1
STATUS
T0CS
T0IE
T0IF
T0SE
TMR0
TRISA
TRISB
UNO
W
WR
WREN
MAGN84.ASM 3-20-2006 17:45:11
PAGE 7
VALUE
00000055
00000056
0000005A
0000005B
0000005F
00000060
0000002C
0000003C
0000003D
00000041
00000042
00000046
00000047
0000004B
00000005
0000000C
000000A2
000000A3
00000003
00000007
00000004
00000081
00000002
0000000A
00000005
00000006
00000000
00000001
00000002
00000003
000000C3
00000003
00000000
00000000
00000005
00000006
00000098
00000010
0000000F
0000000E
00000095
00000003
00000005
00000005
00000002
00000004
00000001
00000085
00000086
0000009C
00000000
00000001
00000002
56
Ferdinando_Barbon
MPASM 02.61 Released
SYMBOL TABLE
LABEL
WRERR
Z
ZERO
_CP_OFF
_CP_ON
_HS_OSC
_LP_OSC
_PWRTE_OFF
_PWRTE_ON
_RC_OSC
_WDT_OFF
_WDT_ON
_XT_OSC
__16F876
MAGN84.ASM 3-20-2006 17:45:11
PAGE 8
VALUE
00000003
00000002
0000009F
00003FFF
0000000F
00003FFE
00003FFC
00003FFF
00003FF7
00003FFF
00003FFB
00003FFF
00003FFD
00000001
MEMORY USAGE MAP ('X' = Used, '-' = Unused)
0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00C0 : XXXXXXXXX------- ---------------- ---------------- ---------------All other memory blocks unused.
Program Memory Words Used: 198
Program Memory Words Free: 7994
Errors : 0
Warnings : 0 reported, 0 suppressed
Messages : 15 reported, 0 suppressed
57
Ferdinando_Barbon
Software per gestione PIC16F877P
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
MAGN77.ASM 4-8-2006 12:06:09
PAGE 1
LINE SOURCE TEXT
00001 ;******************************** MAGMETOMETRO **********************
00002 ;**************************** GESTIONE DEL SISTEMA*******************
00003 #include <p16f877.inc>
00001
LIST
00002 ; P16F877.INC Standard Header File, Version 1.00 Microchip Technology, Inc.
00373
LIST
00004
;DICHIARA LE LOCAZIONI DI RAM UTILIZZATE
00000020
00005 SAVE_W
EQU 0X20
00000021
00006 SAVE_S
EQU 0X21
00000022
00007 MS
EQU 0X22
00000023
00008 DS
EQU 0X23
00000024
00009 SEC
EQU 0X24
00000025
00010 FZL
EQU 0X25
00000026
00011 FZH
EQU 0X26
00000027
00012 FZHH
EQU 0X27
00000029
00013 FLAG
EQU 0X29
0000002A
00014 FXL
EQU 0X2A
0000002B
00015 FXH
EQU 0X2B
0000002C
00016 FXHH
EQU 0X2C
0000002D
00017 FYL
EQU 0X2D
0000002E
00018 FYH
EQU 0X2E
0000002F
00019 FYHH
EQU 0X2F
00000030
00020 MEM1
EQU 0X30
00000031
00021 MEM2
EQU 0X31
00000032
00022 MEM3
EQU 0X32
00000033
00023 MIGLIAIA_C
EQU 0X33
00000034
00024 MIGLIAIA_D
EQU 0X34
00000035
00025 MIGLIAIA
EQU 0X35
00000036
00026 CENTINAIA
EQU 0X36
00000037
00027 DECINE
EQU 0X37
00000038
00028 UNITA
EQU 0X38
00000039
00029 DATO
EQU 0X39
0000003A
00030 ZER
EQU 0X3A
0000003B
00031 LTCL
EQU 0X3B
0000003C
00032 LTCH
EQU 0X3C
0000003D
00033 LTCHH
EQU 0X3D
0000003E
00034 LTCL1
EQU 0X3E
0000003F
00035 LTCH1
EQU 0X3F
00000040
00036 LTCHH1
EQU 0X40
00000041
00037 LTCL2
EQU 0X41
00000042
00038 LTCH2
EQU 0X42
00000043
00039 LTCHH2
EQU 0X43
00000044
00040 SEGNO
EQU 0X44
00000045
00041 MSEC
EQU 0X45
00042
00000007
00043 E
EQU 7
;PIN CONTROLLO LCD
00000006
00044 RS
EQU 6
00045
00046 ;***********************************************
0000
00047
ORG 0
;VETTORE DI RESET
0000 2805
00048
GOTO MAIN
0004
00049
ORG 4
;VETTORE DI INTERRUPT
0004 2DAE
00050
GOTO INTERRUPT
58
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
MAGN77.ASM 4-8-2006 12:06:09
PAGE 2
LINE SOURCE TEXT
00051
00052 ;***********************************************
0005 1683
00053 MAIN BSF STATUS,5
;********* SELEZIONA BANCO1 PER CONFIGURARE PIC
0006 3081
00054
MOVLW B'10000001' ;SELEZIONA CLOCK PER TMR0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0007 0081
00055
MOVWF OPTION_REG
;ASSEGNA PRESCALE A TMR0 - CONFIGURA PRESCALER PER 4MHz
0008 3007
00056
MOVLW B'00000111' ;PORTA INGRESSI DIGITALI
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0009 009F
00057
MOVWF ADCON1
000A 3019
00058
MOVLW D'25'
;BAUD RATE 9600 BIT/SEC
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
000B 0099
00059
MOVWF SPBRG
000C 3024
00060
MOVLW B'00100100' ;CONFIGURA TXSTA
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
000D 0098
00061
MOVWF TXSTA
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
000E 0186
00062
CLRF TRISB
;COMANDO LCD
000F 3010
00063
MOVLW B'00010000' ;CONFIGURA PORTD (RD4 E' NC CONFIGURATO COME IN )
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0010 0088
00064
MOVWF TRISD
0011 30F8
00065
MOVLW B'11111000' ;CONFIGURA PORTA
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0012 0085
00066
MOVWF TRISA
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0013 1187
00067
BCF TRISC,3
;CONFIGURA USCITA PER LED
00068
;PORTE E' TUTTO INGRESSO
0014 1283
00069
BCF STATUS,5
;********* BANCO0
0015 3080
00070
MOVLW B'10000000' ;CONFIGURA RCSTA
0016 0098
00071
MOVWF RCSTA
0017 3007
00072
MOVLW B'00000111' ;CONFIGURA TMR1 COME CONTATORE
0018 0090
00073
MOVWF T1CON
0019 30A0
00074
MOVLW B'10100000' ;ABILITA INTERRUPT
001A 008B
00075
MOVWF INTCON
001B 1187
00076
BCF PORTC,3
;**SPEGNI TUTTI I LED
001C 1008
00077
BCF PORTD,0
001D 1088
00078
BCF PORTD,1
001E 1108
00079
BCF PORTD,2
001F 1188
00080
BCF PORTD,3
0020 1105
00081
BCF PORTA,2
;COMMAND BASSO
0021 1005
00082
BCF PORTA,0
;SELECT1 BASSO
0022 1085
00083
BCF PORTA,1
;SELECT2 BASSO
0023 1288
00084
BCF PORTD,5
;BUZZER OFF
0024 01A9
00085
CLRF FLAG
;SEGNALATORE FG ATTIVI
0025 01BA
00086
CLRF ZER
;SEGNALATORE OFFSET
0026 01AA
00087
CLRF FXL
;AZZERA TUTTI I DATI
0027 01AB
00088
CLRF FXH
0028 01AC
00089
CLRF FXHH
0029 01AD
00090
CLRF FYL
002A 01AE
00091
CLRF FYH
002B 01AF
00092
CLRF FYHH
002C 01A5
00093
CLRF FZL
002D 01A6
00094
CLRF FZH
002E 01A7
00095
CLRF FZHH
59
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
MAGN77.ASM 4-8-2006 12:06:09
PAGE 3
LINE SOURCE TEXT
002F 22A7
00096
CALL SEC1
;RITARDO 1 SECONDO
0030 22B6
00097
CALL CONFIGURA_LCD
0031 22EA
00098
CALL RIGA1
0032 230D
00099
CALL RIGA2
0033 2071
00100
CALL SELEZ
;SELEZIONA FLUX
0034 2330
00101
CALL TIME1
0035 2353
00102
CALL TIME2
0036 2376
00103
CALL S_TIME
;SELEZIONA TEMPO
0037 23EE
00104
CALL START
;CONTROLLA SE ATTIVARE MISURAZIONE
0038 1988
00105 LOOPA BTFSC PORTD,3
;CONTROLLA SE MISURE ASSOLUTE O RELATIVE
0039 285F
00106
GOTO RELATIVO
;SE DIODO RELATIVO E' ON ESEGUI MISURE RELATIVE
003A 2435
00107
CALL LCDA
;VISUALIZZA SU DISPLAY FLUX ATTIVI E DISATTIVI
003B 1988
00108 LOOPAA BTFSC PORTD,3
;CONTROLLA SE MISURE ASSOLUTE O RELATIVE
003C 285F
00109
GOTO RELATIVO
;SE DIODO RELATIVO E' ON ESEGUI MISURE RELATIVE
003D 22AE
00110
CALL P_RITARDO
;RITARDO PROGRAMMATO
003E 2094
00111
CALL MISURA
;START MISURA
003F 20AE
00112
CALL LEGGI
;LEGGI I FLUX X E Y DAI PIC16F84
0040 082A
00113
MOVF FXL,0
;CONVERTI IN BCD LETTURA FX
0041 00B0
00114
MOVWF MEM1
0042 082B
00115
MOVF FXH,0
0043 00B1
00116
MOVWF MEM2
0044 082C
00117
MOVF FXHH,0
0045 00B2
00118
MOVWF MEM3
0046 2131
00119
CALL BCD
0047 2500
00120
CALL VISX
;VISUALIZZA LETTURA FX
0048 1CA9
00121
BTFSS FLAG,1
;CONTROLLA SE ATTIVO FY
0049 283B
00122
GOTO LOOPAA
004A 082D
00123
MOVF FYL,0
;CONVERTI IN BCD LETTURA FY
004B 00B0
00124
MOVWF MEM1
004C 082E
00125
MOVF FYH,0
004D 00B1
00126
MOVWF MEM2
004E 082F
00127
MOVF FYHH,0
004F 00B2
00128
MOVWF MEM3
0050 2131
00129
CALL BCD
0051 2519
00130
CALL VISY
;VISUALIZZA LETTURA FY
0052 3003
00131
MOVLW 3
;CONTROLLA SE VISUALIZZARE FZ
0053 0229
00132
SUBWF FLAG,0
0054 1D03
00133
BTFSS STATUS,2
0055 283B
00134
GOTO LOOPAA
0056 0825
00135
MOVF FZL,0
;CONVERTI IN BCD LETTURA FY
0057 00B0
00136
MOVWF MEM1
0058 0826
00137
MOVF FZH,0
0059 00B1
00138
MOVWF MEM2
005A 0827
00139
MOVF FZHH,0
005B 00B2
00140
MOVWF MEM3
005C 2131
00141
CALL BCD
005D 2531
00142
CALL VISZ
;VISUALIZZA LETTURA FZ
005E 283B
00143
GOTO LOOPAA
005F
00144 RELATIVO
005F 2549
00145
CALL LCDREL
0060 2094
00146 LPPRR CALL MISURA
;START MISURA
0061 20AE
00147
CALL LEGGI
;LEGGI I FLUX X E Y DAI PIC16F84
Message[305]: Using default destination of 1 (file).
60
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
0062
0063
0064
0065
0066
0067
0068
0069
006A
006B
006C
006D
006E
006F
0070
MAGN77.ASM 4-8-2006 12:06:09
PAGE 4
LINE SOURCE TEXT
08BA
1D03
21C8
21FC
083E
00B0
083F
00B1
0840
00B2
2131
258E
2278
22AE
2860
00148
MOVF ZER
00149
BTFSS STATUS,2
00150
CALL MEMORIA
;MEMORIZZA NUOVO OFFSET
00151
CALL SOTTRAI
;ESEGUI LA SOTTRAZIONE
00152
MOVF LTCL1,0
;CONVERTI IN BCD
00153
MOVWF MEM1
00154
MOVF LTCH1,0
00155
MOVWF MEM2
00156
MOVF LTCHH1,0
00157
MOVWF MEM3
00158
CALL BCD
00159
CALL LCDOFF
00160
CALL SERIALE
00161
CALL P_RITARDO
;RITARDO PROGRAMMATO
00162
GOTO LPPRR
00163
00164 ;******************ROUTINE SELEZIONA FLUX GATE
0071 1889
00165 SELEZ BTFSC PORTE,1
;CONTROLLA SE PREMUTO SELECT
0072 2871
00166
GOTO SELEZ
0073 3004
00167
MOVLW 4
Message[305]: Using default destination of 1 (file).
0074 0688
00168
XORWF PORTD
;COMMUTA LED FG1
0075 22E4
00169
CALL MS20
;ELIMINA RIMBALZI
0076 1C89
00170 S1 BTFSS PORTE,1
;CONTROLLA SE RILASCIATO SELECT
0077 2876
00171
GOTO S1
0078 22E4
00172
CALL MS20
0079 1C09
00173 S2 BTFSS PORTE,0
;CONTROLLA SE USCIRE
007A 2890
00174
GOTO SFUORI
007B 1889
00175
BTFSC PORTE,1
;CONTROLLA SE PREMUTO SELECT
007C 2879
00176
GOTO S2
007D 3002
00177
MOVLW 2
Message[305]: Using default destination of 1 (file).
007E 0688
00178
XORWF PORTD
;COMMUTA LED FG2
007F 22E4
00179
CALL MS20
0080 3002
00180
MOVLW 2
0081 00A9
00181
MOVWF FLAG
0082 1C89
00182 S3 BTFSS PORTE,1
;CONTROLLA SE RILASCIATO SELECT
0083 2882
00183
GOTO S3
0084 22E4
00184
CALL MS20
0085 1C09
00185 S4 BTFSS PORTE,0
;CONTROLLA SE USCIRE
0086 2890
00186
GOTO SFUORI
0087 1889
00187
BTFSC PORTE,1
;CONTROLLA SE PREMUTO SELECT
0088 2885
00188
GOTO S4
0089 3008
00189
MOVLW 8
Message[305]: Using default destination of 1 (file).
008A 0687
00190
XORWF PORTC
;COMMUTA LED FG3
008B 22E4
00191
CALL MS20
008C 3003
00192
MOVLW 3
008D 00A9
00193
MOVWF FLAG
008E 1C89
00194 S5 BTFSS PORTE,1
;CONTROLLA SE RILASCIATO SELECT
008F 288E
00195
GOTO S5
0090 22E4
00196 SFUORI CALL MS20
0091 1C09
00197
BTFSS PORTE,0
;CONTROLLA SE RILASCIATO
61
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
MAGN77.ASM 4-8-2006 12:06:09
PAGE 5
LINE SOURCE TEXT
0092 2890
0093 0008
00198
GOTO SFUORI
00199
RETURN
00200
00201 ;******************ROUTINE MISURA
0094 1408
00202 MISURA BSF PORTD,0
;ACCENDI LED MISURA
0095 3006
00203
MOVLW D'6'
;RESET TEMPO
0096 0081
00204
MOVWF TMR0
0097 01A2
00205
CLRF MS
0098 01A3
00206
CLRF DS
0099 01A4
00207
CLRF SEC
009A 1505
00208
BSF PORTA,2
;COMMAND ALTO
009B 018E
00209
CLRF TMR1L
;AZZERA CONTEGGIO IMPULSI
009C 018F
00210
CLRF TMR1H
009D 01A7
00211
CLRF FZHH
009E 100C
00212
BCF PIR1,0
;Azzera flag interrupt TMR1
Message[305]: Using default destination of 1 (file).
009F 08A4
00213 LPT MOVF SEC
00A0 1903
00214
BTFSC STATUS,2
;TRASCORSO 1 SECONDO?
00A1 28A9
00215
GOTO LPTMR
00A2 080E
00216
MOVF TMR1L,0
;SALVA CONTEGGIO
00A3 00A5
00217
MOVWF FZL
00A4 080F
00218
MOVF TMR1H,0
00A5 00A6
00219
MOVWF FZH
00A6 1105
00220
BCF PORTA,2
;COMMAND BASSO
00A7 1008
00221
BCF PORTD,0
;SPEGNI LED MISURA
00A8 0008
00222
RETURN
00A9 1C0C
00223 LPTMR BTFSS PIR1,0
;CONTROLLA SE TRABOCCAMENTO TMR1
00AA 289F
00224
GOTO LPT
Message[305]: Using default destination of 1 (file).
00AB 0AA7
00225
INCF FZHH
00AC 100C
00226
BCF PIR1,0
;Azzera flag interrupt TMR1
00AD 289F
00227
GOTO LPT
00228
00229 ;******************ROUTINE LEGGI
00AE 01AA
00230 LEGGI CLRF FXL
00AF 01AB
00231
CLRF FXH
00B0 01AC
00232
CLRF FXHH
00B1 1485
00233
BSF PORTA,1
;SELECT2 ALTO
00B2 1E05
00234 LG1 BTFSS PORTA,4
;CONTROLLA SE RISPOSTA DA PIC
00B3 28B2
00235
GOTO LG1
00B4 1085
00236
BCF PORTA,1
;SELECT2 BASSO
00B5 3009
00237
MOVLW 9
;SINCRONIZZA CLOCK
00B6 0081
00238
MOVWF TMR0
00B7 22D8
00239
CALL MS1
;PORTATI A CENTRO BIT
00B8 22DE
00240
CALL MS2
00B9 1A05
00241
BTFSC PORTA,4
;LEGGI 18 BIT
00BA 142A
00242
BSF FXL,0
00BB 22DE
00243
CALL MS2
00BC 1A05
00244
BTFSC PORTA,4
00BD 14AA
00245
BSF FXL,1
00BE 22DE
00246
CALL MS2
00BF 1A05
00247
BTFSC PORTA,4
00C0 152A
00248
BSF FXL,2
62
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
00C1
00C2
00C3
00C4
00C5
00C6
00C7
00C8
00C9
00CA
00CB
00CC
00CD
00CE
00CF
00D0
00D1
00D2
00D3
00D4
00D5
00D6
00D7
00D8
00D9
00DA
00DB
00DC
00DD
00DE
00DF
00E0
00E1
00E2
00E3
00E4
00E5
00E6
00E7
00E8
00E9
00EA
00EB
00EC
00ED
00EE
00EF
00F0
00F1
00F2
00F3
00F4
00F5
22DE
1A05
15AA
22DE
1A05
162A
22DE
1A05
16AA
22DE
1A05
172A
22DE
1A05
17AA
22DE
1A05
142B
22DE
1A05
14AB
22DE
1A05
152B
22DE
1A05
15AB
22DE
1A05
162B
22DE
1A05
16AB
22DE
1A05
172B
22DE
1A05
17AB
22DE
1A05
142C
22DE
1A05
14AC
1CA9
0008
01AD
01AE
01AF
1405
1E85
28F4
MAGN77.ASM 4-8-2006 12:06:09
PAGE 6
LINE SOURCE TEXT
00249
CALL MS2
00250
BTFSC PORTA,4
00251
BSF FXL,3
00252
CALL MS2
00253
BTFSC PORTA,4
00254
BSF FXL,4
00255
CALL MS2
00256
BTFSC PORTA,4
00257
BSF FXL,5
00258
CALL MS2
00259
BTFSC PORTA,4
00260
BSF FXL,6
00261
CALL MS2
00262
BTFSC PORTA,4
00263
BSF FXL,7
00264
CALL MS2
00265
BTFSC PORTA,4
;-00266
BSF FXH,0
00267
CALL MS2
00268
BTFSC PORTA,4
00269
BSF FXH,1
00270
CALL MS2
00271
BTFSC PORTA,4
00272
BSF FXH,2
00273
CALL MS2
00274
BTFSC PORTA,4
00275
BSF FXH,3
00276
CALL MS2
00277
BTFSC PORTA,4
00278
BSF FXH,4
00279
CALL MS2
00280
BTFSC PORTA,4
00281
BSF FXH,5
00282
CALL MS2
00283
BTFSC PORTA,4
00284
BSF FXH,6
00285
CALL MS2
00286
BTFSC PORTA,4
00287
BSF FXH,7
00288
CALL MS2
00289
BTFSC PORTA,4
;-00290
BSF FXHH,0
00291
CALL MS2
00292
BTFSC PORTA,4
00293
BSF FXHH,1
00294
BTFSS FLAG,1
;CONTROLLA SE LEGGERE FGY
00295
RETURN
00296
CLRF FYL
00297
CLRF FYH
00298
CLRF FYHH
00299
BSF PORTA,0
;SELECT1 ALTO
00300 LG2 BTFSS PORTA,5
;CONTROLLA SE RISPOSTA DA PIC
00301
GOTO LG2
63
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
00F6
00F7
00F8
00F9
00FA
00FB
00FC
00FD
00FE
00FF
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
010A
010B
010C
010D
010E
010F
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
011A
011B
011C
011D
011E
011F
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
012A
1005
3009
0081
22D8
22DE
1A85
142D
22DE
1A85
14AD
22DE
1A85
152D
22DE
1A85
15AD
22DE
1A85
162D
22DE
1A85
16AD
22DE
1A85
172D
22DE
1A85
17AD
22DE
1A85
142E
22DE
1A85
14AE
22DE
1A85
152E
22DE
1A85
15AE
22DE
1A85
162E
22DE
1A85
16AE
22DE
1A85
172E
22DE
1A85
17AE
22DE
MAGN77.ASM 4-8-2006 12:06:09
PAGE 7
LINE SOURCE TEXT
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
BCF PORTA,0
;SELECT1 BASSO
MOVLW 9
;SINCRONIZZA CLOCK
MOVWF TMR0
CALL MS1
;PORTATI A CENTRO BIT
CALL MS2
BTFSC PORTA,5
;LEGGI 18 BIT
BSF FYL,0
CALL MS2
BTFSC PORTA,5
BSF FYL,1
CALL MS2
BTFSC PORTA,5
BSF FYL,2
CALL MS2
BTFSC PORTA,5
BSF FYL,3
CALL MS2
BTFSC PORTA,5
BSF FYL,4
CALL MS2
BTFSC PORTA,5
BSF FYL,5
CALL MS2
BTFSC PORTA,5
BSF FYL,6
CALL MS2
BTFSC PORTA,5
BSF FYL,7
CALL MS2
BTFSC PORTA,5
;-BSF FYH,0
CALL MS2
BTFSC PORTA,5
BSF FYH,1
CALL MS2
BTFSC PORTA,5
BSF FYH,2
CALL MS2
BTFSC PORTA,5
BSF FYH,3
CALL MS2
BTFSC PORTA,5
BSF FYH,4
CALL MS2
BTFSC PORTA,5
BSF FYH,5
CALL MS2
BTFSC PORTA,5
BSF FYH,6
CALL MS2
BTFSC PORTA,5
BSF FYH,7
CALL MS2
64
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
012B
012C
012D
012E
012F
0130
MAGN77.ASM 4-8-2006 12:06:09
PAGE 8
LINE SOURCE TEXT
1A85
142F
22DE
1A85
14AF
0008
00355
BTFSC PORTA,5
;-00356
BSF FYHH,0
00357
CALL MS2
00358
BTFSC PORTA,5
00359
BSF FYHH,1
00360
RETURN
00361
00362 ;************************************** BCD
00363 ;NOTE: 100.000 IN HEX VALE "186A0"
0131 01B4
00364 BCD CLRF MIGLIAIA_D
0132 01B3
00365
CLRF MIGLIAIA_C
0133 01B6
00366
CLRF CENTINAIA
;inizializza locazioni di memoria
0134 01B5
00367
CLRF MIGLIAIA
0135 01B7
00368
CLRF DECINE
0136 3002
00369 BCD1 MOVLW 2
;CONTROLLA SE NUMERO>DI 100.000
0137 0232
00370
SUBWF MEM3,0
0138 1C03
00371
BTFSS STATUS,0
0139 2949
00372
GOTO BCD11
Message[305]: Using default destination of 1 (file).
013A 0AB3
00373
INCF MIGLIAIA_C
013B 30A0
00374
MOVLW 0XA0
Message[305]: Using default destination of 1 (file).
013C 02B0
00375
SUBWF MEM1
013D 1803
00376
BTFSC STATUS,0
013E 2943
00377
GOTO BCD111
013F 3001
00378
MOVLW 1
Message[305]: Using default destination of 1 (file).
0140 02B1
00379
SUBWF MEM2
0141 1C03
00380
BTFSS STATUS,0
Message[305]: Using default destination of 1 (file).
0142 03B2
00381
DECF MEM3
0143 3086
00382 BCD111 MOVLW 0X86
Message[305]: Using default destination of 1 (file).
0144 02B1
00383
SUBWF MEM2
0145 1C03
00384
BTFSS STATUS,0
Message[305]: Using default destination of 1 (file).
0146 03B2
00385
DECF MEM3
Message[305]: Using default destination of 1 (file).
0147 03B2
00386
DECF MEM3
0148 2936
00387
GOTO BCD1
0149 3001
00388 BCD11 MOVLW 1
014A 0232
00389
SUBWF MEM3,0
014B 1C03
00390
BTFSS STATUS,0
014C 2968
00391
GOTO BCD2
014D 3087
00392
MOVLW 0X87
014E 0231
00393
SUBWF MEM2,0
014F 1C03
00394
BTFSS STATUS,0
0150 295A
00395
GOTO BCDU
Message[305]: Using default destination of 1 (file).
0151 0AB3
00396
INCF MIGLIAIA_C
0152 30A0
00397
MOVLW 0XA0
Message[305]: Using default destination of 1 (file).
0153 02B0
00398
SUBWF MEM1
65
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
MAGN77.ASM 4-8-2006 12:06:09
PAGE 9
LINE SOURCE TEXT
0154 1C03
00399
BTFSS STATUS,0
Message[305]: Using default destination of 1 (file).
0155 03B1
00400
DECF MEM2
0156 3086
00401
MOVLW 0X86
Message[305]: Using default destination of 1 (file).
0157 02B1
00402
SUBWF MEM2
Message[305]: Using default destination of 1 (file).
0158 03B2
00403
DECF MEM3
0159 2968
00404
GOTO BCD2
015A 3086
00405 BCDU MOVLW 0X86
015B 0231
00406
SUBWF MEM2,0
015C 1C03
00407
BTFSS STATUS,0
015D 2968
00408
GOTO BCD2
015E 30A0
00409
MOVLW 0XA0
015F 0230
00410
SUBWF MEM1,0
0160 1C03
00411
BTFSS STATUS,0
0161 2968
00412
GOTO BCD2
Message[305]: Using default destination of 1 (file).
0162 0AB3
00413
INCF MIGLIAIA_C
0163 30A0
00414
MOVLW 0XA0
Message[305]: Using default destination of 1 (file).
0164 02B0
00415
SUBWF MEM1
0165 3086
00416
MOVLW 0X86
Message[305]: Using default destination of 1 (file).
0166 02B1
00417
SUBWF MEM2
Message[305]: Using default destination of 1 (file).
0167 03B2
00418
DECF MEM3
0168 3001
00419 BCD2 MOVLW 1
;CALCOLA DECINE MIGLIAIA (10000=2710)
0169 0232
00420
SUBWF MEM3,0
016A 1C03
00421
BTFSS STATUS,0
016B 297A
00422
GOTO BCD22
Message[305]: Using default destination of 1 (file).
016C 0AB4
00423
INCF MIGLIAIA_D
016D 3010
00424
MOVLW 0X10
Message[305]: Using default destination of 1 (file).
016E 02B0
00425
SUBWF MEM1
016F 1803
00426
BTFSC STATUS,0
0170 2975
00427
GOTO BCD222
0171 3001
00428
MOVLW 1
Message[305]: Using default destination of 1 (file).
0172 02B1
00429
SUBWF MEM2
0173 1C03
00430
BTFSS STATUS,0
Message[305]: Using default destination of 1 (file).
0174 03B2
00431
DECF MEM3
0175 3027
00432 BCD222 MOVLW 0X27
Message[305]: Using default destination of 1 (file).
0176 02B1
00433
SUBWF MEM2
0177 1C03
00434
BTFSS STATUS,0
Message[305]: Using default destination of 1 (file).
0178 03B2
00435
DECF MEM3
0179 2968
00436
GOTO BCD2
017A 3028
00437 BCD22 MOVLW 0X28
017B 0231
00438
SUBWF MEM2,0
66
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
MAGN77.ASM 4-8-2006 12:06:09
PAGE 10
LINE SOURCE TEXT
017C 1C03
00439
BTFSS STATUS,0
017D 2986
00440
GOTO BCD2U
Message[305]: Using default destination of 1 (file).
017E 0AB4
00441
INCF MIGLIAIA_D
017F 3010
00442
MOVLW 0X10
Message[305]: Using default destination of 1 (file).
0180 02B0
00443
SUBWF MEM1
0181 1C03
00444
BTFSS STATUS,0
Message[305]: Using default destination of 1 (file).
0182 03B1
00445
DECF MEM2
0183 3027
00446
MOVLW 0X27
Message[305]: Using default destination of 1 (file).
0184 02B1
00447
SUBWF MEM2
0185 297A
00448
GOTO BCD22
0186 3027
00449 BCD2U MOVLW 0X27
0187 0231
00450
SUBWF MEM2,0
0188 1C03
00451
BTFSS STATUS,0
0189 2993
00452
GOTO BCD3
018A 3010
00453
MOVLW 0X10
018B 0230
00454
SUBWF MEM1,0
018C 1C03
00455
BTFSS STATUS,0
018D 2993
00456
GOTO BCD3
Message[305]: Using default destination of 1 (file).
018E 0AB4
00457
INCF MIGLIAIA_D
018F 3010
00458
MOVLW 0X10
Message[305]: Using default destination of 1 (file).
0190 02B0
00459
SUBWF MEM1
0191 3027
00460
MOVLW 0X27
Message[305]: Using default destination of 1 (file).
0192 02B1
00461
SUBWF MEM2
0193 3004
00462 BCD3 MOVLW 4
;CONTROLLA SE DATO DA CONVERTIRE >=1000 (3E8 IN HEX)
0194 0231
00463
SUBWF MEM2,0
0195 1C03
00464
BTFSS STATUS,0
0196 299F
00465
GOTO BCD33
Message[305]: Using default destination of 1 (file).
0197 0AB5
00466
INCF MIGLIAIA
0198 30E8
00467
MOVLW 0XE8
Message[305]: Using default destination of 1 (file).
0199 02B0
00468
SUBWF MEM1
019A 1C03
00469
BTFSS STATUS,0
Message[305]: Using default destination of 1 (file).
019B 03B1
00470
DECF MEM2
019C 3003
00471
MOVLW 3
Message[305]: Using default destination of 1 (file).
019D 02B1
00472
SUBWF MEM2
019E 2993
00473
GOTO BCD3
019F 3003
00474 BCD33 MOVLW 3
01A0 0231
00475
SUBWF MEM2,0
01A1 1C03
00476
BTFSS STATUS,0
01A2 29AC
00477
GOTO BCD4
01A3 30E8
00478
MOVLW 0XE8
01A4 0230
00479
SUBWF MEM1,0
01A5 1C03
00480
BTFSS STATUS,0
67
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
MAGN77.ASM 4-8-2006 12:06:09
PAGE 11
LINE SOURCE TEXT
01A6 29AC
00481
GOTO BCD4
Message[305]: Using default destination of 1 (file).
01A7 0AB5
00482
INCF MIGLIAIA
01A8 30E8
00483
MOVLW 0XE8
Message[305]: Using default destination of 1 (file).
01A9 02B0
00484
SUBWF MEM1
01AA 3003
00485
MOVLW 3
Message[305]: Using default destination of 1 (file).
01AB 02B1
00486
SUBWF MEM2
Message[305]: Using default destination of 1 (file).
01AC 08B1
00487 BCD4 MOVF MEM2
;CONTROLLA SE DATO >=100 (64 in hex)
01AD 1903
00488
BTFSC STATUS,2
01AE 29B5
00489
GOTO BCD5
Message[305]: Using default destination of 1 (file).
01AF 0AB6
00490
INCF CENTINAIA
01B0 3064
00491
MOVLW 0X64
Message[305]: Using default destination of 1 (file).
01B1 02B0
00492
SUBWF MEM1
01B2 1C03
00493
BTFSS STATUS,0
Message[305]: Using default destination of 1 (file).
01B3 03B1
00494
DECF MEM2
01B4 29AC
00495
GOTO BCD4
01B5 3064
00496 BCD5 MOVLW 0X64
01B6 0230
00497
SUBWF MEM1,0
01B7 1C03
00498
BTFSS STATUS,0
01B8 29BD
00499
GOTO BCD6
Message[305]: Using default destination of 1 (file).
01B9 0AB6
00500
INCF CENTINAIA
01BA 3064
00501
MOVLW 0X64
Message[305]: Using default destination of 1 (file).
01BB 02B0
00502
SUBWF MEM1
01BC 29B5
00503
GOTO BCD5
01BD 300A
00504 BCD6 MOVLW D'10'
01BE 0230
00505
SUBWF MEM1,0
01BF 1C03
00506
BTFSS STATUS,0
01C0 29C5
00507
GOTO BCD7
Message[305]: Using default destination of 1 (file).
01C1 0AB7
00508
INCF DECINE
01C2 300A
00509
MOVLW D'10'
Message[305]: Using default destination of 1 (file).
01C3 02B0
00510
SUBWF MEM1
01C4 29BD
00511
GOTO BCD6
01C5 0830
00512 BCD7 MOVF MEM1,0
;salva unita'
01C6 00B8
00513
MOVWF UNITA
01C7 0008
00514
RETURN
00515
00516 ;******************ROUTINE MEMORIA
01C8 082A
00517 MEMORIA MOVF FXL,0
;SALVA DATI FX
01C9 00BB
00518
MOVWF LTCL
01CA 082B
00519
MOVF FXH,0
01CB 00BC
00520
MOVWF LTCH
01CC 082C
00521
MOVF FXHH,0
01CD 00BD
00522
MOVWF LTCHH
68
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
MAGN77.ASM 4-8-2006 12:06:09
PAGE 12
LINE SOURCE TEXT
Message[305]: Using default destination of 1 (file).
01CE 08A9
00523
MOVF FLAG
;CONTROLLA SE ATTIVO SOLO FX
01CF 1903
00524
BTFSC STATUS,2
01D0 0008
00525
RETURN
01D1 082D
00526
MOVF FYL,0
Message[305]: Using default destination of 1 (file).
01D2 07BB
00527
ADDWF LTCL
01D3 1803
00528
BTFSC STATUS,0
;CONTROLLA RIPORTO
01D4 29F2
00529
GOTO MM1
01D5 082E
00530 MM2 MOVF FYH,0
Message[305]: Using default destination of 1 (file).
01D6 07BC
00531
ADDWF LTCH
01D7 1803
00532
BTFSC STATUS,0
;CONTROLLA RIPORTO
Message[305]: Using default destination of 1 (file).
01D8 0ABD
00533
INCF LTCHH
01D9 082F
00534
MOVF FYHH,0
Message[305]: Using default destination of 1 (file).
01DA 07BD
00535
ADDWF LTCHH
01DB 1003
00536
BCF STATUS,0
;DIVIDI PER 2
Message[305]: Using default destination of 1 (file).
01DC 0CBD
00537
RRF LTCHH
Message[305]: Using default destination of 1 (file).
01DD 0CBC
00538
RRF LTCH
Message[305]: Using default destination of 1 (file).
01DE 0CBB
00539
RRF LTCL
01DF 3003
00540
MOVLW 3
;CONTROLLA SE ATTIVI 3 FLUX
01E0 0229
00541
SUBWF FLAG,0
01E1 1D03
00542
BTFSS STATUS,2
01E2 0008
00543
RETURN
01E3 0825
00544
MOVF FZL,0
Message[305]: Using default destination of 1 (file).
01E4 07BB
00545
ADDWF LTCL
01E5 1803
00546
BTFSC STATUS,0
;CONTROLLA RIPORTO
01E6 29F7
00547
GOTO MM3
01E7 0826
00548 MM4 MOVF FZH,0
Message[305]: Using default destination of 1 (file).
01E8 07BC
00549
ADDWF LTCH
01E9 1803
00550
BTFSC STATUS,0
;CONTROLLA RIPORTO
Message[305]: Using default destination of 1 (file).
01EA 0ABD
00551
INCF LTCHH
01EB 0827
00552
MOVF FZHH,0
Message[305]: Using default destination of 1 (file).
01EC 07BD
00553
ADDWF LTCHH
01ED 1003
00554
BCF STATUS,0
;DIVIDI PER 2
Message[305]: Using default destination of 1 (file).
01EE 0CBD
00555
RRF LTCHH
Message[305]: Using default destination of 1 (file).
01EF 0CBC
00556
RRF LTCH
Message[305]: Using default destination of 1 (file).
01F0 0CBB
00557
RRF LTCL
01F1 0008
00558
RETURN
01F2 3001
00559 MM1 MOVLW 1
Message[305]: Using default destination of 1 (file).
69
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
MAGN77.ASM 4-8-2006 12:06:09
PAGE 13
LINE SOURCE TEXT
01F3 07BC
00560
ADDWF LTCH
01F4 1803
00561
BTFSC STATUS,0
Message[305]: Using default destination of 1 (file).
01F5 0ABD
00562
INCF LTCHH
01F6 29D5
00563
GOTO MM2
01F7 3001
00564 MM3 MOVLW 1
Message[305]: Using default destination of 1 (file).
01F8 07BC
00565
ADDWF LTCH
01F9 1803
00566
BTFSC STATUS,0
Message[305]: Using default destination of 1 (file).
01FA 0ABD
00567
INCF LTCHH
01FB 29E7
00568
GOTO MM4
00569
00570 ;******************ROUTINE SOTTRAI
01FC 082A
00571 SOTTRAI MOVF FXL,0
;SALVA DATI FX
01FD 00BE
00572
MOVWF LTCL1
01FE 082B
00573
MOVF FXH,0
01FF 00BF
00574
MOVWF LTCH1
0200 082C
00575
MOVF FXHH,0
0201 00C0
00576
MOVWF LTCHH1
Message[305]: Using default destination of 1 (file).
0202 08A9
00577
MOVF FLAG
;CONTROLLA SE ATTIVO SOLO FX
0203 1903
00578
BTFSC STATUS,2
0204 2A30
00579
GOTO STT
0205 082D
00580
MOVF FYL,0
Message[305]: Using default destination of 1 (file).
0206 07BE
00581
ADDWF LTCL1
0207 1803
00582
BTFSC STATUS,0
;CONTROLLA RIPORTO
0208 2A26
00583
GOTO MM11
0209 082E
00584 MM21 MOVF FYH,0
Message[305]: Using default destination of 1 (file).
020A 07BF
00585
ADDWF LTCH1
020B 1803
00586
BTFSC STATUS,0
;CONTROLLA RIPORTO
Message[305]: Using default destination of 1 (file).
020C 0AC0
00587
INCF LTCHH1
020D 082F
00588
MOVF FYHH,0
Message[305]: Using default destination of 1 (file).
020E 07C0
00589
ADDWF LTCHH1
020F 1003
00590
BCF STATUS,0
;DIVIDI PER 2
Message[305]: Using default destination of 1 (file).
0210 0CC0
00591
RRF LTCHH1
Message[305]: Using default destination of 1 (file).
0211 0CBF
00592
RRF LTCH1
Message[305]: Using default destination of 1 (file).
0212 0CBE
00593
RRF LTCL1
0213 3003
00594
MOVLW 3
;CONTROLLA SE ATTIVI 3 FLUX
0214 0229
00595
SUBWF FLAG,0
0215 1D03
00596
BTFSS STATUS,2
0216 2A30
00597
GOTO STT
0217 0825
00598
MOVF FZL,0
Message[305]: Using default destination of 1 (file).
0218 07BE
00599
ADDWF LTCL1
0219 1803
00600
BTFSC STATUS,0
;CONTROLLA RIPORTO
70
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
MAGN77.ASM 4-8-2006 12:06:09
PAGE 14
LINE SOURCE TEXT
021A 2A2B
00601
GOTO MM31
021B 0826
00602 MM41 MOVF FZH,0
Message[305]: Using default destination of 1 (file).
021C 07BF
00603
ADDWF LTCH1
021D 1803
00604
BTFSC STATUS,0
;CONTROLLA RIPORTO
Message[305]: Using default destination of 1 (file).
021E 0AC0
00605
INCF LTCHH1
021F 0827
00606
MOVF FZHH,0
Message[305]: Using default destination of 1 (file).
0220 07C0
00607
ADDWF LTCHH1
0221 1003
00608
BCF STATUS,0
;DIVIDI PER 2
Message[305]: Using default destination of 1 (file).
0222 0CC0
00609
RRF LTCHH1
Message[305]: Using default destination of 1 (file).
0223 0CBF
00610
RRF LTCH1
Message[305]: Using default destination of 1 (file).
0224 0CBE
00611
RRF LTCL1
0225 2A30
00612
GOTO STT
0226 3001
00613 MM11 MOVLW 1
Message[305]: Using default destination of 1 (file).
0227 07BF
00614
ADDWF LTCH1
0228 1803
00615
BTFSC STATUS,0
Message[305]: Using default destination of 1 (file).
0229 0AC0
00616
INCF LTCHH1
022A 2A09
00617
GOTO MM21
022B 3001
00618 MM31 MOVLW 1
Message[305]: Using default destination of 1 (file).
022C 07BF
00619
ADDWF LTCH1
022D 1803
00620
BTFSC STATUS,0
Message[305]: Using default destination of 1 (file).
022E 0AC0
00621
INCF LTCHH1
022F 2A1B
00622
GOTO MM41
0230 083D
00623 STT MOVF LTCHH,0
;ESEGUI SOTTRAZIONE
0231 0240
00624
SUBWF LTCHH1,0
0232 1C03
00625
BTFSS STATUS,0
;SE C=0 OFFSET CON SEGNO0233 2A46
00626
GOTO MENO
0234 1D03
00627
BTFSS STATUS,2
;SE Z=1 SONO UGUALI- NECESSARIO NUOVO CONTROLLO
0235 2A64
00628
GOTO PIU
0236 083C
00629
MOVF LTCH,0
;CONTROLLA ANCORA
0237 023F
00630
SUBWF LTCH1,0
0238 1C03
00631
BTFSS STATUS,0
;SE C=0 OFFSET CON SEGNO0239 2A46
00632
GOTO MENO
023A 1D03
00633
BTFSS STATUS,2
;SE Z=1 SONO UGUALI- NECESSARIO NUOVO CONTROLLO
023B 2A64
00634
GOTO PIU
023C 083B
00635
MOVF LTCL,0
;CONTROLLA ANCORA
023D 023E
00636
SUBWF LTCL1,0
023E 1C03
00637
BTFSS STATUS,0
;SE C=0 OFFSET CON SEGNO023F 2A46
00638
GOTO MENO
0240 1D03
00639
BTFSS STATUS,2
;SE Z=1 SONO UGUALI- NECESSARIO NUOVO CONTROLLO
0241 2A64
00640
GOTO PIU
0242 01BE
00641
CLRF LTCL1
0243 01BF
00642
CLRF LTCH1
0244 01C0
00643
CLRF LTCHH1
71
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
MAGN77.ASM 4-8-2006 12:06:09
PAGE 15
LINE SOURCE TEXT
0245 0008
00644
RETURN
0246 3001
00645 MENO MOVLW 1
0247 00C4
00646
MOVWF SEGNO
0248 083B
00647
MOVF LTCL,0
0249 00C1
00648
MOVWF LTCL2
024A 083C
00649
MOVF LTCH,0
024B 00C2
00650
MOVWF LTCH2
024C 083D
00651
MOVF LTCHH,0
024D 00C3
00652
MOVWF LTCHH2
024E 083E
00653
MOVF LTCL1,0
024F 0241
00654
SUBWF LTCL2,0
0250 00BE
00655
MOVWF LTCL1
0251 1803
00656
BTFSC STATUS,0
0252 2A59
00657
GOTO SS
0253 3001
00658
MOVLW 1
Message[305]: Using default destination of 1 (file).
0254 02C2
00659
SUBWF LTCH2
0255 1803
00660
BTFSC STATUS,0
0256 2A59
00661
GOTO SS
0257 3001
00662
MOVLW 1
Message[305]: Using default destination of 1 (file).
0258 02C3
00663
SUBWF LTCHH2
0259 083F
00664 SS MOVF LTCH1,0
025A 0242
00665
SUBWF LTCH2,0
025B 00BF
00666
MOVWF LTCH1
025C 1803
00667
BTFSC STATUS,0
025D 2A60
00668
GOTO SS1
025E 3001
00669
MOVLW 1
Message[305]: Using default destination of 1 (file).
025F 02C3
00670
SUBWF LTCHH2
0260 0840
00671 SS1 MOVF LTCHH1,0
0261 0243
00672
SUBWF LTCHH2,0
0262 00C0
00673
MOVWF LTCHH1
0263 0008
00674
RETURN
0264 01C4
00675 PIU CLRF SEGNO
0265 083B
00676
MOVF LTCL,0
Message[305]: Using default destination of 1 (file).
0266 02BE
00677
SUBWF LTCL1
0267 1803
00678
BTFSC STATUS,0
0268 2A6F
00679
GOTO SS2
0269 3001
00680
MOVLW 1
Message[305]: Using default destination of 1 (file).
026A 02BF
00681
SUBWF LTCH1
026B 1803
00682
BTFSC STATUS,0
026C 2A6F
00683
GOTO SS2
026D 3001
00684
MOVLW 1
Message[305]: Using default destination of 1 (file).
026E 02C0
00685
SUBWF LTCHH1
026F 083C
00686 SS2 MOVF LTCH,0
Message[305]: Using default destination of 1 (file).
0270 02BF
00687
SUBWF LTCH1
0271 1803
00688
BTFSC STATUS,0
0272 2A75
00689
GOTO SS3
;MEMORIZZA SEGNO
;MEMORIZZA SEGNO
72
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
MAGN77.ASM 4-8-2006 12:06:09
PAGE 16
LINE SOURCE TEXT
0273 3001
00690
MOVLW 1
Message[305]: Using default destination of 1 (file).
0274 02C0
00691
SUBWF LTCHH1
0275 083D
00692 SS3 MOVF LTCHH,0
Message[305]: Using default destination of 1 (file).
0276 02C0
00693
SUBWF LTCHH1
0277 0008
00694
RETURN
00695
00696 ;******************ROUTINE TRASMISSIONE SERIALE 1 DATO OGNI 4 SECONDI*********
00697 ;** SI INVIANO 7 BYTE: IL PRIMO E' IL FLAG CHE SE A 1 SIGNIFICA NUOVO OFFSET
00698 ;** ALTRIMENTI NESSUNA MODIFICA--SEGUONO FX, FY,FZ DAL BYTE LSB AL MSB
0278 1408
00699 SERIALE BSF PORTD,0 ;ACCENDI LED
0279 083A
00700
MOVF ZER,0 ;TRASMETTI UNO SE ATTIVATO OFFSET ALTRIMENTI ZERO
027A 0099
00701
MOVWF TXREG
027B 01BA
00702
CLRF ZER ;AZZERA FLAG OFFSET
027C 1E0C
00703 SERF BTFSS PIR1,4 ;CONTROLLA SE INVIATO DATO
027D 2A7C
00704
GOTO SERF
027E 082A
00705
MOVF FXL,0 ;INVIA BYTE FX
027F 0099
00706
MOVWF TXREG
0280 1E0C
00707 SER1X BTFSS PIR1,4 ;CONTROLLA SE INVIATO DATO
0281 2A80
00708
GOTO SER1X
0282 082B
00709
MOVF FXH,0
0283 0099
00710
MOVWF TXREG
0284 1E0C
00711 SER2X BTFSS PIR1,4
0285 2A84
00712
GOTO SER2X
0286 082C
00713
MOVF FXHH,0
0287 0099
00714
MOVWF TXREG
0288 1E0C
00715 SER3X BTFSS PIR1,4
0289 2A88
00716
GOTO SER3X
028A 082D
00717
MOVF FYL,0 ;INVIA BYTE FY
028B 0099
00718
MOVWF TXREG
028C 1E0C
00719 SER1Y BTFSS PIR1,4 ;CONTROLLA SE INVIATO DATO
028D 2A8C
00720
GOTO SER1Y
028E 082E
00721
MOVF FYH,0
028F 0099
00722
MOVWF TXREG
0290 1E0C
00723 SER2Y BTFSS PIR1,4
0291 2A90
00724
GOTO SER2Y
0292 082F
00725
MOVF FYHH,0
0293 0099
00726
MOVWF TXREG
0294 1E0C
00727 SER3Y BTFSS PIR1,4
0295 2A94
00728
GOTO SER3Y
0296 0825
00729
MOVF FZL,0 ;INVIA BYTE FZ
0297 0099
00730
MOVWF TXREG
0298 1E0C
00731 SER1Z BTFSS PIR1,4 ;CONTROLLA SE INVIATO DATO
0299 2A98
00732
GOTO SER1Z
029A 0826
00733
MOVF FZH,0
029B 0099
00734
MOVWF TXREG
029C 1E0C
00735 SER2Z BTFSS PIR1,4
029D 2A9C
00736
GOTO SER2Z
029E 0827
00737
MOVF FZHH,0
029F 0099
00738
MOVWF TXREG
02A0 1E0C
00739 SER3Z BTFSS PIR1,4
02A1 2AA0
00740
GOTO SER3Z
73
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
02A2
02A3
02A4
02A5
02A6
MAGN77.ASM 4-8-2006 12:06:09
PAGE 17
LINE SOURCE TEXT
1008
22A7
22A7
22A7
0008
00741
BCF PORTD,0
;SPEGNI LED
00742
CALL SEC1
00743
CALL SEC1
00744
CALL SEC1
00745
RETURN
00746
00747 ;******************ROUTINE RITARDO 1 SECONDO ******************
02A7 01A2
00748 SEC1 CLRF MS
02A8 01A3
00749
CLRF DS
02A9 01A4
00750
CLRF SEC
Message[305]: Using default destination of 1 (file).
02AA 08A4
00751 LPSEC MOVF SEC
02AB 1903
00752
BTFSC STATUS,2
02AC 2AAA
00753
GOTO LPSEC
02AD 0008
00754
RETURN
00755
00756 ;******************ROUTINE RITARDO PROGRAMMATO ******************
02AE
00757 P_RITARDO
02AE 01A2
00758
CLRF MS
02AF 01A3
00759
CLRF DS
02B0 01A4
00760
CLRF SEC
02B1 0845
00761 LPSECP MOVF MSEC,0
02B2 0224
00762
SUBWF SEC,0
02B3 1D03
00763
BTFSS STATUS,2
02B4 2AB1
00764
GOTO LPSECP
02B5 0008
00765
RETURN
00766
00767 ;**********ROUTINE CONFIGURAZIONE LCD
02B6
00768 CONFIGURA_LCD
02B6 1308
00769
BCF PORTD,RS
;PROGRAMMAZIONE LCD RS=0
02B7 3038
00770
MOVLW 0x38
;DATI A 8 BIT - 2 RIGHE - FORMATO CARATTERE
02B8 22C8
00771
CALL DISPLAY
02B9 300C
00772
MOVLW 0x0C
;DISPLAY ON - CURSORE OFF - BLINKING OFF
02BA 22C8
00773
CALL DISPLAY
02BB 3006
00774
MOVLW 6
;AVANZAMENTO AUTOMATICO CURSORE
02BC 22C8
00775
CALL DISPLAY
02BD 3001
00776
MOVLW 1
;PULISCI DISPLAY
02BE 22C8
00777
CALL DISPLAY
02BF 22D8
00778
CALL MS1
;ULTERIORE RITARDO
02C0 3002
00779
MOVLW 2
;CURSORE INIZIO RIGA
02C1 22C8
00780
CALL DISPLAY
02C2 22D8
00781
CALL MS1
;ULTERIORE RITARDO
02C3 3040
00782
MOVLW 0x40
;INDIRIZZO CGRAM
02C4 22C8
00783
CALL DISPLAY
02C5 3080
00784
MOVLW 0X80
;INDIRIZZO DDRAM
02C6 22C8
00785
CALL DISPLAY
02C7 0008
00786
RETURN
00787
00788 ;**********ROUTINE INVIO DATI DISPLAY
02C8
00789 DISPLAY
02C8 0086
00790
MOVWF PORTB
;PRESENTA DATO SU BUS LCD
02C9 1788
00791
BSF PORTD,E
;IMPULSO DI ABILITAZIONE LETTURA
02CA 0000
00792
NOP
74
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
MAGN77.ASM 4-8-2006 12:06:09
PAGE 18
LINE SOURCE TEXT
02CB 1388
02CC 22D8
02CD 0008
02CE
02CF
02D0
02D1
02D2
02D3
02D4
02D5
02D6
02D7
02D8
02D9
02DA
02DB
02DC
02DD
02DE
02DF
02E0
02E1
02E2
02E3
02E4
02E5
02E6
02E7
02E8
02E9
02EA
02EB
02EC
02ED
02EE
02EF
02F0
02F1
02F2
02F3
00793
BCF PORTD,E
00794
CALL MS1
;RITARDO 1 MS
00795
RETURN
00796
00797 ;**********ROUTINE COMANDO CURSORE INIZIO SECONDA RIGA
1308
00798 HOME2 BCF PORTD,RS
0000
00799
NOP
30C0
00800
MOVLW 0xC0
22C8
00801
CALL DISPLAY
0008
00802
RETURN
00803
00804 ;**********ROUTINE COMANDO CURSORE INIZIO PRIMA RIGA
1308
00805 HOME1 BCF PORTD,RS
0000
00806
NOP
3080
00807
MOVLW 0x80
22C8
00808
CALL DISPLAY
0008
00809
RETURN
00810
00811 ;********** ROUTINE RITARDO 1 MS
01A2
00812 MS1 CLRF MS
3001
00813 LP_MS MOVLW 1
0222
00814
SUBWF MS,0
1D03
00815
BTFSS STATUS,2
2AD9
00816
GOTO LP_MS
0008
00817
RETURN
00818
00819 ;********** ROUTINE RITARDO 2 MS
01A2
00820 MS2 CLRF MS
3002
00821 LP_MS2 MOVLW 2
0222
00822
SUBWF MS,0
1D03
00823
BTFSS STATUS,2
2ADF
00824
GOTO LP_MS2
0008
00825
RETURN
00826
00827 ;********** ROUTINE RITARDO 20 MS
01A2
00828 MS20 CLRF MS
3014
00829 LP20 MOVLW D'20'
0222
00830
SUBWF MS,0
1D03
00831
BTFSS STATUS,2
2AE5
00832
GOTO LP20
0008
00833
RETURN
00834
00835 ;**********ROUTINE INIZIALIZZAZIONE PRIMA RIGA
22D3
00836 RIGA1 CALL HOME1
1708
00837
BSF PORTD,RS
;INVIA DATI
3053
00838
MOVLW 'S'
22C8
00839
CALL DISPLAY
3045
00840
MOVLW 'E'
22C8
00841
CALL DISPLAY
304C
00842
MOVLW 'L'
22C8
00843
CALL DISPLAY
3045
00844
MOVLW 'E'
22C8
00845
CALL DISPLAY
75
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
02F4
02F5
02F6
02F7
02F8
02F9
02FA
02FB
02FC
02FD
02FE
02FF
0300
0301
0302
0303
0304
0305
0306
0307
0308
0309
030A
030B
030C
030D
030E
030F
0310
0311
0312
0313
0314
0315
0316
0317
0318
0319
031A
031B
031C
031D
031E
031F
0320
0321
0322
0323
0324
0325
0326
MAGN77.ASM 4-8-2006 12:06:09
PAGE 19
LINE SOURCE TEXT
3043
22C8
3054
22C8
3020
22C8
3046
22C8
3047
22C8
3020
22C8
3050
22C8
3055
22C8
3053
22C8
3048
22C8
3020
22C8
3053
22C8
0008
00846
MOVLW 'C'
00847
CALL DISPLAY
00848
MOVLW 'T'
00849
CALL DISPLAY
00850
MOVLW ' '
00851
CALL DISPLAY
00852
MOVLW 'F'
00853
CALL DISPLAY
00854
MOVLW 'G'
00855
CALL DISPLAY
00856
MOVLW ' '
00857
CALL DISPLAY
00858
MOVLW 'P'
00859
CALL DISPLAY
00860
MOVLW 'U'
00861
CALL DISPLAY
00862
MOVLW 'S'
00863
CALL DISPLAY
00864
MOVLW 'H'
00865
CALL DISPLAY
00866
MOVLW ' '
00867
CALL DISPLAY
00868
MOVLW 'S'
00869
CALL DISPLAY
00870
RETURN
00871
00872 ;********** ROUTINE INIZIALIZZAZIONE SECONDA RIGA
22CE
00873 RIGA2 CALL HOME2
1708
00874
BSF PORTD,RS
;INVIA DATI
3043
00875
MOVLW 'C'
22C8
00876
CALL DISPLAY
304F
00877
MOVLW 'O'
22C8
00878
CALL DISPLAY
304E
00879
MOVLW 'N'
22C8
00880
CALL DISPLAY
3046
00881
MOVLW 'F'
22C8
00882
CALL DISPLAY
3049
00883
MOVLW 'I'
22C8
00884
CALL DISPLAY
3052
00885
MOVLW 'R'
22C8
00886
CALL DISPLAY
304D
00887
MOVLW 'M'
22C8
00888
CALL DISPLAY
3020
00889
MOVLW ' '
22C8
00890
CALL DISPLAY
3050
00891
MOVLW 'P'
22C8
00892
CALL DISPLAY
3055
00893
MOVLW 'U'
22C8
00894
CALL DISPLAY
3053
00895
MOVLW 'S'
22C8
00896
CALL DISPLAY
3048
00897
MOVLW 'H'
22C8
00898
CALL DISPLAY
76
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
0327
0328
0329
032A
032B
032C
032D
032E
032F
3020
22C8
3043
22C8
3020
22C8
3020
22C8
0008
0330
0331
0332
0333
0334
0335
0336
0337
0338
0339
033A
033B
033C
033D
033E
033F
0340
0341
0342
0343
0344
0345
0346
0347
0348
0349
034A
034B
034C
034D
034E
034F
0350
0351
0352
22D3
1708
3053
22C8
3045
22C8
304C
22C8
3045
22C8
3043
22C8
3054
22C8
3020
22C8
3054
22C8
3049
22C8
304D
22C8
3045
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
0008
0353
0354
0355
0356
0357
22CE
1708
3043
22C8
3020
MAGN77.ASM 4-8-2006 12:06:09
PAGE 20
LINE SOURCE TEXT
00899
MOVLW ' '
00900
CALL DISPLAY
00901
MOVLW 'C'
00902
CALL DISPLAY
00903
MOVLW ' '
00904
CALL DISPLAY
00905
MOVLW ' '
00906
CALL DISPLAY
00907
RETURN
00908
00909 ;**********ROUTINE INIZIALIZZAZIONE PRIMA RIGA
00910 TIME1 CALL HOME1
00911
BSF PORTD,RS
;INVIA DATI
00912
MOVLW 'S'
00913
CALL DISPLAY
00914
MOVLW 'E'
00915
CALL DISPLAY
00916
MOVLW 'L'
00917
CALL DISPLAY
00918
MOVLW 'E'
00919
CALL DISPLAY
00920
MOVLW 'C'
00921
CALL DISPLAY
00922
MOVLW 'T'
00923
CALL DISPLAY
00924
MOVLW ' '
00925
CALL DISPLAY
00926
MOVLW 'T'
00927
CALL DISPLAY
00928
MOVLW 'I'
00929
CALL DISPLAY
00930
MOVLW 'M'
00931
CALL DISPLAY
00932
MOVLW 'E'
00933
CALL DISPLAY
00934
MOVLW ' '
00935
CALL DISPLAY
00936
MOVLW ' '
00937
CALL DISPLAY
00938
MOVLW ' '
00939
CALL DISPLAY
00940
MOVLW ' '
00941
CALL DISPLAY
00942
MOVLW ' '
00943
CALL DISPLAY
00944
RETURN
00945
00946 ;**********ROUTINE INIZIALIZZAZIONE PRIMA RIGA
00947 TIME2 CALL HOME2
00948
BSF PORTD,RS
;INVIA DATI
00949
MOVLW 'C'
00950
CALL DISPLAY
00951
MOVLW ' '
77
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
0358
0359
035A
035B
035C
035D
035E
035F
0360
0361
0362
0363
0364
0365
0366
0367
0368
0369
036A
036B
036C
036D
036E
036F
0370
0371
0372
0373
0374
0375
22C8
3028
22C8
3059
22C8
3029
22C8
3020
22C8
3053
22C8
3020
22C8
3028
22C8
304E
22C8
3029
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
0008
0376
0377
0378
0379
037A
037B
037C
037D
037E
037F
0380
0381
0382
0383
0384
0385
0386
0387
0388
0389
038A
1308
0000
30CC
22C8
1708
3031
22C8
3020
22C8
3053
22C8
1889
2B8A
22E4
1C89
2B84
22E4
3001
00C5
0008
1809
MAGN77.ASM 4-8-2006 12:06:09
PAGE 21
LINE SOURCE TEXT
00952
CALL DISPLAY
00953
MOVLW '('
00954
CALL DISPLAY
00955
MOVLW 'Y'
00956
CALL DISPLAY
00957
MOVLW ')'
00958
CALL DISPLAY
00959
MOVLW ' '
00960
CALL DISPLAY
00961
MOVLW 'S'
00962
CALL DISPLAY
00963
MOVLW ' '
00964
CALL DISPLAY
00965
MOVLW '('
00966
CALL DISPLAY
00967
MOVLW 'N'
00968
CALL DISPLAY
00969
MOVLW ')'
00970
CALL DISPLAY
00971
MOVLW ' '
00972
CALL DISPLAY
00973
MOVLW ' '
00974
CALL DISPLAY
00975
MOVLW ' '
00976
CALL DISPLAY
00977
MOVLW ' '
00978
CALL DISPLAY
00979
MOVLW ' '
00980
CALL DISPLAY
00981
RETURN
00982
00983 ;**********ROUTINE COMANDO CURSORE INIZIO SECONDA RIGA
00984 S_TIME BCF PORTD,RS
00985
NOP
00986
MOVLW 0xCC
00987
CALL DISPLAY
00988
BSF PORTD,RS
;INVIA DATI
00989
MOVLW '1'
00990
CALL DISPLAY
00991
MOVLW ' '
00992
CALL DISPLAY
00993
MOVLW 'S'
00994
CALL DISPLAY
00995 TT
BTFSC PORTE,1
;CONTROLLA SE PREMUTO SELECT
00996
GOTO TT1
00997
CALL MS20
;RIMBALZI
00998 TT2 BTFSS PORTE,1
;RILASCIO
00999
GOTO TT2
01000
CALL MS20
01001
MOVLW 1
01002
MOVWF MSEC
01003
RETURN
01004 TT1 BTFSC PORTE,0
;CONTROLLA SE PREMUTO CONFERMA
78
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
038B
038C
038D
038E
038F
0390
0391
0392
0393
0394
0395
0396
0397
0398
0399
039A
039B
039C
039D
039E
039F
03A0
03A1
03A2
03A3
03A4
03A5
03A6
03A7
03A8
03A9
03AA
03AB
03AC
03AD
03AE
03AF
03B0
03B1
03B2
03B3
03B4
03B5
03B6
03B7
03B8
03B9
03BA
03BB
03BC
03BD
03BE
03BF
2B81
22E4
1C09
2B8D
1308
0000
30CC
22C8
1708
3035
22C8
3020
22C8
3053
22C8
1889
2BA3
22E4
1C89
2B9D
22E4
3005
00C5
0008
1809
2B9A
22E4
1C09
2BA6
1308
0000
30CC
22C8
1708
3033
22C8
3030
22C8
3020
22C8
3053
22C8
1889
2BBE
22E4
1C89
2BB8
22E4
301E
00C5
0008
1809
2BB5
MAGN77.ASM 4-8-2006 12:06:09
PAGE 22
LINE SOURCE TEXT
01005
GOTO TT
01006
CALL MS20
;RIMBALZI
01007 TT3 BTFSS PORTE,0
;RILASCIO
01008
GOTO TT3
01009
BCF PORTD,RS
01010
NOP
01011
MOVLW 0xCC
01012
CALL DISPLAY
01013
BSF PORTD,RS
;INVIA DATI
01014
MOVLW '5'
01015
CALL DISPLAY
01016
MOVLW ' '
01017
CALL DISPLAY
01018
MOVLW 'S'
01019
CALL DISPLAY
01020 TTA BTFSC PORTE,1
;CONTROLLA SE PREMUTO SELECT
01021
GOTO TT1A
01022
CALL MS20
;RIMBALZI
01023 TT2A BTFSS PORTE,1
;RILASCIO
01024
GOTO TT2A
01025
CALL MS20
01026
MOVLW 5
01027
MOVWF MSEC
01028
RETURN
01029 TT1A BTFSC PORTE,0
01030
GOTO TTA
01031
CALL MS20
;RIMBALZI
01032 TT3A BTFSS PORTE,0
;RILASCIO
01033
GOTO TT3A
01034
BCF PORTD,RS
01035
NOP
01036
MOVLW 0xCC
01037
CALL DISPLAY
01038
BSF PORTD,RS
;INVIA DATI
01039
MOVLW '3'
01040
CALL DISPLAY
01041
MOVLW '0'
01042
CALL DISPLAY
01043
MOVLW ' '
01044
CALL DISPLAY
01045
MOVLW 'S'
01046
CALL DISPLAY
01047 TTB BTFSC PORTE,1
;CONTROLLA SE PREMUTO SELECT
01048
GOTO TT1B
01049
CALL MS20
;RIMBALZI
01050 TT2B BTFSS PORTE,1
;RILASCIO
01051
GOTO TT2B
01052
CALL MS20
01053
MOVLW D'30'
01054
MOVWF MSEC
01055
RETURN
01056 TT1B BTFSC PORTE,0
01057
GOTO TTB
79
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
03C0
03C1
03C2
03C3
03C4
03C5
03C6
03C7
03C8
03C9
03CA
03CB
03CC
03CD
03CE
03CF
03D0
03D1
03D2
03D3
03D4
03D5
03D6
03D7
03D8
03D9
03DA
03DB
03DC
03DD
03DE
03DF
03E0
03E1
03E2
03E3
03E4
03E5
03E6
03E7
03E8
03E9
03EA
03EB
03EC
03ED
03EE
03EF
03F0
03F1
03F2
MAGN77.ASM 4-8-2006 12:06:09
PAGE 23
LINE SOURCE TEXT
22E4
01058
CALL MS20
;RIMBALZI
1C09
01059 TT3B BTFSS PORTE,0
;RILASCIO
2BC1
01060
GOTO TT3B
1308
01061
BCF PORTD,RS
0000
01062
NOP
30CC
01063
MOVLW 0xCC
22C8
01064
CALL DISPLAY
1708
01065
BSF PORTD,RS
;INVIA DATI
3036
01066
MOVLW '6'
22C8
01067
CALL DISPLAY
3030
01068
MOVLW '0'
22C8
01069
CALL DISPLAY
3020
01070
MOVLW ' '
22C8
01071
CALL DISPLAY
3053
01072
MOVLW 'S'
22C8
01073
CALL DISPLAY
1889
01074 TTC BTFSC PORTE,1
;CONTROLLA SE PREMUTO SELECT
2BD9
01075
GOTO TT1C
22E4
01076
CALL MS20
;RIMBALZI
1C89
01077 TT2C BTFSS PORTE,1
;RILASCIO
2BD3
01078
GOTO TT2C
22E4
01079
CALL MS20
303C
01080
MOVLW D'60'
00C5
01081
MOVWF MSEC
0008
01082
RETURN
1809
01083 TT1C BTFSC PORTE,0
2BD0
01084
GOTO TTC
22E4
01085
CALL MS20
;RIMBALZI
1C09
01086 TT3C BTFSS PORTE,0
;RILASCIO
2BDC
01087
GOTO TT3C
1308
01088
BCF PORTD,RS
0000
01089
NOP
30CC
01090
MOVLW 0xCC
22C8
01091
CALL DISPLAY
1708
01092
BSF PORTD,RS
;INVIA DATI
3039
01093
MOVLW '9'
22C8
01094
CALL DISPLAY
3030
01095
MOVLW '0'
22C8
01096
CALL DISPLAY
3020
01097
MOVLW ' '
22C8
01098
CALL DISPLAY
3053
01099
MOVLW 'S'
22C8
01100
CALL DISPLAY
305A
01101
MOVLW D'90'
00C5
01102
MOVWF MSEC
0008
01103
RETURN
01104
01105 ;********** ROUTINE START
22D3
01106 START CALL HOME1
1708
01107
BSF PORTD,RS
3046
01108
MOVLW 'F'
22C8
01109
CALL DISPLAY
304F
01110
MOVLW 'O'
80
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
03F3
03F4
03F5
03F6
03F7
03F8
03F9
03FA
03FB
03FC
03FD
03FE
03FF
0400
0401
0402
0403
0404
0405
0406
0407
0408
0409
040A
040B
040C
040D
040E
040F
0410
0411
0412
0413
0414
0415
0416
0417
0418
0419
041A
041B
041C
041D
041E
041F
0420
0421
0422
0423
0424
0425
0426
0427
22C8
3052
22C8
3020
22C8
304D
22C8
3045
22C8
3041
22C8
3053
22C8
3055
22C8
3052
22C8
3045
22C8
304D
22C8
3045
22C8
304E
22C8
3054
22C8
3020
22C8
22CE
1708
3050
22C8
3055
22C8
3053
22C8
3048
22C8
3020
22C8
3042
22C8
3055
22C8
3054
22C8
3054
22C8
304F
22C8
304E
22C8
MAGN77.ASM 4-8-2006 12:06:09
PAGE 24
LINE SOURCE TEXT
01111
01112
01113
01114
01115
01116
01117
01118
01119
01120
01121
01122
01123
01124
01125
01126
01127
01128
01129
01130
01131
01132
01133
01134
01135
01136
01137
01138
01139
01140
01141
01142
01143
01144
01145
01146
01147
01148
01149
01150
01151
01152
01153
01154
01155
01156
01157
01158
01159
01160
01161
01162
01163
CALL DISPLAY
MOVLW 'R'
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW 'M'
CALL DISPLAY
MOVLW 'E'
CALL DISPLAY
MOVLW 'A'
CALL DISPLAY
MOVLW 'S'
CALL DISPLAY
MOVLW 'U'
CALL DISPLAY
MOVLW 'R'
CALL DISPLAY
MOVLW 'E'
CALL DISPLAY
MOVLW 'M'
CALL DISPLAY
MOVLW 'E'
CALL DISPLAY
MOVLW 'N'
CALL DISPLAY
MOVLW 'T'
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
CALL HOME2
BSF PORTD,RS
MOVLW 'P'
CALL DISPLAY
MOVLW 'U'
CALL DISPLAY
MOVLW 'S'
CALL DISPLAY
MOVLW 'H'
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW 'B'
CALL DISPLAY
MOVLW 'U'
CALL DISPLAY
MOVLW 'T'
CALL DISPLAY
MOVLW 'T'
CALL DISPLAY
MOVLW 'O'
CALL DISPLAY
MOVLW 'N'
CALL DISPLAY
81
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
0428
0429
042A
042B
042C
042D
042E
042F
0430
0431
0432
0433
0434
3020
22C8
3043
22C8
3020
22C8
3020
22C8
3020
22C8
1809
2C32
0008
0435
0436
0437
0438
0439
043A
043B
043C
043D
043E
043F
0440
0441
0442
0443
0444
0445
0446
0447
0448
0449
044A
044B
044C
044D
044E
044F
0450
0451
0452
0453
0454
0455
0456
0457
0458
0459
045A
22D3
1987
2C80
1708
305A
22C8
3020
22C8
304F
22C8
3046
22C8
3046
22C8
3020
22C8
1888
2CC7
3059
22C8
3020
22C8
304F
22C8
3046
22C8
3046
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
MAGN77.ASM 4-8-2006 12:06:09
PAGE 25
LINE SOURCE TEXT
01164
MOVLW ' '
01165
CALL DISPLAY
01166
MOVLW 'C'
01167
CALL DISPLAY
01168
MOVLW ' '
01169
CALL DISPLAY
01170
MOVLW ' '
01171
CALL DISPLAY
01172
MOVLW ' '
01173
CALL DISPLAY
01174 LCD1L BTFSC PORTE,0
;CONTROLLA SE START MISURA
01175
GOTO LCD1L
01176
RETURN
01177
01178 ;********** ROUTINE LCDA
01179 LCDA CALL HOME1
01180
BTFSC PORTC,3
;Z E' OFF?
01181
GOTO LCDR1
01182
BSF PORTD,RS
01183
MOVLW 'Z'
01184
CALL DISPLAY
01185
MOVLW ' '
01186
CALL DISPLAY
01187
MOVLW 'O'
01188
CALL DISPLAY
01189
MOVLW 'F'
01190
CALL DISPLAY
01191
MOVLW 'F'
01192
CALL DISPLAY
01193
MOVLW ' '
01194
CALL DISPLAY
01195
BTFSC PORTD,1
;Y E' OFF?
01196
GOTO LCDR2
01197
MOVLW 'Y'
01198
CALL DISPLAY
01199
MOVLW ' '
01200
CALL DISPLAY
01201
MOVLW 'O'
01202
CALL DISPLAY
01203
MOVLW 'F'
01204
CALL DISPLAY
01205
MOVLW 'F'
01206
CALL DISPLAY
01207
MOVLW ' '
01208
CALL DISPLAY
01209
MOVLW ' '
01210
CALL DISPLAY
01211
MOVLW ' '
01212
CALL DISPLAY
01213
MOVLW ' '
01214
CALL DISPLAY
01215
MOVLW ' '
01216
CALL DISPLAY
82
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
045B
045C
045D
045E
045F
0460
0461
0462
0463
0464
0465
0466
0467
0468
0469
046A
046B
046C
046D
046E
046F
0470
0471
0472
0473
0474
0475
0476
0477
0478
0479
047A
047B
047C
047D
047E
047F
0480
0481
0482
0483
0484
0485
0486
0487
0488
0489
048A
048B
048C
048D
048E
048F
22CE
1708
3058
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3001
00A9
0008
22D3
1708
305A
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
MAGN77.ASM 4-8-2006 12:06:09
PAGE 26
LINE SOURCE TEXT
01217
CALL HOME2
01218
BSF PORTD,RS
01219
MOVLW 'X'
01220
CALL DISPLAY
01221
MOVLW ' '
01222
CALL DISPLAY
01223
MOVLW ' '
01224
CALL DISPLAY
01225
MOVLW ' '
01226
CALL DISPLAY
01227
MOVLW ' '
01228
CALL DISPLAY
01229
MOVLW ' '
01230
CALL DISPLAY
01231
MOVLW ' '
01232
CALL DISPLAY
01233
MOVLW ' '
01234
CALL DISPLAY
01235
MOVLW ' '
01236
CALL DISPLAY
01237
MOVLW ' '
01238
CALL DISPLAY
01239
MOVLW ' '
01240
CALL DISPLAY
01241
MOVLW ' '
01242
CALL DISPLAY
01243
MOVLW ' '
01244
CALL DISPLAY
01245
MOVLW ' '
01246
CALL DISPLAY
01247
MOVLW ' '
01248
CALL DISPLAY
01249
MOVLW ' '
01250
CALL DISPLAY
01251
MOVLW 1
01252
MOVWF FLAG
01253
RETURN
01254 LCDR1 CALL HOME1
01255
BSF PORTD,RS
;INVIA DATI
01256
MOVLW 'Z'
01257
CALL DISPLAY
01258
MOVLW ' '
01259
CALL DISPLAY
01260
MOVLW ' '
01261
CALL DISPLAY
01262
MOVLW ' '
01263
CALL DISPLAY
01264
MOVLW ' '
01265
CALL DISPLAY
01266
MOVLW ' '
01267
CALL DISPLAY
01268
MOVLW ' '
01269
CALL DISPLAY
83
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
0490
0491
0492
0493
0494
0495
0496
0497
0498
0499
049A
049B
049C
049D
049E
049F
04A0
04A1
04A2
04A3
04A4
04A5
04A6
04A7
04A8
04A9
04AA
04AB
04AC
04AD
04AE
04AF
04B0
04B1
04B2
04B3
04B4
04B5
04B6
04B7
04B8
04B9
04BA
04BB
04BC
04BD
04BE
04BF
04C0
04C1
04C2
04C3
04C4
3020
22C8
3059
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
22CE
1708
3058
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3003
MAGN77.ASM 4-8-2006 12:06:09
PAGE 27
LINE SOURCE TEXT
01270
01271
01272
01273
01274
01275
01276
01277
01278
01279
01280
01281
01282
01283
01284
01285
01286
01287
01288
01289
01290
01291
01292
01293
01294
01295
01296
01297
01298
01299
01300
01301
01302
01303
01304
01305
01306
01307
01308
01309
01310
01311
01312
01313
01314
01315
01316
01317
01318
01319
01320
01321
01322
MOVLW ' '
CALL DISPLAY
MOVLW 'Y'
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
CALL HOME2
BSF PORTD,RS
MOVLW 'X'
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW ' '
CALL DISPLAY
MOVLW 3
84
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
04C5
04C6
04C7
04C8
04C9
04CA
04CB
04CC
04CD
04CE
04CF
04D0
04D1
04D2
04D3
04D4
04D5
04D6
04D7
04D8
04D9
04DA
04DB
04DC
04DD
04DE
04DF
04E0
04E1
04E2
04E3
04E4
04E5
04E6
04E7
04E8
04E9
04EA
04EB
04EC
04ED
04EE
04EF
04F0
04F1
04F2
04F3
04F4
04F5
04F6
04F7
04F8
04F9
00A9
0008
3020
22C8
3020
22C8
3059
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
22CE
1708
3058
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
MAGN77.ASM 4-8-2006 12:06:09
PAGE 28
LINE SOURCE TEXT
01323
MOVWF FLAG
01324
RETURN
01325 LCDR2 MOVLW ' '
01326
CALL DISPLAY
01327
MOVLW ' '
01328
CALL DISPLAY
01329
MOVLW 'Y'
01330
CALL DISPLAY
01331
MOVLW ' '
01332
CALL DISPLAY
01333
MOVLW ' '
01334
CALL DISPLAY
01335
MOVLW ' '
01336
CALL DISPLAY
01337
MOVLW ' '
01338
CALL DISPLAY
01339
MOVLW ' '
01340
CALL DISPLAY
01341
MOVLW ' '
01342
CALL DISPLAY
01343
MOVLW ' '
01344
CALL DISPLAY
01345
CALL HOME2
01346
BSF PORTD,RS
01347
MOVLW 'X'
01348
CALL DISPLAY
01349
MOVLW ' '
01350
CALL DISPLAY
01351
MOVLW ' '
01352
CALL DISPLAY
01353
MOVLW ' '
01354
CALL DISPLAY
01355
MOVLW ' '
01356
CALL DISPLAY
01357
MOVLW ' '
01358
CALL DISPLAY
01359
MOVLW ' '
01360
CALL DISPLAY
01361
MOVLW ' '
01362
CALL DISPLAY
01363
MOVLW ' '
01364
CALL DISPLAY
01365
MOVLW ' '
01366
CALL DISPLAY
01367
MOVLW ' '
01368
CALL DISPLAY
01369
MOVLW ' '
01370
CALL DISPLAY
01371
MOVLW ' '
01372
CALL DISPLAY
01373
MOVLW ' '
01374
CALL DISPLAY
01375
MOVLW ' '
85
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
04FA
04FB
04FC
04FD
04FE
04FF
22C8
3020
22C8
3002
00A9
0008
0500
0501
0502
0503
0504
0505
0506
0507
0508
0509
050A
050B
050C
050D
050E
050F
0510
0511
0512
0513
0514
0515
0516
0517
0518
22CE
1708
3058
22C8
3020
22C8
0833
2700
22C8
0834
2700
22C8
0835
2700
22C8
0836
2700
22C8
0837
2700
22C8
0838
2700
22C8
0008
0519
051A
051B
051C
051D
051E
051F
0520
0521
0522
0523
0524
0525
0526
0527
0528
0529
052A
1308
0000
3089
22C8
1708
0833
2700
22C8
0834
2700
22C8
0835
2700
22C8
0836
2700
22C8
0837
MAGN77.ASM 4-8-2006 12:06:09
PAGE 29
LINE SOURCE TEXT
01376
CALL DISPLAY
01377
MOVLW ' '
01378
CALL DISPLAY
01379
MOVLW 2
01380
MOVWF FLAG
01381
RETURN
01382
01383 ;******************ROUTINE VISX
01384 VISX CALL HOME2
01385
BSF PORTD,RS
01386
MOVLW 'X'
01387
CALL DISPLAY
01388
MOVLW ' '
01389
CALL DISPLAY
01390
MOVF MIGLIAIA_C,0
01391
CALL TABELLA
01392
CALL DISPLAY
01393
MOVF MIGLIAIA_D,0
01394
CALL TABELLA
01395
CALL DISPLAY
01396
MOVF MIGLIAIA,0
01397
CALL TABELLA
01398
CALL DISPLAY
01399
MOVF CENTINAIA,0
01400
CALL TABELLA
01401
CALL DISPLAY
01402
MOVF DECINE,0
01403
CALL TABELLA
01404
CALL DISPLAY
01405
MOVF UNITA,0
01406
CALL TABELLA
01407
CALL DISPLAY
01408
RETURN
01409
01410 ;******************ROUTINE VISY
01411 VISY BCF PORTD,RS
01412
NOP
01413
MOVLW 0x89
01414
CALL DISPLAY
01415
BSF PORTD,RS
01416
MOVF MIGLIAIA_C,0
01417
CALL TABELLA
01418
CALL DISPLAY
01419
MOVF MIGLIAIA_D,0
01420
CALL TABELLA
01421
CALL DISPLAY
01422
MOVF MIGLIAIA,0
01423
CALL TABELLA
01424
CALL DISPLAY
01425
MOVF CENTINAIA,0
01426
CALL TABELLA
01427
CALL DISPLAY
01428
MOVF DECINE,0
86
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
052B
052C
052D
052E
052F
0530
2700
22C8
0838
2700
22C8
0008
0531
0532
0533
0534
0535
0536
0537
0538
0539
053A
053B
053C
053D
053E
053F
0540
0541
0542
0543
0544
0545
0546
0547
0548
1308
0000
3081
22C8
1708
0833
2700
22C8
0834
2700
22C8
0835
2700
22C8
0836
2700
22C8
0837
2700
22C8
0838
2700
22C8
0008
0549
054A
054B
054C
054D
054E
054F
0550
0551
0552
0553
0554
0555
0556
0557
0558
0559
055A
055B
22D3
1708
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
304F
22C8
3046
22C8
3046
22C8
3053
MAGN77.ASM 4-8-2006 12:06:09
PAGE 30
LINE SOURCE TEXT
01429
CALL TABELLA
01430
CALL DISPLAY
01431
MOVF UNITA,0
01432
CALL TABELLA
01433
CALL DISPLAY
01434
RETURN
01435
01436 ;******************ROUTINE VISZ
01437 VISZ BCF PORTD,RS
01438
NOP
01439
MOVLW 0x81
01440
CALL DISPLAY
01441
BSF PORTD,RS
01442
MOVF MIGLIAIA_C,0
01443
CALL TABELLA
01444
CALL DISPLAY
01445
MOVF MIGLIAIA_D,0
01446
CALL TABELLA
01447
CALL DISPLAY
01448
MOVF MIGLIAIA,0
01449
CALL TABELLA
01450
CALL DISPLAY
01451
MOVF CENTINAIA,0
01452
CALL TABELLA
01453
CALL DISPLAY
01454
MOVF DECINE,0
01455
CALL TABELLA
01456
CALL DISPLAY
01457
MOVF UNITA,0
01458
CALL TABELLA
01459
CALL DISPLAY
01460
RETURN
01461
01462 ;********** ROUTINE LCDREL
01463 LCDREL CALL HOME1
01464
BSF PORTD,RS
01465
MOVLW ' '
01466
CALL DISPLAY
01467
MOVLW ' '
01468
CALL DISPLAY
01469
MOVLW ' '
01470
CALL DISPLAY
01471
MOVLW ' '
01472
CALL DISPLAY
01473
MOVLW ' '
01474
CALL DISPLAY
01475
MOVLW 'O'
01476
CALL DISPLAY
01477
MOVLW 'F'
01478
CALL DISPLAY
01479
MOVLW 'F'
01480
CALL DISPLAY
01481
MOVLW 'S'
87
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
055C
055D
055E
055F
0560
0561
0562
0563
0564
0565
0566
0567
0568
0569
056A
056B
056C
056D
056E
056F
0570
0571
0572
0573
0574
0575
0576
0577
0578
0579
057A
057B
057C
057D
057E
057F
0580
0581
0582
0583
0584
0585
0586
0587
0588
0589
058A
058B
058C
058D
MAGN77.ASM 4-8-2006 12:06:09
PAGE 31
LINE SOURCE TEXT
22C8
3045
22C8
3054
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
22CE
1708
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
3020
22C8
0008
01482
CALL DISPLAY
01483
MOVLW 'E'
01484
CALL DISPLAY
01485
MOVLW 'T'
01486
CALL DISPLAY
01487
MOVLW ' '
01488
CALL DISPLAY
01489
MOVLW ' '
01490
CALL DISPLAY
01491
MOVLW ' '
01492
CALL DISPLAY
01493
MOVLW ' '
01494
CALL DISPLAY
01495
MOVLW ' '
01496
CALL DISPLAY
01497
CALL HOME2
01498
BSF PORTD,RS
01499
MOVLW ' '
01500
CALL DISPLAY
01501
MOVLW ' '
01502
CALL DISPLAY
01503
MOVLW ' '
01504
CALL DISPLAY
01505
MOVLW ' '
01506
CALL DISPLAY
01507
MOVLW ' '
01508
CALL DISPLAY
01509
MOVLW ' '
01510
CALL DISPLAY
01511
MOVLW ' '
01512
CALL DISPLAY
01513
MOVLW ' '
01514
CALL DISPLAY
01515
MOVLW ' '
01516
CALL DISPLAY
01517
MOVLW ' '
01518
CALL DISPLAY
01519
MOVLW ' '
01520
CALL DISPLAY
01521
MOVLW ' '
01522
CALL DISPLAY
01523
MOVLW ' '
01524
CALL DISPLAY
01525
MOVLW ' '
01526
CALL DISPLAY
01527
MOVLW ' '
01528
CALL DISPLAY
01529
MOVLW ' '
01530
CALL DISPLAY
01531
RETURN
01532
01533 ;******************ROUTINE LCDOF
058E 1308
01534 LCDOFF BCF PORTD,RS
88
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
MAGN77.ASM 4-8-2006 12:06:09
PAGE 32
LINE SOURCE TEXT
058F 0000
01535
NOP
0590 30C4
01536
MOVLW 0xC4
0591 22C8
01537
CALL DISPLAY
0592 1708
01538
BSF PORTD,RS
Message[305]: Using default destination of 1 (file).
0593 08C4
01539
MOVF SEGNO
0594 1D03
01540
BTFSS STATUS,2
0595 2D99
01541
GOTO MENO1
0596 302B
01542
MOVLW '+'
0597 22C8
01543
CALL DISPLAY
0598 2D9B
01544
GOTO LCDOF1
0599 302D
01545 MENO1 MOVLW '-'
059A 22C8
01546
CALL DISPLAY
059B 0833
01547 LCDOF1 MOVF MIGLIAIA_C,0
059C 2700
01548
CALL TABELLA
059D 22C8
01549
CALL DISPLAY
059E 0834
01550
MOVF MIGLIAIA_D,0
059F 2700
01551
CALL TABELLA
05A0 22C8
01552
CALL DISPLAY
05A1 0835
01553
MOVF MIGLIAIA,0
05A2 2700
01554
CALL TABELLA
05A3 22C8
01555
CALL DISPLAY
05A4 0836
01556
MOVF CENTINAIA,0
05A5 2700
01557
CALL TABELLA
05A6 22C8
01558
CALL DISPLAY
05A7 0837
01559
MOVF DECINE,0
05A8 2700
01560
CALL TABELLA
05A9 22C8
01561
CALL DISPLAY
05AA 0838
01562
MOVF UNITA,0
05AB 2700
01563
CALL TABELLA
05AC 22C8
01564
CALL DISPLAY
05AD 0008
01565
RETURN
01566
01567 ;******************ROUTINE INTERRUPT ******************
05AE
01568 INTERRUPT
05AE 00A0
01569
MOVWF SAVE_W
;SALVA CONTESTO
05AF 0E03
01570
SWAPF STATUS,0
05B0 00A1
01571
MOVWF SAVE_S
05B1 0000
01572
NOP
05B2 3009
01573
MOVLW 9
05B3 0081
01574
MOVWF TMR0
Message[305]: Using default destination of 1 (file).
05B4 0AA2
01575
INCF MS
05B5 3064
01576
MOVLW D'100'
05B6 0222
01577
SUBWF MS,0
05B7 1D03
01578
BTFSS STATUS,2
05B8 2DC1
01579
GOTO ESCI
Message[305]: Using default destination of 1 (file).
05B9 0AA3
01580
INCF DS
05BA 01A2
01581
CLRF MS
05BB 300A
01582
MOVLW D'10'
05BC 0223
01583
SUBWF DS,0
05BD 1D03
01584
BTFSS STATUS,2
89
Ferdinando_Barbon
MPASM 02.40 Released
LOC OBJECT CODE
VALUE
MAGN77.ASM 4-8-2006 12:06:09
PAGE 33
LINE SOURCE TEXT
05BE 2DC1
01585
GOTO ESCI
Message[305]: Using default destination of 1 (file).
05BF 0AA4
01586
INCF SEC
05C0 01A3
01587
CLRF DS
05C1 1909
01588 ESCI BTFSC PORTE,2
;CONTROLLA SE AZIONATO PULSANTE OFFSET
05C2 2DC6
01589
GOTO ESCIF
05C3 3001
01590
MOVLW 1
05C4 00BA
01591
MOVWF ZER
05C5 1588
01592
BSF PORTD,3
;ACCENDI LED MISURA RELATIVA
05C6 110B
01593 ESCIF BCF INTCON,2
;Azzera flag interrupt
05C7 0E21
01594
SWAPF SAVE_S,0
;Ripristina contesto
05C8 0083
01595
MOVWF STATUS
Message[305]: Using default destination of 1 (file).
05C9 0EA0
01596
SWAPF SAVE_W
05CA 0E20
01597
SWAPF SAVE_W,0
05CB 0009
01598
RETFIE
01599
01600 ;***********************************************
0700
01601
ORG 700
;TABELLA IN PAGINA 7
01602 ;******** CODICI PER DISPLAY LCD
0700 00B9
01603 TABELLA MOVWF DATO
;SALVA DATO
0701 3007
01604
MOVLW 7
;PREDISPONI PCLATH PER RITORNO
0702 008A
01605
MOVWF PCLATH
0703 0839
01606
MOVF DATO,0
;RIPRENDI DATO
Message[305]: Using default destination of 1 (file).
0704 0782
01607
ADDWF PCL
0705 3430
01608
RETLW '0'
0706 3431
01609
RETLW '1'
0707 3432
01610
RETLW '2'
0708 3433
01611
RETLW '3'
0709 3434
01612
RETLW '4'
070A 3435
01613
RETLW '5'
070B 3436
01614
RETLW '6'
070C 3437
01615
RETLW '7'
070D 3438
01616
RETLW '8'
070E 3439
01617
RETLW '9'
01618
01619 ;*******************
01620
END ;***
90
Ferdinando_Barbon
MPASM 02.40 Released
SYMBOL TABLE
LABEL
ACKDT
ACKEN
ACKSTAT
ADCON0
ADCON1
ADCS0
ADCS1
ADDEN
ADFM
ADIE
ADIF
ADON
ADRESH
ADRESL
BCD
BCD1
BCD11
BCD111
BCD2
BCD22
BCD222
BCD2U
BCD3
BCD33
BCD4
BCD5
BCD6
BCD7
BCDU
BCLIE
BCLIF
BF
BRGH
C
CCP1CON
CCP1IE
CCP1IF
CCP1M0
CCP1M1
CCP1M2
CCP1M3
CCP1X
CCP1Y
CCP2CON
CCP2IE
CCP2IF
CCP2M0
CCP2M1
CCP2M2
CCP2M3
CCP2X
CCP2Y
CCPR1H
MAGN77.ASM 4-8-2006 12:06:09
PAGE 34
VALUE
00000005
00000004
00000006
0000001F
0000009F
00000006
00000007
00000003
00000007
00000006
00000006
00000000
0000001E
0000009E
00000131
00000136
00000149
00000143
00000168
0000017A
00000175
00000186
00000193
0000019F
000001AC
000001B5
000001BD
000001C5
0000015A
00000003
00000003
00000000
00000002
00000000
00000017
00000002
00000002
00000000
00000001
00000002
00000003
00000005
00000004
0000001D
00000000
00000000
00000000
00000001
00000002
00000003
00000005
00000004
00000016
91
Ferdinando_Barbon
MPASM 02.40 Released
SYMBOL TABLE
LABEL
CCPR1L
CCPR2H
CCPR2L
CENTINAIA
CHS0
CHS1
CHS2
CKE
CKP
CONFIGURA_LCD
CREN
CSRC
D
DATA_ADDRESS
DATO
DC
DECINE
DISPLAY
DS
D_A
E
EEADR
EEADRH
EECON1
EECON2
EEDATA
EEDATH
EEIE
EEIF
EEPGD
ESCI
ESCIF
F
FERR
FLAG
FSR
FXH
FXHH
FXL
FYH
FYHH
FYL
FZH
FZHH
FZL
GCEN
GIE
GO
GO_DONE
HOME1
HOME2
I2C_DATA
I2C_READ
MAGN77.ASM 4-8-2006 12:06:09
PAGE 35
VALUE
00000015
0000001C
0000001B
00000036
00000003
00000004
00000005
00000006
00000004
000002B6
00000004
00000007
00000005
00000005
00000039
00000001
00000037
000002C8
00000023
00000005
00000007
0000010D
0000010F
0000018C
0000018D
0000010C
0000010E
00000004
00000004
00000007
000005C1
000005C6
00000001
00000002
00000029
00000004
0000002B
0000002C
0000002A
0000002E
0000002F
0000002D
00000026
00000027
00000025
00000007
00000007
00000002
00000002
000002D3
000002CE
00000005
00000002
92
Ferdinando_Barbon
MPASM 02.40 Released
SYMBOL TABLE
LABEL
I2C_START
I2C_STOP
IBF
IBOV
INDF
INTCON
INTE
INTEDG
INTERRUPT
INTF
IRP
LCD1L
LCDA
LCDOF1
LCDOFF
LCDR1
LCDR2
LCDREL
LEGGI
LG1
LG2
LOOPA
LOOPAA
LP20
LPPRR
LPSEC
LPSECP
LPT
LPTMR
LP_MS
LP_MS2
LTCH
LTCH1
LTCH2
LTCHH
LTCHH1
LTCHH2
LTCL
LTCL1
LTCL2
MAIN
MEM1
MEM2
MEM3
MEMORIA
MENO
MENO1
MIGLIAIA
MIGLIAIA_C
MIGLIAIA_D
MISURA
MM1
MM11
MAGN77.ASM 4-8-2006 12:06:09
PAGE 36
VALUE
00000003
00000004
00000007
00000005
00000000
0000000B
00000004
00000006
000005AE
00000001
00000007
00000432
00000435
0000059B
0000058E
00000480
000004C7
00000549
000000AE
000000B2
000000F4
00000038
0000003B
000002E5
00000060
000002AA
000002B1
0000009F
000000A9
000002D9
000002DF
0000003C
0000003F
00000042
0000003D
00000040
00000043
0000003B
0000003E
00000041
00000005
00000030
00000031
00000032
000001C8
00000246
00000599
00000035
00000033
00000034
00000094
000001F2
00000226
93
Ferdinando_Barbon
MPASM 02.40 Released
MAGN77.ASM 4-8-2006 12:06:09
SYMBOL TABLE
LABEL
VALUE
MM2
MM21
MM3
MM31
MM4
MM41
MS
MS1
MS2
MS20
MSEC
NOT_A
NOT_ADDRESS
NOT_BO
NOT_BOR
NOT_DONE
NOT_PD
NOT_POR
NOT_RBPU
NOT_RC8
NOT_T1SYNC
NOT_TO
NOT_TX8
NOT_W
NOT_WRITE
OBF
OERR
OPTION_REG
P
PCFG0
PCFG1
PCFG2
PCFG3
PCL
PCLATH
PCON
PEIE
PEN
PIE1
PIE2
PIR1
PIR2
PIU
PORTA
PORTB
PORTC
PORTD
PORTE
PR2
PS0
PS1
PS2
PSA
000001D5
00000209
000001F7
0000022B
000001E7
0000021B
00000022
000002D8
000002DE
000002E4
00000045
00000005
00000005
00000000
00000000
00000002
00000003
00000001
00000007
00000006
00000002
00000004
00000006
00000002
00000002
00000006
00000001
00000081
00000004
00000000
00000001
00000002
00000003
00000002
0000000A
0000008E
00000006
00000002
0000008C
0000008D
0000000C
0000000D
00000264
00000005
00000006
00000007
00000008
00000009
00000092
00000000
00000001
00000002
00000003
PAGE 37
94
Ferdinando_Barbon
MPASM 02.40 Released
SYMBOL TABLE
LABEL
PSPIE
PSPIF
PSPMODE
P_RITARDO
R
RBIE
RBIF
RC8_9
RC9
RCD8
RCEN
RCIE
RCIF
RCREG
RCSTA
RD
READ_WRITE
RELATIVO
RIGA1
RIGA2
RP0
RP1
RS
RSEN
RX9
RX9D
R_W
S
S1
S2
S3
S4
S5
SAVE_S
SAVE_W
SEC
SEC1
SEGNO
SELEZ
SEN
SER1X
SER1Y
SER1Z
SER2X
SER2Y
SER2Z
SER3X
SER3Y
SER3Z
SERF
SERIALE
SFUORI
SMP
MAGN77.ASM 4-8-2006 12:06:09
PAGE 38
VALUE
00000007
00000007
00000004
000002AE
00000002
00000003
00000000
00000006
00000006
00000000
00000003
00000005
00000005
0000001A
00000018
00000000
00000002
0000005F
000002EA
0000030D
00000005
00000006
00000006
00000001
00000006
00000000
00000002
00000003
00000076
00000079
00000082
00000085
0000008E
00000021
00000020
00000024
000002A7
00000044
00000071
00000000
00000280
0000028C
00000298
00000284
00000290
0000029C
00000288
00000294
000002A0
0000027C
00000278
00000090
00000007
95
Ferdinando_Barbon
MPASM 02.40 Released
SYMBOL TABLE
LABEL
SOTTRAI
SPBRG
SPEN
SREN
SS
SS1
SS2
SS3
SSPADD
SSPBUF
SSPCON
SSPCON2
SSPEN
SSPIE
SSPIF
SSPM0
SSPM1
SSPM2
SSPM3
SSPOV
SSPSTAT
START
STATUS
STT
SYNC
S_TIME
T0CS
T0IE
T0IF
T0SE
T1CKPS0
T1CKPS1
T1CON
T1INSYNC
T1OSCEN
T1SYNC
T2CKPS0
T2CKPS1
T2CON
TABELLA
TIME1
TIME2
TMR0
TMR1CS
TMR1H
TMR1IE
TMR1IF
TMR1L
TMR1ON
TMR2
TMR2IE
TMR2IF
TMR2ON
MAGN77.ASM 4-8-2006 12:06:09
PAGE 39
VALUE
000001FC
00000099
00000007
00000005
00000259
00000260
0000026F
00000275
00000093
00000013
00000014
00000091
00000005
00000003
00000003
00000000
00000001
00000002
00000003
00000006
00000094
000003EE
00000003
00000230
00000004
00000376
00000005
00000005
00000002
00000004
00000004
00000005
00000010
00000002
00000003
00000002
00000000
00000001
00000012
00000700
00000330
00000353
00000001
00000001
0000000F
00000000
00000000
0000000E
00000000
00000011
00000001
00000001
00000002
96
Ferdinando_Barbon
MPASM 02.40 Released
SYMBOL TABLE
LABEL
MAGN77.ASM 4-8-2006 12:06:09
PAGE 40
VALUE
TOUTPS0
00000003
TOUTPS1
00000004
TOUTPS2
00000005
TOUTPS3
00000006
TRISA
00000085
TRISB
00000086
TRISC
00000087
TRISD
00000088
TRISE
00000089
TRISE0
00000000
TRISE1
00000001
TRISE2
00000002
TRMT
00000001
TT
00000381
TT1
0000038A
TT1A
000003A3
TT1B
000003BE
TT1C
000003D9
TT2
00000384
TT2A
0000039D
TT2B
000003B8
TT2C
000003D3
TT3
0000038D
TT3A
000003A6
TT3B
000003C1
TT3C
000003DC
TTA
0000039A
TTB
000003B5
TTC
000003D0
TX8_9
00000006
TX9
00000006
TX9D
00000000
TXD8
00000000
TXEN
00000005
TXIE
00000004
TXIF
00000004
TXREG
00000019
TXSTA
00000098
UA
00000001
UNITA
00000038
VISX
00000500
VISY
00000519
VISZ
00000531
W
00000000
WCOL
00000007
WR
00000001
WREN
00000002
WRERR
00000003
Z
00000002
ZER
0000003A
_BODEN_OFF
00003FBF
_BODEN_ON
00003FFF
_CPD_OFF
00003FFF
MPASM 02.40 Released
MAGN77.ASM 4-8-2006 12:06:09
SYMBOL TABLE
LABEL
VALUE
_CPD_ON
_CP_ALL
_CP_HALF
_CP_OFF
_CP_UPPER_256
_DEBUG_OFF
_DEBUG_ON
_HS_OSC
_LP_OSC
_LVP_OFF
_LVP_ON
_PWRTE_OFF
00003EFF
00000FCF
00001FDF
00003FFF
00002FEF
00003FFF
000037FF
00003FFE
00003FFC
00003F7F
00003FFF
00003FFF
PAGE 41
97
Ferdinando_Barbon
_PWRTE_ON
_RC_OSC
_WDT_OFF
_WDT_ON
_WRT_ENABLE_OFF
_WRT_ENABLE_ON
_XT_OSC
__16F877
00003FF7
00003FFF
00003FFB
00003FFF
00003DFF
00003FFF
00003FFD
00000001
MEMORY USAGE MAP ('X' = Used, '-' = Unused)
0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
01C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0240 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0280 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
02C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
03C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0400 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0440 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0480 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
04C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0500 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0540 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
MPASM 02.40 Released
MAGN77.ASM 4-8-2006 12:06:09
PAGE 42
MEMORY USAGE MAP ('X' = Used, '-' = Unused)
0580 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
05C0 : XXXXXXXXXXXX---- ---------------- ---------------- ---------------0700 : XXXXXXXXXXXXXXX- ---------------- ---------------- ---------------All other memory blocks unused.
Program Memory Words Used: 1496
Program Memory Words Free: 6696
Errors : 0
Warnings : 0 reported, 0 suppressed
Messages : 112 reported, 0 suppressed
98
Ferdinando_Barbon
Bibliografia
Collegamento al sito internet www.fatquarterssoftware.com
Collegamento al sito internet www.speakesensors.com
Collegamento al sito internet www.thunting.com/cgi-bin/geotech
Collegamento al sito internet www.spacew.com/forum
Collegamento al sito internet www.sec.noaa.gov
Collegamento al sito internet http://crocus.physics.mcmaster.ca/Magnetometer/TW
Collegamento al sito internet http://ourworld.compuserve.com/homepages/demerson/magnet.htm
Collegamento al sito internet http://www.da4e.nl/magno.html
Collegamento al sito internet http://geomag.usgs.gov/
Collegamento al sito internet www.fisica.unipg.it/tesi/20040226/landonio/tesifinale
Magnetism, E. W. Lee, Dover publication Inc., New York, 1970
99