设为首页收藏本站

腾控科技论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4592|回复: 3

位操作函数

[复制链接]
steelen 发表于 2010-8-31 14:26:34 | 显示全部楼层 |阅读模式
#define FULLBYT 0xff
#define TBUFSIZ 16
#define SUCCESS        0
#define FAILURE        -1
#define NULL    (void *)0

int getbit (unsigned char * ptr, int bitoffs)
//char *ptr;                /* Base pointer */
//short bitoffs;        /* Offset from ptr in number of bits */

{

        if (ptr == NULL || bitoffs < 0)
            return (FAILURE);

        ptr += (bitoffs / 8);        /* Knock up ptr to byte requested */
        bitoffs %= 8;                /* Get bit relative to its own byte */

        //return (short)((*ptr >> (7 - bitoffs)) & 1);
        return (short)((*ptr >> bitoffs) & 1);
}


/* SETBIT - Set a specified bit number in a char string to 1 or 0. The bit
*                        number may be any positive value; if > 8, the byte pointer will
*                        be incremented accordingly.
*/

int  setbit(unsigned char *ptr, int bitnum, int val)

//char *ptr;                /* Base of string */
//short bitnum;        /* Bit number, 0 relative */
//short val;                /* Value to set, 1 or 0 */

{
        int byteoffs;                /* Byte offset in string */
        char  mask;                /* Masking value */


        if (ptr == NULL || bitnum < 0 || (val != 0 && val != 1))
            return (FAILURE);

        ptr += (byteoffs = bitnum / 8);        /* Calc offset, reset ptr */

        if (byteoffs)
            bitnum %= (byteoffs * 8);        /* Find bit within byte */

/* Mask = bit string of zeroes with one in bitnum position */

        //mask = 1 << (7 - bitnum);
        mask = 1 <<  bitnum;
        if (val)                        /* If turn-on bit, OR with mask */
            *ptr |= mask;
        else                                /* Else, AND with inverse (ones-complement) of mask */
            *ptr &= ~mask;

        return (SUCCESS);
}
腾控T919宽温以太网PLC上市,集成4路热电阻(PT100),同时集成8路DI,4路DO(晶体管输出),8路AI,3个串口
阿毗地狱 发表于 2011-10-27 23:48:46 | 显示全部楼层
顶!!!!!!!!!!
腾控T919宽温以太网PLC上市,集成4路热电阻(PT100),同时集成8路DI,4路DO(晶体管输出),8路AI,3个串口
您需要登录后才可以回帖 登录 | 注册

本版积分规则

产品样机试用申请

QQ|小黑屋|手机版|Archiver|腾控科技|腾控科技 ( 京ICP备09109731号  

GMT+8, 2020-10-25 06:21 , Processed in 0.118150 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表