Prosty kod dla 8051



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Zbych" <zbigzdroje1_at_nospam_wp.pl>
Subject: Prosty kod dla 8051
Date: Sun, 30 Oct 2005 18:27:24 +0100


Witam
Ten bardzo prosty kod asm dla 8051 zajmuje mi w C kilkadziesiąt bajtów. Albo
mam zaćmienie albo????? nic już nie wiem:
0xE5,&H,

0x24,0x01,

0xD4,

0xF5,&H

Czy ktoś cós ma prostszego, oczywiście w C.
--
Pozdrowienia Zbych




Poprzedni Następny
Wiadomość
Spis treści
From: Marcin E. Hamerla <Xmeh4njusy_at_nospam_Xpoczta.Xonet.Xpl.removeX>
Subject: Re: Prosty kod dla 8051
Date: Sun, 30 Oct 2005 18:27:43 +0100


Zbych napisal(a):

Witam
Ten bardzo prosty kod asm dla 8051 zajmuje mi w C kilkadziesiąt bajtów. Albo
mam zaćmienie albo????? nic już nie wiem:
0xE5,&H,

0x24,0x01,

0xD4,

0xF5,&H

Czy ktoś cós ma prostszego, oczywiście w C.

Hmm, dlaczego nie rzuciles mnemonikow? Kto by jeszcze pamietal kody
hexa rozkazow??

P.S.
Sa oczywiscie rzeczy, ktore w C zajma znacznie wiecej rozkazow. Na
przyklad Swap.

--
Pozdrowienia, Marcin E. Hamerla

"Every day I make the world a little bit worse."

Poprzedni Następny
Wiadomość
Spis treści
From: "Zbych" <zbigzdroje1_at_nospam_wp.pl>
Subject: Re: Prosty kod dla 8051
Date: Sun, 30 Oct 2005 18:38:52 +0100


Witam

Masz rację; mnemoniki są czytelne:

Dopisuję
0xE5,&H, MOV A, (adres)

0x24,0x01, ADD A, #dana

0xD4, DA A

0xF5,&H MOV (adres), A

Czy ktoś cós ma prostszego, oczywiście w C.

Hmm, dlaczego nie rzuciles mnemonikow? Kto by jeszcze pamietal kody
hexa rozkazow??

Dzięki za zainteresowanie.
--
Pozdrowienia Zbych



Poprzedni Następny
Wiadomość
Spis treści
From: Adam Dybkowski <adybkows123_at_nospam_amwaw.edu.pl>
Subject: Re: Prosty kod dla 8051
Date: Sun, 30 Oct 2005 23:55:56 +0100


Zbych wrote:

0xE5,&H, MOV A, (adres)
0x24,0x01, ADD A, #dana
0xD4, DA A
0xF5,&H MOV (adres), A

Czy ktoś cós ma prostszego, oczywiście w C.

Będzie ciężko, bo C trudno przekonać do obliczeń BCD i nie ma chyba
sensownego sposobu na zmuszenie kompilatora do wygenerowania rozkazu
poprawki po dodawaniu BCD (DAA). Zrób sobie funkcję inline napisaną w
asemblerze nazwaną np. increment_bcd i używaj kiedy trzeba.

--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/

Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.

Poprzedni Następny
Wiadomość
Spis treści
From: "Zbych" <zbigzdroje1_at_nospam_wp.pl>
Subject: Re: Prosty kod dla 8051
Date: Wed, 2 Nov 2005 04:21:31 +0100


Witam

Będzie ciężko, bo C trudno przekonać do obliczeń BCD i nie ma chyba
sensownego sposobu na zmuszenie kompilatora do wygenerowania rozkazu
poprawki po dodawaniu BCD (DAA). Zrób sobie funkcję inline napisaną w
asemblerze nazwaną np. increment_bcd i używaj kiedy trzeba.

Oto co udało mi się wykoncypować:

void Licznik_BCD(unsigned char idata *adres)
{
unsigned char j;
j=*adres;
j++;
if ((j&0x0F)>9) j+=6;
*adres=j;
}
Czy ktoś ma prostszy kod? Mój zawiera 20B w ASM.
--
Pozdrowienia Zbych



Poprzedni Następny
Wiadomość
Spis treści
From: Zbych <abuse_at_nospam_onet.pl>
Subject: Re: Prosty kod dla 8051
Date: Wed, 02 Nov 2005 21:30:24 +0100


Zbych przemówił ludzkim głosem:

Oto co udało mi się wykoncypować:
[ciach]
Czy ktoś ma prostszy kod? Mój zawiera 20B w ASM.

