[51] Jak sie komus nudzi - procedurka

Zamiana A na string dziesiętny (dla wartości 0-255, wyświetla z zerami nieznaczącymi) z wysłaniem na LCD

mov b,#0ah div ab mov r7,b mov b,#0ah div ab add a,#030h acall wyslijdane xch a,b add a,#030h acall wyslijdane mov a,r7 add a,#030h acall wyslijdane

...gdzie ''wyślijdane'' wysyła A jako daną na LCD (adres jest już ustawiony i zwiększa się automatycznie po wysłaniu danej).

I teraz mały konkursik bez nagród - kto zna lepiej/szybciej/ładniej?

Reply to
Janko Muzykant
Loading thread data ...

E, tam, nie problem ;)

clr f0 mov b, #0ah div ab mov r7, b mov b, #0ah div ab jnz konwersja31 setb f0 mov a, #0f0h konwersja31: add a, #30h acall wyslijdane xch a, b jnz konwersja32 jnb f0, konwersja32 mov a, #0f0h konwersja32: add a, #30h acall wyslijdane mov a, r7 add a, #30h acall wyslijdane

Przy okazji zwracam uwagę na sierotę - fo w psw - przydaje się jako znacznik ''na chwilę''...

No fakt, trzeba posiedzieć z pięć minut ;)

Zgadzam się jak najbardziej, ale są pewne ale...

1) program mi się nie wyrobi - rzeczy dzieją się równolegle podczas czekania na konwersję A/D. (przyspieszanie zegara nic nie zmieni bo znowu nie wyrobi mi się z peryferiami - czasy dostępu). Stąd 70 cykli do zagospodarowania na np. ową procedurkę. 2) dobrze mi z tym asemblerkiem - mam sporo procedur jeszcze po czasach, kiedy 51 miały okienka a o basicu na nie nikt nie słyszał... Naumiałem się wtedy i tak mi zostało. VisualBasica (dla dosa) też mam w miarę opanowanego (jak się skompiluje to nawet w miarę hula) ale jakoś _na_razie_ nie chce mi się zabrać za basica czy c na 51... może jak będzie wiecej roboty.

Poza tym problem zwykle tkwi w zmyślnym algorytmie - niezależnie od poziomu języka.

Mam nadzieję ;)

Reply to
Janko Muzykant

Tak .. tylko ile printf zajmuje w kodzie ? A nie mowimy o pececie z 64MB RAM tylko czyms z kilkoma KB na program.

A raz napisane moze sluzyc w nastepnych programach.

I .. czy doliczyles czas poswiecony na nauke C :-)

J.

Reply to
J.F.

Tylko wiesz - przez czas poswiecony poznawaniu opcji control stringu printfa mozna sobie napisac pare procedurek w assemblerku i uzyskac zalozony wynik :-)

Przy dobrze prowadzonym projekcie i doswiadczeniu .. 1 rok ?

Pamietaj ze ocenia sie iz programista pisze rzedu 100 linijek dziennie :-)

Przy dobrze prowadzonym projekcie ..

ale za to przejscie na inny procesorek .. brr :-)

J.

Reply to
J.F.

Pomysł dobry ale wtedy... trzeba zrobić ''wyslijdane1'' :) (z procedury ''wyślijdane'' korzystają także inne dobra, którym akurat akumulator pasuje jaki jest).

A tak w ogóle myślałem o bcd, ale o ile sprawdza sie przy wartościach do

99 to przy trzech cyfrach procedura jest podobnie złożona. Chyba, że... konkursik trwa ;)
Reply to
Janko Muzykant

Albo korzystać z ramu.. wyświetlacza lcd. Tyle dobra sie tam marnuje... ;)

Reply to
Janko Muzykant

To robisz: wyslijcyfre: add a,#30h wyslijdane: .... ... ret

:-)

J.

Reply to
J.F.

... ale wtedy będzie 2x acall i 1x ret a wtedy siwy dym i jasne capy ;) A znowuż acall - add a,#30h - ret jest trochę optymalizacją... na zaliczenie przedmiotu ;) No, chyba, że Atmel planuje wypuścić coś na 4 nogach z 64 bajtami romu...

Reply to
Janko Muzykant

wyslijdane1: add a,#48

wyslijdane: ...

i jesteś 4 bajty do przodu.

w.

Reply to
Wojtek Kaniewski

"Marek" snipped-for-privacy@wp.pl wrote in news:buo6vc$bl8$ snipped-for-privacy@nemesis.news.tpi.pl:

programisci w Indiach pisza takie cos w 3-4 tygodnie, poprostu jestes leniwy :)

Pozdrawiam.

Reply to
RusH

On Behalf Of Marek

Przepraszam, czy możesz mi wskazać jakiś sterownik przemysłowy zbudowny na '51? Oczywiscie pomijam tu sterowniki budowane na indywidualne zamówienia. Ale coś takiego budowanego seryjnie i używanego. No i oczywiście program pisany w Keil'u 51.

pzdr Artur

Reply to
ziel

On Behalf Of Marek

Sorki, ale czy jesteś najlepszy na świecie? Zdażało mi się pisać i po 600kB tekstu programu z minimalnymi komentarzami w ciągu miesiąca i to bynajmniej nie po 12 lub więcej godzin dzienie. a i tak po czasie znajdowałem o niebo lepsze rozwiązania, zajmujące

1/4 pamięci i wykonujące się pięć razy szybciej. Proszę, więcej pokory.

Oczywiście wiekszość napisałem wcześniej i wystarczyło tylko kopiowianie. Ale ... każde takie kopiowanie wymagało przemyślenia - wejść, wyjść, wspólnych zmiennych itd. A jestem w 100% pewny, że przynajmniej jest 1.000.000 lepszych niż ja.

pzdr Artur

Reply to
ziel

A tośmy do tego już doszli wcześniej ;) Ale generalnie chodziło mi o inny algorytm a nie o skracanie...

Reply to
Janko Muzykant

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.