////////////////////////////////////////////////////////////////////////// /// COPYRIGHT NOTICE /// Copyright (c) 2015, 传控科技 /// All rights reserved. /// /// @file main.c /// @brief main app /// ///(本文件实现的功能的详述) /// /// @version 1.1 CCsens technology /// @author CC /// @date 20150102 /// /// /// 修订说明:最初版本 /// Modified by: /// Modified date: /// Version: /// Descriptions: ////////////////////////////////////////////////////////////////////////// #ifndef __BIT_H__ #define __BIT_H__ #define cSetb0 0x01 #define cSetb1 0x02 #define cSetb2 0x04 #define cSetb3 0x08 #define cSetb4 0x10 #define cSetb5 0x20 #define cSetb6 0x40 #define cSetb7 0x80 #define cClrb0 0xfe #define cClrb1 0xfd #define cClrb2 0xfb #define cClrb3 0xf7 #define cClrb4 0xef #define cClrb5 0xdf #define cClrb6 0xbf #define cClrb7 0x7f #define cTestb0 0x01 #define cTestb1 0x02 #define cTestb2 0x04 #define cTestb3 0x08 #define cTestb4 0x10 #define cTestb5 0x20 #define cTestb6 0x40 #define cTestb7 0x80 #define true 1 #define false 0 #define B0000_0000 0x00 #define B0000_0001 0x01 #define B0000_0010 0x02 #define B0000_0011 0x03 #define B0000_0100 0x04 #define B0000_0101 0x05 #define B0000_0110 0x06 #define B0000_0111 0x07 #define B0000_1000 0x08 #define B0000_1001 0x09 #define B0000_1010 0x0A #define B0000_1011 0x0B #define B0000_1100 0x0C #define B0000_1101 0x0D #define B0000_1110 0x0E #define B0000_1111 0x0F #define B0001_0000 0x10 #define B0001_0001 0x11 #define B0001_0010 0x12 #define B0001_0011 0x13 #define B0001_0100 0x14 #define B0001_0101 0x15 #define B0001_0110 0x16 #define B0001_0111 0x17 #define B0001_1000 0x18 #define B0001_1001 0x19 #define B0001_1010 0x1A #define B0001_1011 0x1B #define B0001_1100 0x1C #define B0001_1101 0x1D #define B0001_1110 0x1E #define B0001_1111 0x1F #define B0010_0000 0x20 #define B0010_0001 0x21 #define B0010_0010 0x22 #define B0010_0011 0x23 #define B0010_0100 0x24 #define B0010_0101 0x25 #define B0010_0110 0x26 #define B0010_0111 0x27 #define B0010_1000 0x28 #define B0010_1001 0x29 #define B0010_1010 0x2A #define B0010_1011 0x2B #define B0010_1100 0x2C #define B0010_1101 0x2D #define B0010_1110 0x2E #define B0010_1111 0x2F #define B0011_0000 0x30 #define B0011_0001 0x31 #define B0011_0010 0x32 #define B0011_0011 0x33 #define B0011_0100 0x34 #define B0011_0101 0x35 #define B0011_0110 0x36 #define B0011_0111 0x37 #define B0011_1000 0x38 #define B0011_1001 0x39 #define B0011_1010 0x3A #define B0011_1011 0x3B #define B0011_1100 0x3C #define B0011_1101 0x3D #define B0011_1110 0x3E #define B0011_1111 0x3F #define B0100_0000 0x40 #define B0100_0001 0x41 #define B0100_0010 0x42 #define B0100_0011 0x43 #define B0100_0100 0x44 #define B0100_0101 0x45 #define B0100_0110 0x46 #define B0100_0111 0x47 #define B0100_1000 0x48 #define B0100_1001 0x49 #define B0100_1010 0x4A #define B0100_1011 0x4B #define B0100_1100 0x4C #define B0100_1101 0x4D #define B0100_1110 0x4E #define B0100_1111 0x4F #define B0101_0000 0x50 #define B0101_0001 0x51 #define B0101_0010 0x52 #define B0101_0011 0x53 #define B0101_0100 0x54 #define B0101_0101 0x55 #define B0101_0110 0x56 #define B0101_0111 0x57 #define B0101_1000 0x58 #define B0101_1001 0x59 #define B0101_1010 0x5A #define B0101_1011 0x5B #define B0101_1100 0x5C #define B0101_1101 0x5D #define B0101_1110 0x5E #define B0101_1111 0x5F #define B0110_0000 0x60 #define B0110_0001 0x61 #define B0110_0010 0x62 #define B0110_0011 0x63 #define B0110_0100 0x64 #define B0110_0101 0x65 #define B0110_0110 0x66 #define B0110_0111 0x67 #define B0110_1000 0x68 #define B0110_1001 0x69 #define B0110_1010 0x6A #define B0110_1011 0x6B #define B0110_1100 0x6C #define B0110_1101 0x6D #define B0110_1110 0x6E #define B0110_1111 0x6F #define B0111_0000 0x70 #define B0111_0001 0x71 #define B0111_0010 0x72 #define B0111_0011 0x73 #define B0111_0100 0x74 #define B0111_0101 0x75 #define B0111_0110 0x76 #define B0111_0111 0x77 #define B0111_1000 0x78 #define B0111_1001 0x79 #define B0111_1010 0x7A #define B0111_1011 0x7B #define B0111_1100 0x7C #define B0111_1101 0x7D #define B0111_1110 0x7E #define B0111_1111 0x7F #define B1000_0000 0x80 #define B1000_0001 0x81 #define B1000_0010 0x82 #define B1000_0011 0x83 #define B1000_0100 0x84 #define B1000_0101 0x85 #define B1000_0110 0x86 #define B1000_0111 0x87 #define B1000_1000 0x88 #define B1000_1001 0x89 #define B1000_1010 0x8A #define B1000_1011 0x8B #define B1000_1100 0x8C #define B1000_1101 0x8D #define B1000_1110 0x8E #define B1000_1111 0x8F #define B1001_0000 0x90 #define B1001_0001 0x91 #define B1001_0010 0x92 #define B1001_0011 0x93 #define B1001_0100 0x94 #define B1001_0101 0x95 #define B1001_0110 0x96 #define B1001_0111 0x97 #define B1001_1000 0x98 #define B1001_1001 0x99 #define B1001_1010 0x9A #define B1001_1011 0x9B #define B1001_1100 0x9C #define B1001_1101 0x9D #define B1001_1110 0x9E #define B1001_1111 0x9F #define B1010_0000 0xA0 #define B1010_0001 0xA1 #define B1010_0010 0xA2 #define B1010_0011 0xA3 #define B1010_0100 0xA4 #define B1010_0101 0xA5 #define B1010_0110 0xA6 #define B1010_0111 0xA7 #define B1010_1000 0xA8 #define B1010_1001 0xA9 #define B1010_1010 0xAA #define B1010_1011 0xAB #define B1010_1100 0xAC #define B1010_1101 0xAD #define B1010_1110 0xAE #define B1010_1111 0xAF #define B1011_0000 0xB0 #define B1011_0001 0xB1 #define B1011_0010 0xB2 #define B1011_0011 0xB3 #define B1011_0100 0xB4 #define B1011_0101 0xB5 #define B1011_0110 0xB6 #define B1011_0111 0xB7 #define B1011_1000 0xB8 #define B1011_1001 0xB9 #define B1011_1010 0xBA #define B1011_1011 0xBB #define B1011_1100 0xBC #define B1011_1101 0xBD #define B1011_1110 0xBE #define B1011_1111 0xBF #define B1100_0000 0xC0 #define B1100_0001 0xC1 #define B1100_0010 0xC2 #define B1100_0011 0xC3 #define B1100_0100 0xC4 #define B1100_0101 0xC5 #define B1100_0110 0xC6 #define B1100_0111 0xC7 #define B1100_1000 0xC8 #define B1100_1001 0xC9 #define B1100_1010 0xCA #define B1100_1011 0xCB #define B1100_1100 0xCC #define B1100_1101 0xCD #define B1100_1110 0xCE #define B1100_1111 0xCF #define B1101_0000 0xD0 #define B1101_0001 0xD1 #define B1101_0010 0xD2 #define B1101_0011 0xD3 #define B1101_0100 0xD4 #define B1101_0101 0xD5 #define B1101_0110 0xD6 #define B1101_0111 0xD7 #define B1101_1000 0xD8 #define B1101_1001 0xD9 #define B1101_1010 0xDA #define B1101_1011 0xDB #define B1101_1100 0xDC #define B1101_1101 0xDD #define B1101_1110 0xDE #define B1101_1111 0xDF #define B1110_0000 0xE0 #define B1110_0001 0xE1 #define B1110_0010 0xE2 #define B1110_0011 0xE3 #define B1110_0100 0xE4 #define B1110_0101 0xE5 #define B1110_0110 0xE6 #define B1110_0111 0xE7 #define B1110_1000 0xE8 #define B1110_1001 0xE9 #define B1110_1010 0xEA #define B1110_1011 0xEB #define B1110_1100 0xEC #define B1110_1101 0xED #define B1110_1110 0xEE #define B1110_1111 0xEF #define B1111_0000 0xF0 #define B1111_0001 0xF1 #define B1111_0010 0xF2 #define B1111_0011 0xF3 #define B1111_0100 0xF4 #define B1111_0101 0xF5 #define B1111_0110 0xF6 #define B1111_0111 0xF7 #define B1111_1000 0xF8 #define B1111_1001 0xF9 #define B1111_1010 0xFA #define B1111_1011 0xFB #define B1111_1100 0xFC #define B1111_1101 0xFD #define B1111_1110 0xFE #define B1111_1111 0xFF /************************************************* 标准位定义 *************************************************/ #define BIT0 0 #define BIT1 1 #define BIT2 2 #define BIT3 3 #define BIT4 4 #define BIT5 5 #define BIT6 6 #define BIT7 7 ///-------------------------------------- #define BITN0 0X01 #define BITN1 0X02 #define BITN2 0X04 #define BITN3 0X08 #define BITN4 0X10 #define BITN5 0X20 #define BITN6 0X40 #define BITN7 0X80 /// BITNx = { 0x40 0x80} #define BITN_1(X,BITNx) (X)|= (BITNx) #define BITN_0(X,BITNx) (X)&=~(BITNx) #define BITN_G(X,BITNx) ((X)&(BITNx)) #define BITN_M(X,mask) (X)&=(mask) #define BITN_S(X,BITNx,mask) BITN_M(X,mask);BITN_1(X,BITNx)///设置类似通道之类的多位操作 //BITN_1(reg,BITN0) #define BITS_1(X,BITx) (X)|= (BITx) #define BITS_0(X,BITx) (X)&=~(BITx) #define BITC_1 0X01 #define BITC_2 0X03 #define BITC_3 0X07 #define BITC_4 0X0F #define BITC_5 0X1F #define BITC_6 0X3F #define BITC_7 0X7F #define BITC_8 0XFF //// 多位配置,一定要配对使用,先清除再设置。 /// 对REG的 从BITx开始 清除 N位 #define BITS_CLR(REG,BITC_N,BITx) (REG)&= ~((BITC_N)<<(BITx)) ////对REG的 从BITx开始 放入值,小心溢出 一定要配对使用,先清除再设置。 #define BITS_SET(REG,VAL) (REG) |= (VAL) //直接操作 之前必须清零 ///BITS_CLR(REG,BITC_2,BIT0)/// reg.0 reg.1 两位被清零 ///BITS_CLR(REG,BITC_3,BIT5)/// reg.5 reg.6 reg.7 3位被清零 #define BITS_SET_SHIFT(REG,VAL,BITx) (REG)|= ((VAL)<<(BITx))///需要移位 兼容一部分程序 #if 0 /// b = {0,1,2,3,4,5,6,7} #define BIT_1(X,b) (X)|= (1<<(b)) #define BIT_0(X,b) (X)&=~(1<<(b)) #define BIT_G(X,b) ((X)&(1<<(b))) #define SETBIT(regVal, bitN) ((regVal) |= (1<<(bitN))) // 置位 #define CLRBIT(regVal, bitN) ((regVal) &= ~(1<<(bitN))) // 清位 #define GETBIT(regVal, bitN) ((regVal) & (1<<(bitN)) ) // 取位值 // 原来的意思是双位进行移位和赋值 0b0000 0011 // fixme #define BITD_CLR(regVal,D,bitN) (regVal)&=~((D)<<(bitN)) #define BITD_SET(regVal,D,bitN) BITD_CLR((regVal),3,(bitN));(regVal)|= ((D)<<(bitN)) ///----------------------------------- #define IO_OUT_HIGH(PORT, PIN) SETBIT(PORT, PIN) #define IO_OUT_LOW(PORT, PIN) CLRBIT(PORT, PIN) #endif #endif /* __BIT_H__ */