Rotacia v C pre 8051

Marcel Klein klein
Středa Březen 17 12:01:43 CET 2004


Podobny problem som riesil v C pre AVR, kde som to urobil tak ze som ifom
porovnaval prvy bit este pred rotaciou a podla toho nastavoval I/O. Avsak
vysledny kod tohto je podstatne vecsi-pomalsi, tiez som hladal nieco na
sposob co by pouzilo carry, ale neprisiel som na to(ani v helpe CVision to
nebolo) ako sa to da spravit.

Marcel

----- Original Message -----
From: "Richard Kaliciak" <richard.kaliciak@ibykus.de>
To: "Multiple recipients of list" <hw-news@list.gin.cz>
Sent: Monday, June 18, 2001 4:15 PM
Subject: Rotacia v C pre 8051


> Dobry den!
>
> Mam maly problem. Ako napisem v C pre 8051 (Keil ľVision 2) tento kusok
> programu bez toho, aby som pouzil #pragma ASM?
>
>
> **********************************************************
> SendByte:  MOV     BitCnt,#8      ;Set bit count.
>
> SBLoop:    RLC     A              ;Send one data bit.
>            MOV     SDAPin,C       ;Put data bit on pin.
>            DJNZ    BitCnt,SBloop  ;Repeat until all bits sent.
> **********************************************************
>
>
> Zatial to mam vyriesene takto:
>
> **********************************************************
> BitCnt = 8; // Set bit count.
>
> for( BitCnt = 8; BitCnt >0; BitCnt -- )
> {
> #pragma ASM
> RLC     A
> MOV     SDAPin,C
> #pragma endasm
> };
> **********************************************************
>
> Ide mi o instrukciu RLC. V manualy ku Keilu je popisana funkcia _crol_ a
> _cror_, ktora robi rotaciu, ale vysledok je znova char. Ja by som
> potreboval nejaku funkciu zodpovedajucu RLC alebo nieco, co by malo ako
> vystup char(hodnota po rotacii) a bit (Carry).
>
> Dakujem za tipy.
>
> R. Kaliciak
>






Další informace o konferenci Hw-list