51单片机 访问特殊功能寄存器

2024-12-28 13:35:56
推荐回答(4个)
回答1:

由于 51 单片机特殊功能寄存器,只能进行直接访问,不能进行间接访问,间接访问为80H~FFH
的RAM 空间,所以 不管是 C语言 及 汇编语言 都 不可能做到间接访问特殊功能寄存器。
或者 可以变通为 如
if (p = 0x90) { P1=0x0f };
if (p = 0xa0) { P2=0x0f };

回答2:

为你解答;

C51程序设计时,只有访问数组时,才使用指针。可以在循环程序中 顺序访问数组中的数据。

特殊寄存器,都是直接访问的,没有必要采用指针 即间接方式访问。

在C51程序设计中,可以嵌入汇编代码。

回答3:

不能用类似指针的方式访问特殊功能寄存器。
采用指针、数组方式访问的,是高128字节的RAM。

往P1口(0x90)写数据 0x0f,如下:

P1 = 0x0f;

即可。

当然,在程序的开头,应有头文件,才可以使用 P1。

回答4:

你定义char *p访问的是内部RAM,而不是特殊功能寄存器,寄存器定义要先用SFR定义,然后再去写数据。
SFR P1 = 0x90;
main()
{
P1 = 0x0f;
whlie(1);
}