当前位置:文档之家› 51系列单片机程序的设计说明

51系列单片机程序的设计说明


4.1 汇编语言程序设计概述
4. 2 基本程序结构
基本程序结构
1、顺序结构程序 2、分支结构程序 3、循环结构程序 4、子程序 5、中断程序
4. 2 基本程序结构
4.2.1 顺序结构
顺序结构是各类程序中最简单的,也是最基本的 程序结构。顺序结构程序的特征是整个程序段没有 任何转移指令。主要由数据传递类指令和数据运算 类指令组成,通常用于执行数据传送和较为简单的 算术或逻辑运算任务。
说明:该伪指令的作用是通知汇编程序,从指定的地址单元开 始(通常由标号指定首地址),保留由操作数(常数或表达 式)规定的字节空间。
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令
7、位地址赋值伪指令BIT 格式:字符名称 BIT 位地址 说明:该伪指令给字符名称赋予位地址(片内RAM和SFR中的
在编写程序过程中,如果遇到在
几个程序段中都需要执行某段相
子程序
同程序的情况(功能独立),为
调用
减少编程工作量和节省程序存储 断点
空间,就应该采用子程序结构,
将重复执行的相同程序段编写成
为一个子程序(功能子程序)。
返回
4. 2 基本程序结构
4.2.3 子程序结构
MAIN: ……
;进入主程序
MOV R0,#03H ;设置入口参数(延时1)
ORG 0030H MAIN: SETB IT0
SETB EX0 SETB EA HERE: AJMP HERE
;主程序实际入口,边沿触发设置 ;外部中断0允许 ;总中断允许
;等待再次进入中断服务程序
4. 2 基本程序结构
4.2.5 中断程序结构
中断服务子程序:
ORG 1200H
EXTR:PUSH PSW ;保护现场
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令
3、数据地址赋值伪指令DATA 格式:字符名称 DATA 操作数
说明:DATA伪指令的功能与EQU伪指令相似,不同 之处在于DATA伪指令所定义的字符名称可先使用后 定义(赋值),也可先定义(赋值)后使用。在程 序中它常用来定义(赋值)数据地址。
;###################################
SUBPRO:MOV R1,#03H
DJNZ R1,$
DJNZ R0,SUBPRO
RET
;子程序返回
END
4. 2 基本程序结构
4.2.5 中断程序结构
单片机中断程序设计主要有以下三个方面: 1、中断向量设置 2、中断初始化 3、中断服务程序
4.1 汇编语言程序设计概述
4.1.1 汇编语言的特点及语句格式
2、汇编语言的语句格式 MCS-51系列单片机汇编语言的语句格式如下: [<标号>]:<操作码> [<操作数>];[<注释>]
◇ [<标号>] —— 标号是汇编语句地址的符号表示。 ◇ <操作码> ——用于规定该语句所执行的操作。 ◇ [<操作数>] —— 操作数为汇编指令的操作提供数据或地址 ◇ [<注释>] ——注释是指对一条汇编语句或一段汇编语言程序
单片机原理与接口技术
第四章 MCS-51系列单片机程序设计
2010/5/18
4.1 汇编语言程序设计概述
计算机是仿照人的思维方式顺序执行一条条指令来完成特定 任务的机器,计算机程序因此被定义为指令或语句的“有序 集合”,程序设计是指编写计算机程序的过程。
汇编语言是用指令助记符等表示的计算机指令,采用汇编语 言编写的程序被称为汇编语言程序。汇编语言程序具有代码 效率高(编译后的指令代码占用存储空间小)和执行时间短 等优势和特点。
MOV A,40H
CJNE A,41H,LOOP ;取2个数进行比较
LOOP: JNC LOOP1
;根据CY值,判断单分支出
MOV A,41H
;41H单元中是大数
LOOP1: MOV 30H,A
;40H单元中是大数
RET
4. 2 基本程序结构
4.2.2 分支结构
2、多分支选择结构
当程序的判别部分有两个以上的出口(分叉)时, 称为多分支选择结构。
ACALL SUBPRO ;调用子程序
……
;子程序返回,继续执行主程序
;###################################
;子程序入口地址(子程序名称):SUBPRO
;功能:延时子程序(延时时间由R0初值设置)
;入口参数:R0内存放延时计数初值
;出口参数:无
;使用寄存器:R0、R1
4. 2 基本程序结构
4.2.1 顺序结构
例4-1,将内部 RAM 中 20H 单元和 30H 单元的无符号数 相加,存入R0(高位)和R1(低位)中。源程序如下:
MOV A,20H ;取出被加数
ADD A,30H ;两数相加
MOV R1,A ;低位存入R1
CLR A

ADDC A,#00H ;取进位标志
的说明,以增加汇编语言程序的可读性。
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令
1、起始地址定位伪指令ORG 格式:[标号]:ORG 操作数
说明:其功能是指出紧接其后的指令的目标代码的 第一个字节在程序存储器中的绝对地址。例如:
ORG 0030H
START:MOV A,#33H
...... 即定义标号START表示的起始地址值为0030H,该
由于单片机的存储器等资源有限,单片机应用程序中经常需 要面对硬件操作,且对程序执行的时间有较为严格的要求或 限制。因此,汇编语言程序设计是单片机应用系统设计的重 要基础之一。
4.1 汇编语言程序设计概述
4.1.1 汇编语言的特点及语句格式
1、汇编语言的特点: 汇编语言的特点归纳如下:
◇ 助记符指令与机器指令一一对应; ◇ 程序代码效率高,占用存储空间小,运行速度快, 汇编语言程序往往是最优化的程序; ◇ 助记符指令(汇编指令)与计算机硬件联系紧密, 要求编程人员对计算机硬件较为熟悉; ◇ 汇编语言程序缺乏通用性,移植性较差。
;若X< 10,转LOOP2
CJNE A,#100,LOOP1;与100比较
LOOP1: JNC LOOP3
;若X>100,转LOOP3
MOV 40H,#00H ;因10≤X<100,故Y=0
SJMP EXIT
LOOP2: DEC A
;因X<10,故Y=X一1
MOV 40H,A
SJMP EXIT
LOOP3: INC A
4. 2 基本程序结构
4.2.3 循环结构
2.循环程序设计 在一个循环程序的循环体中不包含另外的循环结构称为单重 循环。 例4-5,设某字符串以回车符(0DH)为结束标志,并存放在 内部RAM40H单元开始的连续存储单元之中,编写测试字符 串长度的汇编语言程序。 编程思路 —— 为测试字符串(0DH)的长度,应使用逐 个字符依次与回车符(ODH)比较的方法。为此需要设一个字 符串指针和一个长度计数器,字符串指针用于指定字符,长 度计数器用于累加字符串的长度。如比较不相等,则长度计 数器和字符串指针都加1,以继续往下比较;如果比较相等, 则表示该字符为回车符,字符串结束,长度计数器的值就是 字符串的长度。
例4-4,设变量X的值存放在内部RAM的30H单元中, 编程求解下列函数式,将求得的函数值Y存人40H单 元。
X+1 (X≥100)
Y=
0 (10≤X<100)
X一1 (X<10)
4. 2 基本程序结构
MOV A,30H
;取自变量X值
CJNE A,#10,LOOP ;与10比较,A中值不又称循环体,是重复执行的数据处理程序段, 它是循环程序的核心部分(功能主体)。
4. 2 基本程序结构
4.2.3 循环结构
(3)循环控制部分 控制部分控制循环继续与否。
(4)结束部分 结束部分对循环程序全部执行结束后的结果进行
分析、处理和保存。
循环结构程序一般分为“单重循环”和“多重循 环”两类,循环次数的控制有多种方式,当循环次 数已知时,可采用循环次数计数器控制循环;若循 环次数未知时,可按条件满足与否控制循环。
CPL A
;累加器A数据取反
MOV P1,A ;数据输出至P1端口
POP PSW ;恢复现场
RETI
;中断返回
4.3 汇编语言程序设计实践
汇编语言程序设计的一般步骤如下:
◇ 建立数学模型 —— 用适用的数学方法描述所需要解决的问 题;
◇ 确定算法 —— 将数学模型转化为适合单片机处理(顺序执 行)的形式,采用绘制程序流程图等方法表示程序设计的思 路和依据。
MOV R0,A ;高位存入R0
RET
4. 2 基本程序结构
4.2.2 分支结构
分支结构程序利用条件转移指令,使程序在执行 某一指令后(产生测试条件),根据所规定的条件 满足与否改变其后程序执行的顺序(产生分叉), 即根据判断条件的成立与否来确定程序的走向。分 支结构程序的特征是程序段中有控制转移类指令 (条件转移指令)。
4. 2 基本程序结构 4.2.5 中断程序结构 例4-7,设89C51单片机外中断0(EX0)下降沿有效,每次进
入中断服务程序,要求将89C51单片机的P1.7~P1.0取反。
主程序如下:
ORG 0000H
STAR:AJMP MAIN
ORG 0003H
AJMP EXTR 口地址
;主程序原始入口 ;外部中断0中断向量 ;跳转到EX0中断服务子程序实际入
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令
相关主题