单片机基本常识和学习习惯
-
Xtal(MHz) = 11.0592
-
单片机上电时,所有IO口默认高电平,其他寄存器默认低电平;符号上面的“一杠”表示低电平有效
-
下面所有的原理图仅代表博主学习时的原理图,每个人的原理图可能不一样,但基本的原理是相同的
-
正常括号都应该是
void test() { int a = 0; }写成这样只是博主自己的习惯写法(极其不推荐,这样是Java的括号写法)
void test(){ int a = 0; } -
所有练习代码都应该存放好,方便以后使用、复习和改进
这是我文件夹的基本情况,初学者可以参考一下。

-
单片机代码或笔记写完之后一定要记得保存!!!(如果使用的是Typora,建议勾选自动保存,以及写完之后再Ctrl + S)
-
Win + R ,输入calc,打开计算器。导航中点击程序员。计算器多用来把“心仪的“二进制转换成十六进制。
![]()
-
命名尽量或者说不要使用中文命名
void anjianpanduan();//极其不推荐规范命名:
void keyJudge();//驼峰命名法 void KeyJudge();//帕斯卡命名法 void key_judge();//下划线命名法 -
头文件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
-
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 --);
二、程序风格
-
严格采用阶梯层次组织的程序代码(对应上面第4点)
-
命名规则
匈牙利法则(Hungarian记号法)
-
变量命名:采用”匈牙利法则“——变量类型+变量的英文意思
int iKey(); unsigned char a_ucArray[3] = {0,0,0}; -
模块化命名
tmr_GetCurtime();//时钟模块,获取当前函数 /** *tmr timer 定时器 *cur current 目前,现在 */ -
结构体命名
struct Sclock { int iHour;//时 int iMinute;//分 int iSecond;//秒 };
单片机较为权威的文件推荐的就是这种命名方法。
驼峰命名法(Camel命名法)
void keyJudge();
/**
*第一个单词全小写
*之后的单词首字母均大写
*/
阿里巴巴指导书2019中明确指出Java变量、函数等命名都必须使用驼峰命名法。
博主习惯的命名也是驼峰命名法。
帕斯卡命名(pascal命名法、大驼峰命名法)
void KeyJudge();
/**
*第一个单词首字母也是大写
*之后的单词首字母均大写
*/
下划线命名法
void Key_judge();
在UNIX/LIUNX这样的环境,以及GNU代码中使用非常普遍。
相关资源:单片机C语言变量名命名规则整理


浙公网安备 33010602011771号