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