A co ze starszym niblem w bajcie ? (rozumiem, że chcesz operować na
spakowanym BCD). Np. 0x99, po inkrementacji 0x9A, po twojej korekcji
0xA0. Przydałoby się dodać jeszcze 0x60 w przypadku przeniesienia na CY.

Poprzedni Następny
Wiadomość
Spis treści
From: "Zbych" <zbigzdroje1_at_nospam_wp.pl>
Subject: Re: Prosty kod dla 8051
Date: Thu, 3 Nov 2005 00:06:12 +0100


Witam

A co ze starszym niblem w bajcie ? (rozumiem, że chcesz operować na
spakowanym BCD). Np. 0x99, po inkrementacji 0x9A, po twojej korekcji 0xA0.
Przydałoby się dodać jeszcze 0x60 w przypadku przeniesienia na CY.

To ma być licznik BCD do max 99. Czyli nie grozi po 99 -->A0. W związku, z
powyższym związkiem, mam dalej prośbę o krótszy kod.
Od mojego ostatniego postu skróciłem kod o 1B.(teraz 19B w ASM).
--
Pozdrowienia Zbych



Poprzedni Następny
Wiadomość
Spis treści
From: "Zbych" <zbigzdroje1_at_nospam_wp.pl>
Subject: Re: Prosty kod dla 8051
Date: Thu, 3 Nov 2005 01:43:02 +0100


Witam
Ćwiczenia dają jakieś tam efekty. Znów skróciłem troszkę kod. Teraz to już
16B. Jedyną wadą jest to, że w czasie przejścia z 9-->10(19--20)... chwilowo
pojawia się 1A(2A)...
Czy ktoś to skróci???
--
Pozdrowienia Zbych



Poprzedni Następny
Wiadomość
Spis treści
From: "Zbych" <zbigzdroje1_at_nospam_wp.pl>
Subject: Re: Prosty kod dla 8051
Date: Thu, 3 Nov 2005 01:48:14 +0100


Witam
Zapomniałem dołączyć kod
Czy ktoś to skróci???

void Licznik_BCD(unsigned char idata *adres)
{
(*adres) = (*adres)+1;
if (((*adres)&0x0F)>9) (*adres)+=6;
}
--
Pozdrowienia Zbych



Poprzedni Następny
Wiadomość
Spis treści
From: "Piotrek Sz." <zumek.SKASUJ_at_nospam_gazeta.pl>
Subject: Re: Prosty kod dla 8051
Date: Thu, 3 Nov 2005 14:17:14 +0000 (UTC)


Zbych <zbigzdroje1_at_nospam_wp.pl> napisał(a):

Witam
Zapomniałem dołączyć kod
Czy ktoś to skróci???

void Licznik_BCD(unsigned char idata *adres)
{
(*adres) = (*adres)+1;
if (((*adres)&0x0F)>9) (*adres)+=6;
}
To jakieś zawody ?-)

(*adres)=(*adres)+1;
if(((*adres) & 0x0F)==0x0A ) (*adres)+=6;

Piotrek


--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

Poprzedni Następny
Wiadomość
Spis treści
From: Marcin E. Hamerla <Xmeh4njusy_at_nospam_Xpoczta.Xonet.Xpl.removeX>
Subject: Re: Prosty kod dla 8051
Date: Thu, 03 Nov 2005 09:01:54 +0100


Zbych napisal(a):

Ćwiczenia dają jakieś tam efekty. Znów skróciłem troszkę kod. Teraz to już
16B. Jedyną wadą jest to, że w czasie przejścia z 9-->10(19--20)... chwilowo
pojawia się 1A(2A)...
Czy ktoś to skróci???

Nie chcesz zrobic inline asm?

--
Pozdrowienia, Marcin E. Hamerla

"Every day I make the world a little bit worse."

Poprzedni Następny
Wiadomość
Spis treści
From: "Zbych" <zbigzdroje1_at_nospam_wp.pl>
Subject: Re: Prosty kod dla 8051
Date: Thu, 3 Nov 2005 23:09:10 +0100


Witam

Nie chcesz zrobic inline asm?
--
> Pozdrowienia, Marcin E. Hamerla
>
Uczę się Keil'a c51(uVision2) a mam na razie wersję demo w której nie
działają wstawki ASM i do dyspozycji tylko 88B. Dlatego piszę wszystko w C.
Chyba, że jest jakiś ulepszacz na tą niedogodność.

--
Pozdrowienia Zbych