⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bitops.h

📁 MANTIS是由科罗拉多大学开发的传感器网络嵌入式操作系统。 这是mantis的0.9.5版本的源码。
💻 H
字号:
//  This file is part of MANTIS OS, Operating System//  See http://mantis.cs.colorado.edu/////  Copyright (C) 2003,2004,2005 University of Colorado, Boulder////  This program is free software; you can redistribute it and/or//  modify it under the terms of the mos license (see file LICENSE)/** @file bitops.h * @brief Operations which specify how to set ports to input * or output. Additionally provides macros for setting and clearing * these registers. */#ifdef PLATFORM_TELOSB#define PORT_DIR_(port) P##port##DIR#define PORT_OUT_(port) P##port##OUT#define PORT_IN_(port) P##port##IN#else#define PORT_DIR_(port) DDR##port#define PORT_OUT_(port) PORT##port#define PORT_IN_(port) PIN##port#endif#define PORT_DIR(port) PORT_DIR_(port)#define PORT_OUT(port) PORT_OUT_(port)#define PORT_IN(port) PORT_IN_(port)/* these macros set bits in a given byte */#define MASK_1(byte, bit) (byte |= (1 << bit))#define MASK_2(byte, bit1, bit2) (byte |= (1 << bit1) | (1 << bit2))#define MASK_3(byte, bit1, bit2, bit3)			\   (byte |= (1 << bit1) | (1 << bit2) | (1 << bit3))#define MASK_4(byte, bit1, bit2, bit3, bit4)				\   (byte |= (1 << bit1) | (1 << bit2) | (1 << bit3) | (1 << bit4))#define MASK_5(byte, bit1, bit2, bit3, bit4, bit5)			\   (byte |= (1 << bit1) | (1 << bit2) | (1 << bit3) | (1 << bit4) |	\    (1 << bit5))#define MASK_6(byte, bit1, bit2, bit3, bit4, bit5, bit6)		\   (byte |= (1 << bit1) | (1 << bit2) | (1 << bit3) | (1 << bit4) |	\    (1 << bit5) | (1 << bit6))#define MASK_7(byte, bit1, bit2, bit3, bit4, bit5, bit6, bit7)		\   (byte |= (1 << bit1) | (1 << bit2) | (1 << bit3) | (1 << bit4) |	\    (1 << bit5) | (1 << bit6) | (1 << bit7))/* these macros clear bits in a given byte */#define UNMASK_1(byte, bit) (byte &= ~(1 << bit))#define UNMASK_2(byte, bit1, bit2) (byte &= ~((1 << bit1) |	\					      (1 << bit2)))#define UNMASK_3(byte, bit1, bit2, bit3)		\   (byte &= ~((1 << bit1) | (1 << bit2) | (1 << bit3)))#define UNMASK_4(byte, bit1, bit2, bit3, bit4)				\   (byte &= ~((1 << bit1) | (1 << bit2) | (1 << bit3) | (1 << bit4)))#define UNMASK_5(byte, bit1, bit2, bit3, bit4, bit5)			\   (byte &= ~((1 << bit1) | (1 << bit2) | (1 << bit3) | (1 << bit4) |	\	      (1 << bit5)))#define UNMASK_6(byte, bit1, bit2, bit3, bit4, bit5, bit6)		\   (byte &= ~((1 << bit1) | (1 << bit2) | (1 << bit3) | (1 << bit4) |	\	      (1 << bit5) | (1 << bit6)))#define UNMASK_7(byte, bit1, bit2, bit3, bit4, bit5, bit6, bit7)	\   (byte &= ~((1 << bit1) | (1 << bit2) | (1 << bit3) | (1 << bit4) |	\	      (1 << bit5) | (1 << bit6) | (1 << bit7)))#define SET_DIR_1_(port, pin) MASK_1 (PORT_DIR(port), pin)#define SET_DIR_1(x) SET_DIR_1_ (x)#define SET_DIR_2_(port1, pin1, port2, pin2)	\   MASK_2 (PORT_DIR(port1), pin1, pin2)#define SET_DIR_2(x, y) SET_DIR_2_ (x, y)#define SET_DIR_3_(port1, pin1, port2, pin2, port3, pin3)	\   MASK_3 (PORT_DIR(port1), pin1, pin2, pin3)#define SET_DIR_3(x, y, z) SET_DIR_3_ (x, y, z)#define SET_DIR_4_(port1, pin1, port2, pin2, port3, pin3, port4, pin4)	\   MASK_4 (PORT_DIR(port1), pin1, pin2, pin3, pin4)#define SET_DIR_4(w, x, y, z) SET_DIR_4_ (w, x, y, z)#define SET_DIR_5_(port1, pin1, port2, pin2, port3, pin3, port4, pin4,	\		   port5, pin5)						\   MASK_5 (PORT_DIR(port1), pin1, pin2, pin3, pin4, pin5)#define SET_DIR_5(v, w, x, y, z) SET_DIR_5_ (v, w, x, y, z)#define SET_DIR_6_(port1, pin1, port2, pin2, port3, pin3, port4, pin4,	\		   port5, pin5, port6, pin6)				\   MASK_6 (PORT_DIR(port1), pin1, pin2, pin3, pin4, pin5, pin6)#define SET_DIR_6(u, v, w, x, y, z) SET_DIR_6_ (u, v, w, x, y, z)#define SET_DIR_7_(port1, pin1, port2, pin2, port3, pin3, port4, pin4,	\		   port5, pin5, port6, pin6)				\   MASK_7 (PORT_DIR(port1), pin1, pin2, pin3, pin4, pin5, pin6, pin7)#define SET_DIR_7(t, u, v, w, x, y, z)		\   SET_DIR_7_ (t, u, v, w, x, y, z)#define UNSET_DIR_1_(port, pin) UNMASK_1 (PORT_DIR(port), pin)#define UNSET_DIR_1(x) UNSET_DIR_1_ (x)#define UNSET_DIR_2_(port1, pin1, port2, pin2)	\   UNMASK_2 (PORT_DIR(port1), pin1, pin2)#define UNSET_DIR_2(x, y) UNSET_DIR_2_ (x, y)#define UNSET_DIR_3_(port1, pin1, port2, pin2, port3, pin3)	\   UNMASK_3 (PORT_DIR(port1), pin1, pin2, pin3)#define UNSET_DIR_3(x, y, z) UNSET_DIR_3_ (x, y, z)#define UNSET_DIR_4_(port1, pin1, port2, pin2, port3, pin3, \		     port4, pin4)			    \   UNMASK_4 (PORT_DIR(port1), pin1, pin2, pin3, pin4)#define UNSET_DIR_4(w, x, y, z) UNSET_DIR_4_ (w, x, y, z)#define UNSET_DIR_5_(port1, pin1, port2, pin2, port3, pin3, \		     port4, pin4, port5, pin5)		    \   UNMASK_5 (PORT_DIR(port1), pin1, pin2, pin3, pin4, pin5)#define UNSET_DIR_5(v, w, x, y, z) UNSET_DIR_5_ (v, w, x, y, z)#define UNSET_DIR_6_(port1, pin1, port2, pin2, port3, pin3,	\		     port4, pin4, port5, pin5, port6, pin6)	\   UNMASK_6 (PORT_DIR(port1), pin1, pin2, pin3, pin4, pin5, pin6)#define UNSET_DIR_6(u, v, w, x, y, z) UNSET_DIR_6_ (u, v, w, x, y, z)#define UNSET_DIR_7_(port1, pin1, port2, pin2, port3, pin3,		\		     port4, pin4, port5, pin5, port6, pin6)		\   UNMASK_7 (PORT_DIR(port1), pin1, pin2, pin3, pin4, pin5, pin6, pin7)#define UNSET_DIR_7(t, u, v, w, x, y, z)	\   UNSET_DIR_7_ (t, u, v, w, x, y, z)#define SET_PORT_1_(port, pin) MASK_1 (PORT_OUT(port), pin)#define SET_PORT_1(x) SET_PORT_1_ (x)#define SET_PORT_2_(port1, pin1, port2, pin2)	\   MASK_2 (PORT_OUT(port1), pin1, pin2)#define SET_PORT_2(x, y) SET_PORT_2_ (x, y)#define SET_PORT_3_(port1, pin1, port2, pin2, port3, pin3)	\   MASK_3 (PORT_OUT(port1), pin1, pin2, pin3)#define SET_PORT_3(x, y, z) SET_PORT_3_ (x, y, z)#define SET_PORT_4_(port1, pin1, port2, pin2, port3, pin3, port4, pin4) \   MASK_4 (PORT_OUT(port1), pin1, pin2, pin3, pin4)#define SET_PORT_4(w, x, y, z) SET_PORT_4_ (w, x, y, z)#define SET_PORT_5_(port1, pin1, port2, pin2, port3, pin3, port4, pin4, \			port5, pin5)					\   MASK_5 (PORT_OUT(port1), pin1, pin2, pin3, pin4, pin5)#define SET_PORT_5(v, w, x, y, z) SET_PORT_5_ (v, w, x, y, z)#define SET_PORT_6_(port1, pin1, port2, pin2, port3, pin3, port4, pin4, \			port5, pin5, port6, pin6)			\   MASK_6 (PORT_OUT(port1), pin1, pin2, pin3, pin4, pin5, pin6)#define SET_PORT_6(u, v, w, x, y, z) SET_PORT_6_ (u, v, w, x, y, z)#define SET_PORT_7_(port1, pin1, port2, pin2, port3, pin3, port4, pin4, \			port5, pin5, port6, pin6)			\   MASK_7 (PORT_OUT(port1), pin1, pin2, pin3, pin4, pin5, pin6, pin7)#define SET_PORT_7(t, u, v, w, x, y, z)	\   SET_PORT_7_ (t, u, v, w, x, y, z)#define UNSET_PORT_1_(port, pin) UNMASK_1 (PORT_OUT(port), pin)#define UNSET_PORT_1(x) UNSET_PORT_1_ (x)#define UNSET_PORT_2_(port1, pin1, port2, pin2)	\   UNMASK_2 (PORT_OUT(port1), pin1, pin2)#define UNSET_PORT_2(x, y) UNSET_PORT_2_ (x, y)#define UNSET_PORT_3_(port1, pin1, port2, pin2, port3, pin3)	\   UNMASK_3 (PORT_OUT(port1), pin1, pin2, pin3)#define UNSET_PORT_3(x, y, z) UNSET_PORT_3_ (x, y, z)#define UNSET_PORT_4_(port1, pin1, port2, pin2, port3, pin3, \		      port4, pin4)			     \   UNMASK_4 (PORT_OUT(port1), pin1, pin2, pin3, pin4)#define UNSET_PORT_4(w, x, y, z) UNSET_PORT_4_ (w, x, y, z)#define UNSET_PORT_5_(port1, pin1, port2, pin2, port3, pin3, \		      port4, pin4, port5, pin5)		     \   UNMASK_5 (PORT_OUT(port1), pin1, pin2, pin3, pin4, pin5)#define UNSET_PORT_5(v, w, x, y, z) UNSET_PORT_5_ (v, w, x, y, z)#define UNSET_PORT_6_(port1, pin1, port2, pin2, port3, pin3, \		      port4, pin4, port5, pin5, port6, pin6)	\   UNMASK_6 (PORT_OUT(port1), pin1, pin2, pin3, pin4, pin5, pin6)#define UNSET_PORT_6(u, v, w, x, y, z) UNSET_PORT_6_ (u, v, w, x, y, z)#define UNSET_PORT_7_(port1, pin1, port2, pin2, port3, pin3, \		      port4, pin4, port5, pin5, port6, pin6)		\   UNMASK_7 (PORT_OUT(port1), pin1, pin2, pin3, pin4, pin5, pin6, pin7)#define UNSET_PORT_7(t, u, v, w, x, y, z)	\   UNSET_PORT_7_ (t, u, v, w, x, y, z)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -