C 编程之——寄存器赋值操作

C 编程之——寄存器赋值操作

在嵌入式硬件编程中,大多数情况下都是对相应硬件的功能寄存器进行设置和操作。

一, 寄存器的设置和操作特性

1,一个寄存器的每个位有其不同的意义,进行不同的设置会使硬件产生不同的效果和功能;

2,有些情况下需要对一个寄存器进行连续的不同的甚至完全相反的设置;

3,有些情况下需要对一个寄存器中的某一位或一位进行连续的不同的甚至完全相反的设置,而其余的位要保持不变;

4,有时,对一个寄存器进行设置时,对其不同的位进行先后顺序不同的设置,即对其各个位有先后设置的顺序的要求,使硬件产生的结果也不同;

5,有时,对于一个寄存器要求必须一次赋值,若对其某些位赋值先后顺序不同,便达不到预期的效果和功能。

二,寄存器的赋值操作方法

为说明方便,定义如下3个8位的寄存器:

#define REG 0xFFFFFF10

1,对单个的位进行赋值

(1) 将寄存器REG的第5位置“1”

REG |= (1 << 5);

(2) 将寄存器REG的第5位清零

REG &= ~(1 << 5);

(3) 将寄存器REG的第3、5位置“1”

REG |= (1 << 5) | (1 << 3);

(4) 将寄存器REG的第3、5位清零

REG &= ~( (1 << 5) | (1 << 3) );

2,直接赋值

(1)将寄存器REG的0、1、2、3、5、7位置“1”

REG = 0x5F;

(即给寄存器REG1赋值为0101 1111,这种方法多在初始化中使用)

(2)分别将寄存器REG的1、3、5、7位置“1”,0、2位置“0”

uint32 temp;

tmep = REG;

temp &= ~0x01;

temp |= (1 << 1);

temp &= ~(1 << 2);

temp |= (1 << 3);

temp |= (1 << 5);

temp |= (1 << 7);

REG = temp;

相关推荐

婷美怎么样效果怎么样?塑身内衣真实反馈
365bet客服电话多少

婷美怎么样效果怎么样?塑身内衣真实反馈

📅 06-30 👁️ 8312
360手机管家怎么屏蔽短信 《360手机卫士》拦截骚扰电话和短信方法
欧洲无弱旅!波黑男篮双加时苦战掀翻法国队
韵达和圆通收费标准是怎么样的?哪家快递更便宜
365bet客服电话多少

韵达和圆通收费标准是怎么样的?哪家快递更便宜

📅 06-27 👁️ 3750
索尼和三星电视的比较
365bet官方

索尼和三星电视的比较

📅 08-27 👁️ 4067
投票软件有哪些?投票软件软件推荐
365bet官方

投票软件有哪些?投票软件软件推荐

📅 07-17 👁️ 9066