第3章单片机的编程技术 本章学习目标: 曾了解汇编语言的特点,明确程序设计的基本思路 塾熟悉汇编语言的语句结构,能正确书写汇编语言 程序 理解伪指令的功能,能正确使用80C51常用伪指 令 熟悉几种基本的程序结构 能读懂教材中的程序实例,学会编写同等难度的 应用程序 十一五国家级规为教材(高职高专) 高等教育出版社 HIGHER EDUCATION PRESS
本章学习目标 : 了解汇编语言的特点,明确程序设计的基本思路 熟悉汇编语言的语句结构,能正确书写汇编语言 程序 理解伪指令的功能,能正确使用80C51常用伪指 令 熟悉几种基本的程序结构 能读懂教材中的程序实例,学会编写同等难度的 应用程序 第3章 单片机的编程技术
31程序设计的方法和技巧 单片机与一般集成电路的区别在于可编程 应用,程序是单片机应用系统的灵魂。 31.1程序设计流程 由于汇编语言是面向机器的语言,因此对单片 机系统进行程序设计时必须考虑硬件资源的配置。 当硬件系统设计完成后,可从以下几方面进行程序 设计 十一五国家级规为教材(高职高专) 高等教育出版社 HIGHER EDUCATION PRESS
单片机与一般集成电路的区别在于可编程 应用,程序是单片机应用系统的灵魂。 3.1 程序设计的方法和技巧 3.1.1程序设计流程 由于汇编语言是面向机器的语言,因此对单片 机系统进行程序设计时必须考虑硬件资源的配置。 当硬件系统设计完成后,可从以下几方面进行程序 设计:
1.分析问题—针对现有条件,明确在程序设计时应该“做什么” 2.确定算法——一解决“怎样做”的问题 3.绘制程序流程图——用图形的方法描绘解决问题的思路 (常用的程序流程图符号如图3-1所示) 4.分配内存单元—确定程序和数据区的起始地址 5.编写源程序——用指令的形式将程序流程图实现出来 6.汇编—用开发机或仿真器将源程序转换成机器码,便于单片机识 别 7.在线仿真调试——查错、改错,对程序进行优化。 十一五国家级规为教材(高职高专) 高等教育出版社 HIGHER EDUCATION PRESS
➢ 1. 分析问题——针对现有条件,明确在程序设计时应该“做什么” ➢ 2. 确定算法——解决“怎样做”的问题 ➢ 3. 绘制程序流程图——用图形的方法描绘解决问题的思路 (常用的程序流程图符号如图3-1所示) ➢ 4. 分配内存单元——确定程序和数据区的起始地址 ➢ 5. 编写源程序——用指令的形式将程序流程图实现出来 ➢ 6. 汇编——用开发机或仿真器将源程序转换成机器码,便于单片机识 别 ➢ 7. 在线仿真调试——查错、改错,对程序进行优化
常用的程序流程图符号如图3-1所示。 开始或结束符号 工作任务符号 判断分支符号 程序连接符号 程序流向符号 程序流向符号 图3-1常用的程序流程图符号 十一五国家级规为教材(高职高专) 高等教育出版社 HIGHER EDUCATION PRESS
常用的程序流程图符号如图3-1所示。 图3-1 常用的程序流程图符号
3.1.2汇编语言编程技巧 尽量采用模块化程序设计方法; 这种设计方法是把一个完整的程序分成若干个功能相 对独立的、较小的程序模块,对各个程序模块分别进行设 计、编制程序和调试,最后把各个调试好的程序模块装配 起来进行联调,最终成为一个有实用价值的程序。 模块化程序设计的优点是:对单个程序模块设计和调 试比较方便、容易完成,一个模块可以被多个任务共用。 尽量采用循环结构和子程序结构; 采用循环结构和子程序结构,可以使程序的总容量减 小,提高程序的效率,节省内存 十一五国家级规为教材(高职高专) 高等教育出版社 HIGHER EDUCATION PRESS
3.1.2 汇编语言编程技巧 ➢尽量采用模块化程序设计方法 ; 这种设计方法是把一个完整的程序分成若干个功能相 对独立的、较小的程序模块,对各个程序模块分别进行设 计、编制程序和调试,最后把各个调试好的程序模块装配 起来进行联调,最终成为一个有实用价值的程序。 模块化程序设计的优点是:对单个程序模块设计和调 试比较方便、容易完成,一个模块可以被多个任务共用。 ➢尽量采用循环结构和子程序结构 ; 采用循环结构和子程序结构,可以使程序的总容量减 小,提高程序的效率,节省内存
尽量少用无条件转移指令; 少用无条件转移指令,可以保证程序的条理更加清晰,从而减少错 误发生。 充分利用累加器; 累加器是主程序和子程序之间信息传递的桥梁,利用累加器传递入 口参数或返回参数比较方便。这时,一般不要把累加器内容压入堆栈。 对于通用子程序要保护现场; 由于子程序的通用性,除了保护子程序入口参数的寄存器内容外, 还要对子程序中用到的其它寄存器内容一并入栈保护。 对于中断处理,还要保护程序状态字 在中断处理程序中,既要保护处理程序中用到的寄存器内容,还要 保护程序状态字PSW。否则,当中断服务程序执行结束返回主程序时, 整个程序的执行可能会被打乱。 十一五国家级规为教材(高职高专) 高等教育出版社 HIGHER EDUCATION PRESS
➢尽量少用无条件转移指令 ; 少用无条件转移指令,可以保证程序的条理更加清晰,从而减少错 误发生。 ➢充分利用累加器; 累加器是主程序和子程序之间信息传递的桥梁,利用累加器传递入 口参数或返回参数比较方便。这时,一般不要把累加器内容压入堆栈。 ➢对于通用子程序要保护现场; 由于子程序的通用性,除了保护子程序入口参数的寄存器内容外, 还要对子程序中用到的其它寄存器内容一并入栈保护。 ➢对于中断处理,还要保护程序状态字 在中断处理程序中,既要保护处理程序中用到的寄存器内容,还要 保护程序状态字PSW。否则,当中断服务程序执行结束返回主程序时, 整个程序的执行可能会被打乱
3.1.3汇编语言的语句格式 80c51单片机汇编语言的语句行由4个字段 组成,汇编程序能对这种格式正确地进行识别 这4个字段的格式为: [标号:]操作码[操作数][;注释] 括号内的部分可根据实际情况取舍,各字段 之间要用分隔符分隔。可用作分隔符的符号有冒 号、空格、逗号、分号等。如: MAIN: Mov A, #68H: A<68H 十一五国家级规为教材(高职高专) 高等教育出版社 HIGHER EDUCATION PRESS
80C51单片机汇编语言的语句行由4个字段 组成,汇编程序能对这种格式正确地进行识别。 这4个字段的格式为: [标号:] 操作码 [操作数] [;注释] 括号内的部分可根据实际情况取舍,各字段 之间要用分隔符分隔。可用作分隔符的符号有冒 号、空格、逗号、分号等。如: MAIN:MOV A,#68H ;A←68H 3.1.3汇编语言的语句格式
1.标号 标号是指令的符号地址。有了标号,程序中的其它语 句才能很方便地访问该语句。有关标号的规定为 >标号要由18个ASC码字符组成,但必须以字母开 头,其余字符可以是字母、数字或其它特定字符。 不能使用汇编语言已经定义了的符号作为标号,如指令 助记符MOV、伪指令记忆符END以及寄存器的符号名 称R1等。 标号后边必须跟冒号。 同一标号在一个程序中只能定义一次,不能重复定义。 十一五国家级规为教材(高职高专) 高等教育出版社 HIGHER EDUCATION PRESS
1.标号 标号是指令的符号地址。有了标号,程序中的其它语 句才能很方便地访问该语句。有关标号的规定为: ➢标号要由1~8个ASCII码字符组成,但必须以字母开 头,其余字符可以是字母、数字或其它特定字符。 ➢不能使用汇编语言已经定义了的符号作为标号,如指令 助记符MOV、伪指令记忆符END以及寄存器的符号名 称R1等。 ➢标号后边必须跟冒号。 ➢同一标号在一个程序中只能定义一次,不能重复定义
2.操作码 操作码用于规定语句执行的操作。它用指令助记符或伪 指令助记符表示,是汇编语句中唯一不能空缺的部分。 3.操作数 操作数用于给指令的操作提供数据或地址。在一条语句 中,可能没有操作数,也可能只有1个操作数,还可能同时 包含2~3个操作数。各操作数之间要以逗号分隔。操作数 般以下面几种形式出现: ◆常数 ◆工作寄存器名 ◆特殊功能寄存器名 十一五国家级规为教材(高职高专) 高等教育出版社 HIGHER EDUCATION PRESS
2.操作码 操作码用于规定语句执行的操作。它用指令助记符或伪 指令助记符表示,是汇编语句中唯一不能空缺的部分。 3.操作数 操作数用于给指令的操作提供数据或地址。在一条语句 中,可能没有操作数,也可能只有1个操作数,还可能同时 包含2~3个操作数。各操作数之间要以逗号分隔。操作数一 般以下面几种形式出现: ◆常数 ◆工作寄存器名 ◆特殊功能寄存器名
◆标号名 ◆符号“$”,表示程序计数器PC的当前值。如: SJMP ◆表达式 4.注释 注释不属于语句的功能部分,它只是对语句的解释说 明,只要用“;”开头,就表明以下为注释内容。使用注释 可使程序文件的编制显得更加清楚,便于编程人员的阅读和 维护。注释的长度不限,一行不够可以换行接着书写,但换 行后仍要以“;”开头。 一五”固家级规划材(高职高专) 高等教育出版社 HIGHER EDUCATION PRESS
◆标号名 ◆符号“$”,表示程序计数器PC的当前值。如: SJMP $ ◆表达式 4.注释 注释不属于语句的功能部分,它只是对语句的解释说 明,只要用“ ; ”开头,就表明以下为注释内容。使用注释 可使程序文件的编制显得更加清楚,便于编程人员的阅读和 维护。注释的长度不限,一行不够可以换行接着书写,但换 行后仍要以“ ; ”开头