C语言中,如何定义单片机的寄存器

Python018

C语言中,如何定义单片机的寄存器,第1张

位地址在汇编语言中,只能直接寻址,不支持间接寻址。那么,在 C 语言中,也就不能用指针来操作。所以不能定义单片机的寄存器

访问寄存器可以通过直接地址引用来完成。

例如52单片机的寄存器有4组,分别为00H-07H,08H-0FH,10H-17H,18H-1FH,各组均8字节,要结合程序状态字寄存器PSW(D0H)中的RS0,RS1的组合来确定是哪一组。

可以定义一个访问Rn的函数

typedef unsigned char uchar

uchar dacRn(uchar n)    //n=[0..7]

{

  uchar data *p

  n += (PSW & 0x18)  //PSW  7:CY 6:AC 5:F0 4:RS1 3:RS0 2:OV 1:F1 0:P

//本来要右移三位变为0-3,但由于是8个一组要乘以8(左移3位),所以直接加上寄存器编号就可以了

  return *(uchar data *)n

}

1、首先,输入寄存器变量关键字【register】。

2、然后输入变量的类型。

3、接下来输入变量名。

4、然后就可以i开始i对他进行应用。

5、那么来看看寄存器变量的作用。

6、其实,寄存器变量就是靠近寄存器的空间,就完成了。

注意事项:

C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。