寄存器编程
寄存器基本概念
寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储 1 位二进制代码,故存放 n 位二进制代码的寄存器,需用 n 个触发器来构成。
按照功能的不同,可将寄存器分为基本寄存器和移位寄存器两大类。基本寄存器只能并行送入数据,也只能并行输出。移位寄存器中的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,或串行输入、并行输出,十分灵活,用途也很广。
寄存器最起码具备以下 4 种功能。 1)清除数码: 将寄存器里的原有数码清除。
2)接收数码: 在接收脉冲作用下,将外输入数码存入寄存器中。
3)存储数码: 在没有新的写入脉冲来之前,寄存器能保存原有数码不变。
4)输出数码: 在输出脉冲作用下,才通过电路输出数码。
仅具有以上功能的寄存器称为数码寄存器;有的寄存器还具有移位功能,称为移位寄存器。
寄存器有串行和并行两种数码存取方式。将 n 位二进制数一次存入寄存器或从寄存器中读出的方式称为并行方式。将 n 位二进制数以每次 1 位,分成 n 次存入寄存器并从寄存器读出,这种方式称为串行方式。并行方式只需一个时钟脉冲就可以完成数据操作,工作速度快,但需要 n 根输入和输出数据线。串行方式要使用几个时钟脉冲完成输入或输出操作,工作速度慢,但只需要一根输入或输出数据线,传输线少,适用于远距离传输。
掩码
掩码(MASK)作用 ==> 修改某一位
掩码(MASK)生成 = 1 << (修改第几位-1)
修改寄存器的位操作
寄存器某位置 1
c
// 例如寄存器flag = 1000 0001b
// 需要实现该寄存器第三位 置1
MASK = 1 << 2; // MASK = 0000 0100b
flag = flag | MASK // flag = 1000 0101b
寄存器某位清 0
c
// 例如寄存器flag = 1000 0001b
// 需要实现该寄存器第八位 清0
MASK = 1 << 7; // MASK = 1000 0000b
flag = flag & (~MASK); // flag = 0000 0001b;
寄存器某位取反
c
// 例如寄存器flag = 1000 0001b
// 需要实现该寄存器第七位 取反
MASK = 1 << 6; // MASK = 0100 0000b;
flag = flag ^ MASK; // flag = 1100 0001b;
具体可看一下链接:https://blog.csdn.net/weixin_43853307/article/details/108412943