Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
03/23/02 14:06
Read: times


 
#21104 - Bit pointers in C51
Following by bit pointer routines:


/************************************************************************/
/* */
/* Bit Pointer Implementation */
/* */
/* SFR bits can not be accessed ! */
/* */
/* Author: Peter Dannegger */
/* danni@specs.de */
/* */
/************************************************************************/
#pragma cd
#include<types.h>

#define BIT_START 0x20


static uint getibit( uchar bitptr )
{
uchar code bitmask[] = { 1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80 };
return (uint)bitmask[bitptr & 7] << 8 | // high byte = bit mask
(uchar) (bitptr / 8 + BIT_START); // low byte = byte address
}


void setibit( uchar bitptr ) // *bitptr = 1;
{
uint mask_addr = getibit( bitptr );
*(uchar idata *)mask_addr |= mask_addr >> 8;
}


void clribit( uchar bitptr ) // *bitptr = 0;
{
uint mask_addr = getibit( bitptr );
*(uchar idata *)mask_addr &= ~(mask_addr >> 8);
}


void cplibit( uchar bitptr ) // *bitptr ^= 1;
{
uint mask_addr = getibit( bitptr );
*(uchar idata *)mask_addr ^= mask_addr >> 8;
}


void movibit( uchar bitptr, bit inbit ) // *bitptr = inbit;
{
inbit ? setibit( bitptr ) : clribit( bitptr );
}


bit tstibit( uchar bitptr ) // return *bitptr;
{
uint mask_addr = getibit( bitptr );
return *(uchar idata *)mask_addr & mask_addr >> 8;
}


Peter


List of 14 messages in thread
TopicAuthorDate
bit array in C (for 8051)            01/01/70 00:00      
RE: bit array in C (for 8051)            01/01/70 00:00      
RE: bit array in C (for 8051)            01/01/70 00:00      
RE: bit array in C (for 8051)            01/01/70 00:00      
RE: bit array in C (for 8051)            01/01/70 00:00      
RE: bit array in C (for 8051)            01/01/70 00:00      
RE: bit array in C (for 8051)            01/01/70 00:00      
RE: bit array in C (for 8051)            01/01/70 00:00      
RE: bit array in C (for 8051)            01/01/70 00:00      
RE: bit array in C (for 8051)            01/01/70 00:00      
RE: bit array in C (for 8051)            01/01/70 00:00      
RE: bit array in C (for 8051)            01/01/70 00:00      
RE: bit array in C (for 8051) - Kapil            01/01/70 00:00      
Bit pointers in C51            01/01/70 00:00      

Back to Subject List