单片机关键字sfr和sbit的理解
来源:互联网 发布:链家端口费是每个月吗? 编辑:程序博客网 时间:2024/04/29 15:59
在单片机C语言编程中,扩充了两个关键字sfr和sbit。
sfr(Special Function Register特殊功能寄存器的缩写),sbit(特殊功能寄存器位),与定义一般的int、char型变量不同,这两个字定义的并不是变量,而作为特殊功能寄存器的引用,或许可以叫做别名。
sfr(Special Function Register特殊功能寄存器的缩写),sbit(特殊功能寄存器位),与定义一般的int、char型变量不同,这两个字定义的并不是变量,而作为特殊功能寄存器的引用,或许可以叫做别名。
单片机头文件<reg51.h>中定义了21个特殊功能寄存器,并且都是8位寄存器,而部分寄存器的每个位又用sbit进行了定义:
sfr P0 = 0x80;sfr P1 = 0x90;sfr P2 = 0xA0;sfr P3 = 0xB0;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr IE = 0xA8;sfr IP = 0xB8;sfr SCON = 0x98;sfr SBUF = 0x99;sfr是定义一个8位的寄存器,sbit是定义位寄存器,个人认为可以把这种定义理解为定义一个常量指针始终指向0x80这个特殊寄存器,即如下定义方法;
const unsigned char *PP = 0x80;当然,这种定义方法不完全符合上面的说法,而且*PP被限制了写操作的,即PP所指向的地址被认定为常量,而PP任然是个变量,事实上除了使用sfr和sbit进行定义外,其他定义方式被认为是不安全的而被限制了写入操作。最后发现定义指针的时候只有定义数组时:
char a[];地址指针a才是一个常量指针,而其他指针都是变量;
0 0
- 单片机关键字sfr和sbit的理解
- 单片机sfr和sbit关键字,详解
- sfr与sbit的理解,及单片机中断
- 详解单片机中的关键字:sfr sbit
- 51单片机sfr sbit bit学习
- sbit与sfr关键字简析
- 单片机中几种常用数据类型 bit,sbit,sfr,sfr16。
- sfr,sfr16,esfr,sbit
- c51中sbit/sfr 用法
- 关于51单片机中的RAM、SFR和位地址的问题
- 单片机中的SFR是什么?
- 51单片机的特殊功能寄存器(SFR)
- 51单片机的特殊功能寄存器(SFR)
- bit 和sbit的区别
- bit和sbit的区别
- 单片机中的sbit
- 单片机及C51的sbit变量如何实现外部声明
- c51编程中sbit sfr 用法
- BZOJ 2223: [Coci 2009]PATULJCI
- LeetCode:238. Product of Array Except Self(除自身外的乘积)
- React Native运行中的坑(MAC)
- 经典算法面试题及答案
- weblogic down 掉无法启动 ( 被锁)
- 单片机关键字sfr和sbit的理解
- c++之MFC(1)基础知识
- POJ Problem 3040 Allowance 【贪心】
- zookeeper如何永久监听
- Java 项目的命名规范
- Android系统源码阅读(1):编译
- 一对一映射
- 虚拟机与主机共享文件夹步骤
- 高效的显示bitmap