Rutinky pro atmel
Jiří Reček
recek.jiri
Středa Březen 17 12:03:12 CET 2004
; Mohli bysme zkusit zabit dve muchy jednou ranou. V R2,R3 bude
; 16bitove cislo - delici pomer, v R4, R5, R6 a R7 výsledek. A jestli
; se nepletu, krok syntesy je konstanta o hodnote 25.
; Tedy vysledek by mohl nabyvat hodnot tak maximalne 65535*25=1638375,
; to znamena 7cifer, to budou v BCD 4 byty
; jo, a banka registru bude na nule, protoze registry budeme adresovat
; indexove.
BinBcdPlus25:
; Nejdrive vynulovat vysledek
clr a
mov r4,a ; vynulovat bytik
mov r5,a ; dalsi
mov r6,a ; dalsi
mov r7,a ; a posledni
mov b,#16 ; vse sestnactkrat - sestnact bitu
BBP25_16:
; Ted zdvojnasobime vysledek v BCD
mov r0,#4 ; 4 byty
mov r1,#4 ; R4 - adresa
clr c
BBP25dvoj:
mov a,@r1
addc a,@r1 ; zdvojnasobit
da a ; BCD
mov @r1,a ; a ulozit
inc r1 ; a zvysit adresu
djnz r0,BBP25dvoj
; Tady posunujeme delici pomer po bitiku
clr c
mov a,r2 ; samozrejme LSB
rlc a ; doleva a do C
mov r2,a ; a ulozit
mov a,r3 ; pak MSB
rlc a ; doleva a do C
mov r3,a ; a ulozit. V C bude nejvyssi bit
jnc BBP25ne25
; Pokud je v jednicce, pricteme 25 v BCD.
mov a,r4
add a,#25h ; tady je ten krok syntesy v BCD
da a
mov r4,a
mov a,r5
addc a,#0
da a
mov r5,a
mov a,r6
addc a,#0
da a
mov r6,a
mov a,r7
addc a,#0
da a
mov r7,a
BBP25ne25:
djnz b,BBP25_16
ret
; 52 bytu kodu ?
Jirka
> Zdravim,
> chtel jsem poprosit, jestli nekdo nema zvladnute tyhle rutiny v ASM pro
'51:
> Potrebuju zobrazovat na displeji kmitocet nastaveny na synteze, mam k
> dispozici delici pomer pro syntezu. Takze potrebuju nasobeni 16b(delici
> pomer)x8b(25 - krok syntezy) -> 32b a pak vysledne cislo prevest na BCD.
> Zatim to delam tak, ze v cyklu 6x to 32b cislo vydelim deseti, vynasobim
> deseti a vysledek odectu od puvodniho cisla. Sice to chodi, ale cele je to
> moc dlouhe, hlavne ta 32b matematika. Nema nekdo jiny napad ? O rychlost
> vubec nejde, dulezita je delka kodu - v malem atmelu uz je celkem tesno
...
> Diky za pripadnou pomoc...
> S pozdravem with best regards
> ------------------------------------------------------------
> EZA-TV Vrchlabi
> Libor Kavan Phone & Fax:+420 438 521 232
> Dlouha 421 Fax:+420 438 521 262
> 543 03 Vrchlabi III mailto:lkavan@krkonose.cz
> Czech Republic http://www.krkonose.cz/eza-tv
> ------------------------------------------------------------
>
>
Další informace o konferenci Hw-list