Jump to content
ELFORUM - Forumul electronistilor
TECH_FUN

at89c2051

Recommended Posts

Salut ! :)Ma ajuta cineva cu un algoritm de impartire pe 16 bit (pe care nu-l gasesc nicaieri)....pls, pls. Ma intereseaza algoritmul, eventual poate chiar o rutina gata facuta, pe care s-o studiez si sa deduc eu cum lucreaza :idea:.Am incercat sa-l fac singur, dar intotdeauna ma lovesc de faptul ca impartirile intermediare depasesc 8 digit, si nu mai pot folosi instructiunea DIV AB :( Multumesc oricine ai fi :)

Link to comment
Share on other sites

Ms mult, dar din C imi mai amintesc vag ceva de "printf si scanf", adica ce-am facut acum vreo 8 ani in urma, in primul an de facultate...:( Succes si tie in continuare :), inteleg ca ai ceva experienta in domenul uControlerelor. Si totusi, NU GASESC UN ALGORITM DE IMPARTIRE PE 16 BIT in limbaj de asamblare :( Chiar nimeni nu stie cum se face? :? pls...

Link to comment
Share on other sites

Ms mult, dar din C imi mai amintesc vag ceva de "printf si scanf", adica ce-am facut acum vreo 8 ani in urma, in primul an de facultate...:( Succes si tie in continuare :), inteleg ca ai ceva experienta in domenul uControlerelor. Si totusi, NU GASESC UN ALGORITM DE IMPARTIRE PE 16 BIT in limbaj de asamblare :( Chiar nimeni nu stie cum se face? :? pls...

Uite pt Atmel MCS51 intreg cu semn (signed int)
        __divsint:	                                        ; dph in dph	                                        ; (__divsint_PARM_2 + 1) in (__divsint_PARM_2 + 1)	                clr F0 ; Flag 0 in PSW	                                        ; available to user for general purpose	                mov a,dph	                jnb acc.7,a_not_negative	                setb F0	                clr a	                clr c	                subb a,dpl	                mov dpl,a	                clr a	                subb a,dph	                mov dph,a        a_not_negative:	                mov a,(__divsint_PARM_2 + 1)	                jnb acc.7,b_not_negative	                cpl F0	                clr a	                clr c	                subb a,(__divsint_PARM_2)	                mov (__divsint_PARM_2),a	                clr a	                subb a,(__divsint_PARM_2 + 1)	                mov (__divsint_PARM_2 + 1),a        b_not_negative:	                lcall __divuint	                jnb F0,not_negative	                clr a	                clr c	                subb a,dpl	                mov dpl,a	                clr a	                subb a,dph	                mov dph,a        not_negative:	                ret
si fara semn
	                mov r2,#16	                clr a	                mov r3,a	                mov r4,a        loop:	mov a,dpl ; a <<= 1	                add a,acc	                mov dpl,a	                mov a,dph	                rlc a	                mov dph,a	                mov a,r3 ; reste <<= 1	                rlc a ; feed in carry	                mov r3,a	                mov a,r4	                rlc a	                mov r4,a	                mov a,r3 ; reste - b	                subb a,(__divuint_PARM_2) ; here carry is always clear, because	                                        ; reste <<= 1 never overflows	                mov b,a	                mov a,r4	                subb a,(__divuint_PARM_2 + 1)	                jc smaller ; reste >= b?	                mov r4,a ; -> yes; reste = reste - b;	                mov r3,b	                orl dpl,#1        smaller:; -> no	                djnz r2,loop	                ret
Sper sa-ti fie de ajutor asa ca idee.Aveam si intr-ocarte un algoritm de impartire dar din pacate l-am dat la cineva si dureaza pana il recuperez Succes
Link to comment
Share on other sites

pe site la atmel e o nota de aplicatie cu inmultiri si impartiri pentru avr.

AT89C2051 nu este AVR ! AT90Sxxx, ATTiny, ATMega sunt AVR ...8030,80C30,8051,8052,80C51,80C52,AT89C51,AT89C2051,89S8252 sunt toate MCS51 compatibile. Sunt mai lente ca AVR
Link to comment
Share on other sites

Ms mult psanyi, ai fost dragut:). Am sa studiez sa inteleg algoritmul, poate folosesc rutina chiar in forma in care este. Cat despre a ma ajuta tu (sau altcineva) cu programul, mai bine nu --multumesc oricum--, pentru ca stii foarte bine ca e mult mai FUN :d atunci cand ceea ce vrei sa faci obtii prin forte proprii si nu ajutat, nu as avea aceeasi satisfactie... :wink:

Ceea ce vreau sa fac e in aceeasi masura in scop (auto)didactic cat si pentru FUN :) http://www.luberth.com/analog.htm Daca dai cautare dupa propeller clock vei gasi si alte site-uri interesante de genul asta...Poate-ti dau idei :d

Succes !

Link to comment
Share on other sites

Ms mult psanyi, ai fost dragut:). Am sa studiez sa inteleg algoritmul, poate folosesc rutina chiar in forma in care este. Cat despre a ma ajuta tu (sau altcineva) cu programul, mai bine nu --multumesc oricum--, pentru ca stii foarte bine ca e mult mai FUN :d atunci cand ceea ce vrei sa faci obtii prin forte proprii si nu ajutat, nu as avea aceeasi satisfactie... :wink: Ceea ce vreau sa fac e in aceeasi masura in scop (auto)didactic cat si pentru FUN :) http://www.luberth.com/analog.htm Daca dai cautare dupa propeller clock vei gasi si alte site-uri interesante de genul asta...Poate-ti dau idei :d Succes !

Corect asa este.Si mie imi place sa ma chinui.As fi in stare cateodata sa redescoper si roata :lol: :lol: :lol: desigur daca este vorba de FUN si nusunt stresat de nimeni. Sper sa-ti fie de ajutor .Idei am si io multe dar pare interesanta si asta :)
Link to comment
Share on other sites

Guest crushedy

Am si eu nevoie va rog de un program care imi afiseaza pe 3 digits timpul dintre 2 apasari succesive ale unui comutator!

Link to comment
Share on other sites

Am si eu nevoie va rog de un program care imi afiseaza pe 3 digits timpul dintre 2 apasari succesive ale unui comutator!

Dupa ce schema sa mearga programul ? In ce limbaj de programare ?( C ASM sau format binar)
Link to comment
Share on other sites

Guest crushedy

In Assambler sa fie programul iar LED-urile sa fie conectate la P1 si P3.1 P3.2 P3.3 iar comutatoarele la P3.4 si P3.5.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines