提升单片机技能:牛客网练习推荐

8051单片机内部有1个可位寻址区,地址为20H~2FH,共16个单元。其中每个单元中的每一位都可单独作为操作数,共128位。另外,如果SFR的地址值能被8整除,则该SFR也可以进行位寻址。可位寻址的SFR有ACC,B,PSW,P0,P1,P2,P3,IP,IE,TCON,SCON。
 

8051单片机有      个中断源:两个外部中断INT0/INT1,两个内部定时/计数器T0/T1,一个串行口中断RI/TI

8051 5个中断源,8052有3个定时器,所以有6个中断源。

当8051单片机系统的振荡晶体频率为3MHz时,其一个机器周期的时间是4μS。

晶体振荡12次为一个机器周期

一个机器周期 = 12 * 晶体振荡周期(12分频)
即晶体振荡12次为一个机器周期。(一个晶振周期*12=一个机器周期)(晶体振荡一次也叫一个时钟周期)

12MHz的晶振,一个机器周期就是1μS

6MHz的晶振,一个机器周期就是2μS

3MHz的晶振,一个机器周期就是4μS。

单片机中具有片内EPROM的是8751

数据指针(DPTR)是80C51中一个功能比较特殊的寄存器。是一个16位的特殊功能寄存器, 其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示,DPTR既可以作为一个16位的寄存器来处理,也可以作为两个独立的8位寄存器来使用。 主要功能是存放16位地址,作为片外RAM寻址用的地址寄存器(间接寻址),故称数据指针。 访问片外数据存储器的指令:    MOVX A,@DPTR读  MOVX @DPTR,A写   指令以16位DPTR为间址寄dao存器读片外RAM,可以寻址整个64KB的片外空间。

51单片机复位后主要是对内部特殊功能寄存器进行复位,复位后的值多数是00H,而四个并口寄存器P0、P1、P2、P3都为FFH。

对于8051单片机,当其引脚EA接高电平时,可扩展的外部程序存储器最大为60k字节。

IIC只有一个数据线SDA,一个时钟线SCL

volatile修饰的变量表明每一次使用该变量时,都需要从内存单元中读取:

        该关键字在基于rtos系统的编程中尤为重要,自己做开发时,有遇到过变量异常的情况,比如有两个任务,分别是任务A和任务B,都需要使用一个同一个变量param时,任务A执行过程中调度到任务B中,任务B中修改参数param,之后再切换到任务A中,这个时候对于任务A来说,param有可能没有更新为任务B修改后的值,鉴于该情况,就需要使用volatile关键字。

在跨文件使用变量或者函数时,需要使用extern对变量或者函数进行声明。

const关键字用来定义变量为常量:

        该关键字的好处在于增加了代码的稳定性,比如char *strcpy(char *dest, const char *src),此处的const就保证了源字符串src的不可篡改性

static 是一个在编程中具有多种用途的关键字,其行为取决于它所用于的上下文。以下是 static 可能用于的一些常见情境:

  1. 静态变量(Static Variables): 在函数内部声明的静态变量保留了它们的值,即使在函数调用结束后仍然存在。静态变量的作用域限定在声明它们的函数内,但它们的生命周期在整个程序运行期间都是存在的。

    
    

    cCopy code

    void myFunction() { static int count = 0; // 静态变量 count++; printf("Count: %d\n", count); }

  2. 静态函数(Static Functions): 在C语言中,static 关键字用于声明文件作用域的函数。这意味着这个函数只能在声明它的文件中调用,不能被其他文件访问。

    
    

    cCopy code

    static void myStaticFunction() { // 这个函数只能在当前文件中调用 }

  3. 静态全局变量(Static Global Variables): 在文件作用域内声明的全局变量可以用 static 修饰,这将限制该变量的作用域在声明它的文件中,其他文件无法访问。

    
    

    cCopy code

    static int globalVariable = 10; // 静态全局变量

  4. 静态成员变量(Static Member Variables): 在面向对象编程中,static 用于声明类的静态成员变量。这些变量属于整个类,而不是类的实例。

    
    

    cppCopy code

    class MyClass { public: static int staticMember; // 静态成员变量 }; int MyClass::staticMember = 0; // 在类外初始化静态成员

  5. 静态方法(Static Methods): 在面向对象编程中,static 用于声明类的静态方法。静态方法不依赖于类的实例,可以直接通过类名调用。

    
    

    cppCopy code

    class MyClass { public: static void myStaticMethod() { // 静态方法的实现 } }; // 调用静态方法 MyClass::myStaticMethod();

这只是 static 关键字的一些常见用法,具体的行为取决于它在哪里使用。在不同的上下文中,static 可能表示不同的语义。

物联沃分享整理
物联沃-IOTWORD物联网 » 提升单片机技能:牛客网练习推荐

发表评论