Rotacia v C pre 8051

Lukáš Grepl luky.ol
Středa Březen 17 12:01:43 CET 2004


Neni trochu prehlednejsi ACC = ACC << 1, resp. ACC <<= 1?

S pozdravem
Lukas Grepl

> Reseni :
>  **********************************************************
>  for( BitCnt =0; BitCnt <8; BitCnt++ )
>  {
>  ACC+=ACC;
>  SDAPin=CY;
>   };
>  **********************************************************
>
>
>
> > 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