资 源 简 介
单片机常用宏
以前学51单片机的时候每次要配置寄存器的时候,虽然都知道看着器件手册去写,但是我还是觉得很痛苦,后来就有了这些宏,阅读起来会直观一点,不过敲的代码也得多一点,我后来写的代码都是用这些宏来封装寄存器操作的。
#ifndef MACRO_FUNCTION
#define MACRO_FUNCTION
//这个头文件里定义了一些宏定义,方便使用
/*********************************************************************************
* AssignBit / AssignFlag
*说明:
* 这个宏用来得到一个变量的某个或某几个位被赋值后的值
*参数:
* type 参数flag的类型
* flag 要赋值的变量
* which_bit
* 标明flag的哪几个位要被赋值
* val 表示要赋给flag的那几个位的值
*注意:
* 1. 对于宏,其参数不要用++i;之类的表达式!也不要直接使用调用函数得到的返回值!
* 2. 如果type是寄存器,那么它必须是可读的
*示例:
* u8 a = 0xf0;
* AssignBit(u8, a, BIT4 | BIT0, BIT0);
* 执行完后,a == 0xe1;
*备注:
* 1. 效率上, 如果参数(除flag外)都是常量, 编译器会自动优化, 如果参数是变量, 就算手动写代码也是这个样子的
* 2. (which_bit) 括号是为了保证 AssignBit(flag, BIT0 | BIT1, 0)之类的用法不会出错