zoukankan      html  css  js  c++  java
  • sbit和sfr到底是什么?

    sbit是用来给特殊寄存器某个位取一个名字。sfr就是特殊寄存器。

    下图就是51单片机所有的特殊寄存器

    每个寄存器的位我们都可以给它取一个名字,专业术语叫 标识符,通过这个标识符可以操作对应的数据。每个寄存器的位也都拥有一个地址,通过寄存器的地址也可以访问到对应的数据。

    但是地址只能做右值,不能做左值。也就是

    sbit led =0xA0^1//0xA0是P2这个寄存器的地址

    是可以的

    0xA0^1=0//这是错误的,编译会提示语法错误。

    为了让我们更方便的操作寄存器中的位数据,引入了sbit

    sbit常用的两种方法

    //sbit led =0xA0^1; //A0是P2这个寄存器的地址
    //sbit ledD2=P2^0; //P2寄存器的名字

    0xA0^1是什么?

    STC80C52是一个8位CPU,所以P2这个寄存器是8位的,而P2这个寄存器的地址是0xA0,这个寄存器的位地址是这样的,从第0位到第7位

     第一位     第二位    第三位    .。。。  第七位  

    1010 0000    1010 0001    1010 0010       1010 0111

    ^是异或的意思

    0xA0^1=

    1010 0000

    XOR  0001

    1010 0001

    这个1010 0001 正好就是寄存器A0的第1个位地址(从0开始数的),以此类推,0xA0^7的结果是1010 0111 ,也就是A0的第七个位地址。

    每个寄存器都有一个名字,专业术语叫标识符,每个寄存器都有一个地址。

    因为地址不能做左值只能做右值,所以我们用寄存器的标识符操作寄存器的数据。

    寄存器的用法

    P2=0xFF;

    P1=0x55;

    参考资料:http://www.keil.com/support/man/docs/c51/c51_le_sbit.htm

  • 相关阅读:
    markdown keynote
    pyecharts
    运行成功
    python发邮件3
    python发邮件2
    python发邮件1
    python发邮件
    python中的编码声明
    auther tonyxiao
    111
  • 原文地址:https://www.cnblogs.com/yfish/p/10855744.html
Copyright © 2011-2022 走看看