单片机软件编码规则介绍
单片机软件编码规范是为了保证单片机系统软件可读性、可维护性、稳健性和跨平台性而建立的标准。以下是单片机软件编码规范的详细介绍:
1. 命名规则:变量、函数、宏等的命名应遵循清晰、表意、简短的原则。命名应采用英文小写字母+下划线的方式。同时,驼峰命名法可以有效提高代码可读性。
2. 编码样式规范:提高代码的可读性和易于维护性,推荐使用以下编码样式:
(1) 所有大括号独占一行。
(2) 所有语句以分号结束。
(3) 在二元操作符两边加空格。
(4) 在函数名和接口之间加空格,例如:Function_Name (param1, param2);
(5) 将 if、for、while 等的参数用括号包括起来。
(6) 缩进量固定,最好是 4 个空格。
3. 变量和函数定义规范:没有必要定义未使用的变量,应删除无用的代码,确保代码干净整洁。函数定义的参数应确定其类型,包括输入参数、输出参数和返回值类型。
4. 代码实现规范:
(1) 优先使用局部变量,而非全局变量。
(2) 尽量不使用 goto 语句,防止产生不可控制的逻辑。
(3) 及时地处理所有错误和异常,并养成记录日志的好习惯。
(4) 检查程序是否符合消除警告级别的编译器标准等编译器标准。
(5) 注释必要的语句,包括变量、函数、方法、行为等的解释。
5. 版本控制:使用版本控制软件,例如 Git,来跟踪代码版本。当多个开发人员在项目上工作时,版本控制工具可以确保每个开发人员对相同代码进行工作,并可调换代码。
6. 单元测试:测试是软件开发过程中的一个重要阶段。单元测试可以在整个开发周期中的更早阶段捕获和纠正逻辑缺陷。
综上所述,符合单片机软件编码规范的程序应遵循一些常规标准,旨在改善代码质量、可读性、可维护性和可再利用性。
从一个详细的实例来知道单片机编程,你照着做就行了
我们要想使单片机工作,就需要编写程序,再将程序写入单片机,单片机在程序的控制下工作以完成指定的任务。没有程序的控制,单片机就无法工作。那么如何编写单片机程序呢?
1.从一个实例初步了解编程
上面这张图所示是一个边长为100m的正方形跑道,有一个人(称作甲)处于A点,如果要让甲到达B点,可以执行如下的程序:
起点 前进 50m
左转
前进 100m
左转
前进 50m
结束
甲逐条执行程序中的命令:先前进 50m,左转,然后前进100m,左转,再前进50m,结束,就可以到达B点。如果将上述程序改成:
起点 前进 50m
左转
前进 100m
左转
前进 50m
返回到 起点
结束
甲执行上述程序中的命令时会怎样呢?当他执行到第5行命令时,会到达B点,接着执行第6行命令,该命令使他又返回到起点(标号),甲于是又会执行第1行指令……由于执行到第6行的指令时又会返回执行第1行的命令,永远执行不到结束命令,所以,如果甲执行上述程序,就会不断在A、B点之间反复运动,不会停止。如果只要求甲在A、B点之间往返3次,上述程序应如何编写呢?读者可以思考一下,在后面的章节将会讲到这个问题。
2.分析一个单片机汇编语言程序
从前面的介绍初步了解了编程思想后,再来分析用到的汇编语言程序,程序如下:
MAIN: MOV P3,#0FFH
LOOP: MOV P1,P3
LJMP LOOP
END
为了更好地理解上面的程序,下面对照图所示的单片机应用电路来进行讲解。
第1 行指令“MAIN:MOV P3,#0FFH”的含义是将数据11111111(0FFH)送到P3 端口的8个寄存器,让P3端口的P3.0~P3.7这8个引脚全部为高电平。
“MAIN:”为标号,表示该行为主程序开始,这里也可省略,并不影响程序的运行;“MOV”为数据传送指令;“P3”表示单片机P3端口内部的8个寄存器;“#0FFH”中的“#”号表示它后面的“0FFH”是一个数据,而不是地址编号,“0FFH”是一个十六进制数,转换成二进制数就是11111111。
该行指令运行后,图中的单片机P3.0~P3.7这8个引脚内部的寄存器全部为高电平,相应的这8个引脚也为高电平。
第2行指令“LOOP:MOV P1,P3”的含义是将P3端口8个寄存器中的数据送到P1端口的8个寄存器中。
“LOOP:”为标号,用来标识指令“MOV P1,P3”,由于该标号后面的指令会被调用,所以不能省略。
由于第1行指令已经让P3端口8个寄存器内的数据全部为“1”,执行“MOV P1,P3 ”指令后,P1端口8个寄存器内的数据也全部为“1”,单片机的P1.0~P1.7这8个引脚全部为高电平,故发光二极管VD1~VD4全部不亮。
第 3 行指令“LJMP LOOP”的含义是返回执行标号LOOP所在行的指令。也就是说,当执行到该行指令后,又会返回去执行第2行指令“MOV P1,P3”,即不断将 P3 端口 8 个寄存器中的数据送到P1端口的8个寄存器中。
第4行指令“END”的含义是程序结束。由于执行到第 3 行指令时会自动返回执行第 2行指令,所以无法执行到第4行指令,即程序无法结束。
将上面的汇编语言程序汇编成机器语言程序并写入单片机后,在程序的控制下,单片机内部电路不断将P3端口8个寄存器中的数据送给P1端口的8个寄存器。
图示的单片机应用电路的工作过程分析如下。
在没有按下任何按键时,P3端口8个寄存器的数据都为“1”,所以P1端口8个寄存器的数据也为“1”,P1.0~P1.7这8个引脚都为高电平,发光二极管VD1~VD4全部不亮。
若按下S1按键,P3.2引脚变为低电平,P3.2端口内部寄存器的数据变为“0”,P3.7~P3.0端口的数据分别为11111011,在第2条指令的控制下,这些数据被送到P1端口,P1.7~P1.0端口的数据分别为11111011,其中P1.2端口的数据为“0”,P1.2引脚为低电平,于是它外接的发光二极管VD1有电流通过而发光。
如果松开S1按键,P3.2引脚变为高电平,P3.2端口的“1”送到P1.2端口,P1.2引脚为高电平,其外接的发光二极管VD1截止而不亮。
相关问答
什么是 单片机 十进制?单片机十进制是指十进制数在单片机中的使用。十进制数,N(D)符号集:0~9;规则:逢十进一;十进制数的后缀为D但可省略;十进制数可用加权展开式表示,例...单...
单片机 怎样获取卷帘门遥控器的 编码 ?要获取卷帘门遥控器的编码,单片机需要与遥控器进行通信。通常,卷帘门遥控器会使用红外线(IR)或无线电信号进行通信。下面我将分别介绍两种通信方式:红外线...
单片机 步进电机 编码 是什么意思?这里的编码指的是驱动电机的I/O口状态。比如用P0.0到P0.3四个端口去控制电机的4个线圈(4相),并分别对应线圈A、B、C、D,则P0=0x00时,电机无电,P0=0x01时,A...
单片机 笔形码是什么?单片机笔形码是一种用于表示数字、字母和符号的编码方式。它由一系列宽度不同的笔画组成,每个笔画代表一个特定的字符。单片机笔形码是一种简洁、高效的编码方...
最简单51 单片机 红外 编码 获取问题?对于最简单的51单片机红外编码获取问题,答案是可以的。原因是,在使用51单片机进行红外编码获取时,可以利用红外接收头将红外信号接收到单片机的IO口上,然后通...
单片机 ,硬件,红外遥控 编码 问题。38KHz是干嘛用的?学习型遥控常用的载波频率为38kHz,这是由发射端编码芯片所使用的455kHz晶振来决定的。在信号传输的过程中,并不是将信号直接进行传输,而是将信号负载到一个固...
我可以问个问题么。就是 单片机 的IO口( P0,P1,P2,P3),在进行十六进制 编码 的时候,高四位,低四位是 怎么 看的。比如说P0口,八个引脚,P0.0 -P0.3,P0.4-P0.7对应一个十六进制的数比如0x31,“3”是高四位么,对应P0哪几个引脚呢,这里面有什么对应规则原理? 单片机 C语言8段数码管的 编码 表,请问为什么数字前要加“~”?“~”是按位取反运算,8段数码管有共阴极和共阳极两种,这两种数码管的编码是不同的!你的这个编码表可能是由原来的程序改过来的,所以前面加了“~”运算符。你...
51 单片机 芯片是a几?51单片机芯片是A851单片机是一个泛称,我们将所有兼容Intel8031指令系统的都叫51单片机,所以无论是AT89C51、AT89S52、AT80C51、TS83C25等等,不管他叫什么名.....
51 单片机 红外遥控怎么调试?51单片机红外遥控的调试可以按照以下步骤进行。首先,连接红外接收器模块到51单片机的IO口,确保电源连接正常。接着,编写相应的程序代码,初始化IO口为输入模...