单片机关键字sfr和sbit的理解 您所在的位置:网站首页 c语言中0x30是什么意思 单片机关键字sfr和sbit的理解

单片机关键字sfr和sbit的理解

2024-07-16 04:33| 来源: 网络整理| 查看: 265

本文转载自 链接:https://blog.csdn.net/Lorain_Lynies/article/details/52013611

在单片机C语言编程中,扩充了两个关键字sfr和sbit。 sfr(Special Function Register特殊功能寄存器的缩写),sbit(特殊功能寄存器位),与定义一般的int、char型变量不同,这两个字定义的并不是变量,而作为特殊功能寄存器的引用,或许可以叫做别名。 单片机头文件中定义了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才是一个常量指针,而其他指针都是变量;



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有