原创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赋值为1010 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;

这只是我学习过程中的记录和整理,由于本人才刚刚进入这个行业,故在文中如有错误和不托之处还请大师留言指点,学生在此先行谢过了!!!

相关推荐

《怪物猎人世界》长枪操作技巧指南 pc长枪怎么冲刺?
365bet官网中文网

《怪物猎人世界》长枪操作技巧指南 pc长枪怎么冲刺?

⏱️ 08-29 👁️ 1617
星兜怎么养,用深盆还是浅盆
体育投注英超和欧冠

星兜怎么养,用深盆还是浅盆

⏱️ 07-25 👁️ 2467
查找小米字体文件夹的位置
体育投注英超和欧冠

查找小米字体文件夹的位置

⏱️ 08-08 👁️ 7739
手机怎么输入分数
365bet官网中文网

手机怎么输入分数

⏱️ 09-26 👁️ 3428
《小鸡模拟器》联机教程
365bet官网中文网

《小鸡模拟器》联机教程

⏱️ 08-25 👁️ 397
韩国赌场使用方法和推荐赌场
bt365无法登陆

韩国赌场使用方法和推荐赌场

⏱️ 07-19 👁️ 4572