Tuesday, March 04, 2008

Nyt sitten kokeilen miten tulostuu ASSEMBLY-koodi blogiin !

;A/D-TOIMINNAN TESTI

;Tällä ohjelmalla kokeillaan A/D-muuntimen toimintaa.
;5 kilo-ohmin monikierrospotentiometri ja 10 kilo-ohmin trimmeri ovat välillä +5V ja GND.
;Trimmerillä asetetaan potentiometrin säätöalueeksi 2,56 volttia.
;Säätö on AD7-kanavassa ja LED-näyttö B-portissa.

;Ohjelmakoodi

.include "m8def.inc" ;käytettävä mikro-ohjain ATmega8

.cseg ;ohjelma c-segmenttiin eli flash muistiin
.org ;koodi alkaa muistin nolla osoitteesta

aset: ldi r16, 0xFF ;B-portin suuntatieto r16-rekisteriin (0 = nolla aina tiedon edessä)
out DDRB, r16 ;tieto B-portin suuntarekisteriin

ldi r16, 0xC7 ;A/D-muuntimen asetustieto: sisäinen referenssi ja A/D-kanava 7
out ADMUX, r16 ;tieto ADMUX-rekisteriin
ldi r16, 0xE3 ;A/D-muuntimen asetustieto:muunnon sallinta, muunnon
;käynnistys ja jatkuva muunto
out ADCSRA, r16 ;tieto A/D-muuntimen valvontarekisteriin

ohjelma: nop ;ei tehdä mitään

muunnos: nop ;tahdistusviive
in r17, ADCL ;muunnostiedon D0....D7 bittien luku r17-rekisteriin

nop ;tahdistusviive
in r18, ADCH ;muunnostiedon D8 ja D9 bittien luku r18-
;rekisteriin

;Tiedosta otetaan käyttöön vain 8 eniten merkitsevää bittiä. Siksi bittejä
;bittejä siirrellään vaakasuunnassa ja sijoitetaan lopuksi samaan rekisteriin

lsr r17 ;tehdään tilaa D8 ja D9 biteille, siksi alempaa tavua
lsr r17 ;siirretään kaksi paikka oikealle

lsl r18 ;siirretään D8 ja D9 bitit rekisterin yläpäähän,
lsl r18 ;ensin kaksi paikka vasemmalle ja sitten puolitavujen
swap r18 ;vaihto

or r17, r18 ;yhdistetään rekisterit, tulos r17-rekisterissä

out PORTB, r17 ;tulostetaan saatu muunnos B-porttiin

rjmp muunnos ;palataan tekemään muunos uudestaan

1 comment:

XTL said...

Onnistuisikohan xhtml:ssä paremmin pistämällä code -tagiä ympärille. pre ja tt on tietysti vanhempia vaihtoehtoja. Viimeistään stylesheetin kautta saanee oikean tasalevyisen fontin.