Yahoo Groups archive

AVR-Chat

Index last updated: 2026-04-28 22:41 UTC

Message

Re: [AVR-Chat] Bit logic...

2005-06-12 by James Hatley

Hello,

You may be able to toggle a port bit by writing a 1 to the corresponding
PINx bit. I've not seen it documented anywhere except in the m2560 document.
You might want to try it to see if it works on all AVR processors.

For PORTn and BITx it would be, I think...

tgl_bit: sbi PINn,BITx
ret

Jim

----- Original Message ----- 
From: "Mark Jordan" <mark@cpovo.net>
To: <AVR-Chat@yahoogroups.com>
Sent: Sunday, June 12, 2005 5:55 AM
Subject: Re: [AVR-Chat] Bit logic...


>
> Another way of toggling a PORT bit:
>
>
> tgl_bit: sbis PORTC, BIT
> rjmp sbi_bit
>
> clr_bit: cbi PORTC, BIT
> ret
>
> set_bit: sbi PORTC, BIT
> ret
>
>
> Mark
> On 12 Jun 2005 at 1:58, Roy E. Burrage wrote:
>
> >
> > I often have to toggle a bit and this is about as short and elegant as
I've been
> > able to do with the AVR.
> >
> >
> >  Toggle_A1:             ; Toggles PB0 (A1) output state
> >      LDI  T1,1     ; Set bit 0 in T1
> >       IN   T2,PORTB
> >      EOR  T2,T1      ; XOR T1 and Port B (T2) to toggle PB0
> >      OUT  PORTB,T2
> >      RET
> >
> > This routine is called from the main program and could be performed a
couple of
> > other ways, but not anything shorter that I can see.
> >
> > With the 8x31/32 series we had the CPL operation. With the er, uh, those
other
> > guys...we have BTG.
> >
> > Anyone know of a shorter means, code wise, of doing this? Am I missing
> > something, like a single operation?
> >
> >
> > REB
> >
> >
> > Yahoo! Groups Links
> > *       To visit your group on the web, go to:
> >         http://groups.yahoo.com/group/AVR-Chat/
> >
> > *       To unsubscribe from this group, send an email to:
> >         AVR-Chat-unsubscribe@yahoogroups.com
> >
> > *       Your use of Yahoo! Groups is subject to the Yahoo!
> >         Terms of Service.
> >
>
>
>
>
>
>
> Yahoo! Groups Links
>
>
>
>
>
>
>
>

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.