SCT89C52.3(寄存器封装)
文章中充斥着大量的寄存器,简单的说下什么是寄存器:寄存器是内置于各个 IP 外设中,是一种用于配置外设功能的存储器,就是一种内存,并且有相对应的地址。
从C语言中知道,要操作这些内存就可以使用C语言中的指针,通过寻找对应地址的方式来操作这些具有特殊功能的内存也就是所说的寄存器。比如 P0 口对应的地址是0X80,那么我们要修改 0X80 这个地址对应的内存的内容的话,按照常理可以这样操作:
*(*0X80) = 0XFE;//点亮LED
但是这样做会报错,编译器报错。51和52的单片机只能通过sbit和sfr这两个东西去操作。你此时需要下面的这个东西的帮助:
点击第三章
我们要使用的就是这个东西,里面128个空格,但是只有28个有用
在没有数据手册的情况下,你可以去搜索一下
https://blog.csdn.net/weixin_34211615/article/details/112655666
这篇文章对寄存器的操作写的很好
继续说,怎么操作寄存器。明明上面说了,控制使用寄存器,但是现在为什么又不让操作了。咋回事?
P0 = 0Xfe;//总线操作点亮 LED
P0 = 0Xff;//总线操作关闭 LED
而是通过这样的方式直接操作。其实是因为中间做了一次关于相关地址的映射操作,具体的工具是sfr和sbit:
sfr P0 = 0x80;//寄存器定义
P0 = 0XFE;//总线操作点亮LED
所以看起来应该是这样。
C:\Keil\C51\INC\Intel
对应于keli的这里
看起来是这样的
完成了,地址->名字的mapping,
使用时是名字->值。
赞 (0)