Převod 10 bit > 4 digity PIC ASM
Moderátor: Moderátoři
- forbidden
- Příspěvky: 9442
- Registrován: 14 úno 2005, 00:00
- Bydliště: Brno (JN89GF)
- Kontaktovat uživatele:
Převod 10 bit > 4 digity PIC ASM
Jde o zpracování dat z ADC, třeba pro pohodlný zobrazení na displayi. Rutina by měla umět i násobit výsledek 1-9 krát.
Já si naprogramoval svou, funkční, jenže vzhledem k mým programátorským schopnostem má lehce přes 200 slov, což je docela dost.
Radši bych něco úspornějšího.
Díky.
- Přílohy
-
- Prevod_16bitu_do_DEC.asm
- (6.21 KiB) Staženo 164 x
http://www.piclist.com/techref/microchi ... -16b5d.htm
- forbidden
- Příspěvky: 9442
- Registrován: 14 úno 2005, 00:00
- Bydliště: Brno (JN89GF)
- Kontaktovat uživatele:
Moje "brute force" metoda má 250 slov.
Já se snad začnu učit C, vím, že výsledný stroják asi nebude moc úsporný, ale alespoň program samotný bude přehlednější.
Edit: Zabudol som na link
http://academic.evergreen.edu/projects/ ... am/bcd.htm
Což o to, krátký to je, ale moc nechápu, jak to funguje. Třeba když chci převést číslo 5, tak se mi zdá, že vyjde 8. Ze začátku se jen rotuje, v posledním taktu se přidají 3, koukne se že to je větší než 7, což je, tak se to přidané uloží a tím se končí, takže tam zbyde 8. To ale není dobře. Nebo něco přehlížím?procesor píše:Až máš málo miesta a kopec času skús toto
- ZdenekHQ
- Významný člen
- Příspěvky: 25519
- Registrován: 21 črc 2006, 00:00
- Bydliště: skoro Brno
- Kontaktovat uživatele:
Dělení 0..15 obstará toto :
Kód: Vybrat vše
Del_n:
;*****
;#Reg_mat - 4 byte matematickýregistr
;delka N = R2 = 4
;v r3 je delitel 0..15, v B vraci zbytek
;podil v Mat_reg, v B zbytek
mov r1,#(Mat_reg+3)
mov r2,#4
mov b,#0
Deln_1:
mov a,@r1
anl a,#0f0h
add a,b
swap a
mov b,r3
div ab
swap a
xch a,@r1
anl a,#0fh
swap a
add a,b
swap a
mov b,r3
div ab
add a,@r1
mov @r1,a
dec r1
djnz r2,Deln_1
ret
Tohle se 4x "zavolá" na matematický registr, registr R3=10, t.j. dohromady dělím 1000 a zbytek po každým výpočtu se vždycky rovnou pošle na displej či uloží na potřebné místo.
Pro 10 bitů lze zkrátit Mat_registr i r2.
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]