Stránka 2 z 2

Napsal: 05 lis 2019, 18:29
od ZdenekHQ
Při dělení číslem menším než 16 je ten algoritmus kratší. Číslo, kterým se dělí, je v r3. Dělené číslo je v Mat_reg, délka v r2, v tomto případě 4B, zbytek v b.

Kód: Vybrat vše

   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

Napsal: 05 lis 2019, 18:54
od lesana87
Zajímavý, to jsi vymyslel, ten algoritmus?

Napsal: 05 lis 2019, 19:04
od Mahoney
termit256 píše:Pokud to tak udelas, bude ti cislo pri obnovovani blikat.


Od multiplexně řízenýho displeje tak nějak očekávám, že bude blikat… Ty ne?

Prd, to nesmíš bejt línej si zkontrolovat počty potřebných strojových cyklů :wink:

Napsal: 05 lis 2019, 19:07
od ZdenekHQ
@Lesana: Ne, tak dobrej nejsu, je to z nějaký Teslácký příručky k 8051.

Napsal: 05 lis 2019, 20:28
od DavidChlup
Díky všem za odpovědi a návrhy, jednalo se o atmegu16, takže dělení složitější. Vyřešil jsem to jednou malou rutinou, jak poradil Termit. Před odesláním na displej kontroluju (zleva) už převedené do ascii, zda není nula. Pokud je nula, nahradím mezerou, pokud nula není, ukončím pro zbytek číslic kontrolu. Funguje to perfektně a je to cca 10 rádků navíc.

Ještě pro upřesnění: nevím, jak se to učí na školách v ČR, já se k tomuhle na škole bohužel nedostal.

Díky, díky díky :)

Napsal: 05 lis 2019, 21:06
od termit256
Mahoney píše:
termit256 píše:Pokud to tak udelas, bude ti cislo pri obnovovani blikat.


Od multiplexně řízenýho displeje tak nějak očekávám, že bude blikat… Ty ne?

Prd, to nesmíš bejt línej si zkontrolovat počty potřebných strojových cyklů :wink:


Kdyby to chtel na multiplexne rizeny displej, nebude cisla prevadet na ascii ;-)

Napsal: 05 lis 2019, 23:55
od petula
DavidChlup píše:...Před odesláním na displej kontroluju (zleva) už převedené do ascii, zda není nula. Pokud je nula, nahradím mezerou, pokud nula není, ukončím pro zbytek číslic kontrolu....

Díky, díky díky :)

Celkem je fuk, zda to je ascii nebo hex nebo binárně... Podstatné je, že jsi se po mnoha pokusech dostal tam, co je popsáno v datasheetu k obvodu 7447 :D A přitom stačilo vzít ten datasheet, mrknout na ty vývody obodu a přečíst si 3-4 věty, jak se zháší nevýznamné nuly. Obvod 7447 existoval dávno před mikroprocesorama. Dnes se nevýznamné nuly zháší mikropočítačem s miliardou tranzistorů a je potřeba mraky času k jeho naprogramování. Před 40 lety to udělal klučina s několika drátky za 5-10 minut. Tomu se říká pokrok.

Napsal: 06 lis 2019, 06:55
od termit256
Kdyz je to fuk, tak mi ukaz jak se pomoci dratku zhasi ty nuly u displeje s hd44780 :-)

Napsal: 18 lis 2019, 08:33
od Mahoney
termit256 píše:Kdyby to chtel na multiplexne rizeny displej, nebude cisla prevadet na ascii ;-)


A proč by ne? Kde je psaný, že v daným zapojení nevyužívá například i serial port? Zapojení tu nikde nevidím a že se jedná o znakovej displej taky nikde přímo nenapsal - v podstatě celá první stránka tohoto vlákna je vzhledem k jeho názvu víceméně offtopic, v názvu se mluví o displeji a pak se tu probírá konverze a o displeji ani slovo. Jako sorry, nějaký koule mám, ale křišťálový fakt nejsou. Asi seš bystřejší, nebo s ním zrovna sedíš u jednoho stolu, nebo nevím co ti na to mám napsat - ovšem jako programátoři bychom měli umět definovat věci jednoznačně, neexistuje bystřejší a méně bystrý mikrořadič či zapojení.