51系列单片机程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ACALL SUBPRO ;调用子程序
……
;子程序返回,继续执行主程序
;###################################
;子程序入口地址(子程序名称):SUBPRO
;功能:延时子程序(延时时间由R0初值设置)
;入口参数:R0内存放延时计数初值
;出口参数:无
;使用寄存器:R0、R1
的说明,以增加汇编语言程序的可读性。
.
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令
1、起始地址定位伪指令ORG 格式:[标号]:ORG 操作数
说明:其功能是指出紧接其后的指令的目标代码的 第一个字节在程序存储器中的绝对地址。例如: ORG 0030H START:MOV A,#33H ...... 即定义标号START表示的起始地址值为0030H,该 段程序的指令代码从该地址开始顺序存放。
单片机原理与接口技术
第四章 MCS-51系列单片机程序设计
2010/5/18
.
4.1 汇编语言程序设计概述
计算机是仿照人的思维方式顺序执行一条条指令来完成特定 任务的机器,计算机程序因此被定义为指令或语句的“有序 集合”,程序设计是指编写计算机程序的过程。
汇编语言是用指令助记符等表示的计算机指令,采用汇编语 言编写的程序被称为汇编语言程序。汇编语言程序具有代码 效率高(编译后的指令代码占用存储空间小)和执行时间短 等优势和特点。
.
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令
4、字节数据赋值伪指令DB 格式:[标号:] DB数据表(字节) 说明:该伪指令用于定义(赋值)若干字节数据表
(固定常数),并存放在指定地址单元开始的程序 存储器中。 例如:
ORG 0050H TABLE:DB 99H,88H
即表示在地址0050H(标号TABLE)开始定义(赋 值)两个字节数据(99H,88H)。
例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中值不改变
LOOP: JC LOOP2
字符依次与回车符(ODH)比较的方法。为此需要设一个字符
串指针和一个长度计数器,字符串指针用于指定字符,长度
计数器用于累加字符串的长度。如比较不相等,则长度计数
器和字符串指针都加1,以继续往下比较;如果比较相等,则
表示该字符为回车符,字符串结束,长度计数器的值就是字
符串的长度。
.
4. 2 基本程序结构
.
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令
5、双字节数据赋值伪指令DW 格式:[标号:] DW数据表(双字节) 说明:该伪指令与DB伪指令的不同之处在于DW定义(赋值)
的是双字节数据,而DB定义(赋值)的是单字节数据。高8 位数据安排在低地址单元,低8位数据安排在高地址单元。 6、预留空间定义伪指令DS 格式:[标号:] DS 操作数 说明:该伪指令的作用是通知汇编程序,从指定的地址单元开 始(通常由标号指定首地址),保留由操作数(常数或表达 式)规定的字节空间。
依据程序分叉的数目,可将分支结构程序细分为 单分支选择结构和多分支选择结构两类。
.
4. 2 基本程序结构
4.2.2 分支结构
1、单分支选择结构
当程序的判断仅有两个出口(分叉),即两者选一时,称为 单分支结构。通常用条件判断指令来选择并确定程序的出口。
例4-3.设内部RAM 40H和41H单元中存放2个8位无符号二进制 数,试编程找出其中的大数存人30H单元中。源程序如下:
序到此结束。在一个汇编程序中,只允许出现一条END伪指 令,且必须安排在整个源程序的末尾处。
.
4.1 汇编语言程序设计概述
4. 2 基本程序结构
基本程序结构
1、顺序结构程序 2、分支结构程序 3、循环结构程序 4、子程序 5、中断程序
.
4. 2 基本程序结构
4.2.1 顺序结构
顺序结构是各类程序中最简单的,也是最基本的 程序结构。顺序结构程序的特征是整个程序段没有 任何转移指令。主要由数据传递类指令和数据运算 类指令组成,通常用于执行数据传送和较为简单的 算术或逻辑运算任务。
.
4. 2 基本程序结构
4.2.5 中断程序结构
例4-7,设89C51单片机外中断0(EX0)下降沿有效,每次进入 中断服务程序,要求将89C51单片机的P1.7~P1.0取反。
主程序如下:
ORG 0000H
STAR:AJMP MAIN ;主程序原始入口
ORG 0003H ;外部中断0中断向量
AJMP EXTR ;跳转到EX0中断服务子程序实际入 口地址
循环处理部分又称循环体,是重复执行的数据处理程序段, 它是循环程序的核心部分(功能主体)。
.
4. 2 基本程序结构
4.2.3 循环结构
(3)循环控制部分 控制部分控制循环继续与否。
(4)结束部分
结束部分对循环程序全部执行结束后的结果进行 分析、处理和保存。
循环结构程序一般分为“单重循环”和“多重循 环”两类,循环次数的控制有多种方式,当循环次 数已知时,可采用循环次数计数器控制循环;若循 环次数未知时,可按条件满足与否控制循环。
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、多分支选择结构
当程序的判别部分有两个以上的出口(分叉)时, 称为多分支选择结构。
.
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令
2、赋值伪指令EQU 格式:字符名称 EQU 操作数
说明:该指令用于字符名称赋值。在同一个源 程序中,任何一个字符名称只能赋值一次。且 一旦赋值之后,整个源程序中该字符的值就固 定不变了。例如: ADPORT EQU 1001H 即给字符名称ADPORT 赋值16进制数1001H。
.
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令
7、位地址赋值伪指令BIT 格式:字符名称 BIT 位地址 说明:该伪指令给字符名称赋予位地址(片内RAM和SFR中的
位地址),常用于位操作程序中。例如:
FLAG BIT 20H 即将位地址20H赋予字符名称FLAG。 8、定义汇编结束伪指令END 格式:[标号:]END 说明:汇编结束伪指令END的作用是通知汇编程序,汇编源程
CPL A
;累加器A数据取反
MOV P1,A ;数据输出至P1端口
POP PSW ;恢复现场
RETI
;中断返回
.
4.3 汇编语言程序设计实践
汇编语言程序设计的一般步骤如下: ◇ 建立数学模型 —— 用适用的数学方法描述所需要解决的问题 ◇ 确定算法 —— 将数学模型转化为适合单片机处理(顺序执行
的形式,采用绘制程序流程图等方法表示程序设计的思路和 依据。 ◇ 编写源程序 —— 采用模块化设计方法,合理划分功能模块, 分配存储器和I/O端口(依据硬件电路)等资源,确定各模块 内各程序段的结构,编写源程序文件。 ◇ 汇编及调试 —— 在集成开发环境的支持下,汇编语言源程序 经汇Baidu Nhomakorabea生成目标程序文件,并通过调试以及对运行结果的分 析,修正源程序中的错误,达到预期的设计目标。
.
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令
3、数据地址赋值伪指令DATA 格式:字符名称 DATA 操作数 说明:DATA伪指令的功能与EQU伪指令相似,不同之
处在于DATA伪指令所定义的字符名称可先使用后定 义(赋值),也可先定义(赋值)后使用。在程序 中它常用来定义(赋值)数据地址。
由于单片机的存储器等资源有限,单片机应用程序中经常需 要面对硬件操作,且对程序执行的时间有较为严格的要求或 限制。因此,汇编语言程序设计是单片机应用系统设计的重 要基础之一。
.
4.1 汇编语言程序设计概述
4.1.1 汇编语言的特点及语句格式
1、汇编语言的特点: 汇编语言的特点归纳如下:
◇ 助记符指令与机器指令一一对应; ◇ 程序代码效率高,占用存储空间小,运行速度快, 汇编语言程序往往是最优化的程序; ◇ 助记符指令(汇编指令)与计算机硬件联系紧密, 要求编程人员对计算机硬件较为熟悉; ◇ 汇编语言程序缺乏通用性,移植性较差。
.
4. 2 基本程序结构
4.2.3 循环结构
2.循环程序设计
在一个循环程序的循环体中不包含另外的循环结构称为单重
循环。
例4-5,设某字符串以回车符(0DH)为结束标志,并存放在
内部RAM40H单元开始的连续存储单元之中,编写测试字符
串长度的汇编语言程序。
编程思路 —— 为测试字符串(0DH)的长度,应使用逐个
;若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
;###################################
SUBPRO:MOV R1,#03H
DJNZ R1,$
DJNZ R0,SUBPRO
RET
;子程序返回
END
.
4. 2 基本程序结构
4.2.5 中断程序结构
单片机中断程序设计主要有以下三个方面: 1、中断向量设置 2、中断初始化 3、中断服务程序
;若X>100,故Y=X+1
MOV 40H, A
EXIT: RET
.
4. 2 基本程序结构
4.2.3 循环结构
在程序设计中,遇到一段程序需要多次重复执行的情况, 通常应该采用循环结构程序。 1、循环结构程序组成
循环结构程序由初始化、循环处理、循环控制和循环结束 4部分组成。 (1)初始化部分
初始化部分设置循环处理之前的初始状态,如循环次数、 变量初值、地址指针初值等。 (2)循环处理部分
几个程序段中都需要执行某段相
子程序
同程序的情况(功能独立),为
调用
减少编程工作量和节省程序存储 断点
空间,就应该采用子程序结构,
将重复执行的相同程序段编写成
为一个子程序(功能子程序)。
返回
.
4. 2 基本程序结构
4.2.3 子程序结构
MAIN: ……
;进入主程序
MOV R0,#03H ;设置入口参数(延时1)
.
4.1 汇编语言程序设计概述
4.1.1 汇编语言的特点及语句格式
2、汇编语言的语句格式 MCS-51系列单片机汇编语言的语句格式如下: [<标号>]:<操作码> [<操作数>];[<注释>]
◇ [<标号>] —— 标号是汇编语句地址的符号表示。 ◇ <操作码> ——用于规定该语句所执行的操作。 ◇ [<操作数>] —— 操作数为汇编指令的操作提供数据或地址 ◇ [<注释>] ——注释是指对一条汇编语句或一段汇编语言程序
ORG 0030H MAIN: SETB IT0 ;主程序实际入口,边沿触发设置
SETB EX0
;外部中断0允许
SETB EA
;总中断允许
HERE: AJMP HERE ;等. 待再次进入中断服务程序
4. 2 基本程序结构
4.2.5 中断程序结构
中断服务子程序:
ORG 1200H
EXTR:PUSH PSW ;保护现场
.
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.2.3 循环结构 2.循环程序设计
◇ 程序如下: MOV R7,#0FFH ;设长度计数器初值 MOV R0,#3FH ;字符串指针 初值
LOOP:INC R7 INC R0 CJNE @R0,#ODH,LOOP RET
.
4. 2 基本程序结构
4.2.4 子程序结构
主程序
在编写程序过程中,如果遇到在
MOV R0,A ;高位存入R0
RET
.
4. 2 基本程序结构
4.2.2 分支结构
分支结构程序利用条件转移指令,使程序在执行 某一指令后(产生测试条件),根据所规定的条件 满足与否改变其后程序执行的顺序(产生分叉), 即根据判断条件的成立与否来确定程序的走向。分 支结构程序的特征是程序段中有控制转移类指令 (条件转移指令)。
相关文档
最新文档