单片机基本常识和学习习惯

  1. Xtal(MHz) = 11.0592

  2. 单片机上电时,所有IO口默认高电平,其他寄存器默认低电平;符号上面的“一杠”表示低电平有效

  3. 下面所有的原理图仅代表博主学习时的原理图,每个人的原理图可能不一样,但基本的原理是相同的

  4. 正常括号都应该是

    void test()
    {
        int a = 0;
    }
    

    写成这样只是博主自己的习惯写法(极其不推荐,这样是Java的括号写法)

    void test(){
        int a = 0;
    }
    
  5. 所有练习代码都应该存放好,方便以后使用、复习和改进

这是我文件夹的基本情况,初学者可以参考一下。

  1. 单片机代码或笔记写完之后一定要记得保存!!!(如果使用的是Typora,建议勾选自动保存,以及写完之后再Ctrl + S)

  2. Win + R ,输入calc,打开计算器。导航中点击程序员。计算器多用来把“心仪的“二进制转换成十六进制。

  3. 命名尽量或者说不要使用中文命名

    void anjianpanduan();//极其不推荐
    

    规范命名:

    void keyJudge();//驼峰命名法
    
    void KeyJudge();//帕斯卡命名法
    
    void key_judge();//下划线命名法
    
  4. 头文件reg51和reg52的区别

    (初学者只要知道”reg52是对reg51进行扩充,增加了T2定时器/计数器“就可)


左边是reg51,右边是reg52


左边是reg51,右边是reg52

由reg51、reg52的源码对比可知,reg52是对reg51进行扩充,增加了T2定时器/计数器和DPTR1寄存器的地址。此外reg52还扩展了外部RAM。

1. T2CON是T2的TCON

2. TH2和TL2是定时器2的寄存器,相当于定时0的TH0和TL0。

3. RCAP2H和RCAP2L是定时器2的自动重装载值的寄存器

4. 52单片机的T2扩展口T2EX具有捕获功能,可以准确的测量出脉冲宽度和周期。
    
   外部引脚发生负跳变,捕获的数值会存入RCAP2L和RCAP2H中,并向CPU申请中断。
    
   当该引脚再次发生负跳变,产生第二次捕获,根据两次数据可以计算出脉冲周期

相关连接:51单片机控制字详解–T2CON

  1. for循环如果只有一条语句或者一条语句都没有,可以省略括号

    for(i = 10; i > 0; i --)
    {
        for(j = 20; j > 0; j --)
        {
            
        }
    }
    /**
    * 第二个for循环一条语句都没有,故可以省略括号,
    * 由于第二个for循环里没有一条语句,所以第一个for循环里只有一条语句(第二个for循环)
    

    上述代码可以简写成

    for(i = 10; i > 0; i --)
        for(j = 20; j > 0; j --);
    

二、程序风格

  1. 严格采用阶梯层次组织的程序代码(对应上面第4点)

  2. 命名规则

匈牙利法则(Hungarian记号法)

  1. 变量命名:采用”匈牙利法则“——变量类型+变量的英文意思

    int iKey();
    
    unsigned char a_ucArray[3] = {0,0,0};
    
  2. 模块化命名

       tmr_GetCurtime();//时钟模块,获取当前函数
       /**
       *tmr timer 定时器
       *cur current 目前,现在
       */
    
  3. 结构体命名

       struct Sclock
       {
           int iHour;//时
           int iMinute;//分
           int iSecond;//秒
       };
    

单片机较为权威的文件推荐的就是这种命名方法。

驼峰命名法(Camel命名法)

   void keyJudge();
   /**
   *第一个单词全小写
   *之后的单词首字母均大写
   */

阿里巴巴指导书2019中明确指出Java变量、函数等命名都必须使用驼峰命名法。

博主习惯的命名也是驼峰命名法。

帕斯卡命名(pascal命名法、大驼峰命名法)

   void KeyJudge();
   /**
   *第一个单词首字母也是大写
   *之后的单词首字母均大写
   */

下划线命名法

   void Key_judge();

在UNIX/LIUNX这样的环境,以及GNU代码中使用非常普遍。

相关资源:单片机C语言变量名命名规则整理

posted @ 2021-09-04 00:56  六月琳  阅读(55)  评论(0)    收藏  举报