单片机应用技术 (4)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序3:使8个发光二极管顺序点亮。
START:
ORG MOV MOV
0000H R2,#08H A,#0FEH
;设置循环次数 ;送显示模式字
第4章 汇编语言程序设计
NEXT: MOV ACALL RL DJNZ
P1,A DELAY A R2,NEXT
;点亮连接P1.0的发光二极管
;左移一位,改变显示模式字 ;循环次数减1,若不为零,则继续 ;点亮下面一个二极管
第4章 汇编语言程序设计
图4.1 程序1流程图
第4章 汇编语言程序设计
图4.2 程序2流程图
第4章 汇编语言程序设计
程序2的特点是:程序不按照指令的排列顺序执行,而 是根据20H单元中的数据的第7位的状态,分别执行不同的 内容,即程序有两个分支,执行时根据给定的条件选择其 中一个分支。这样的程序结构称为分支结构程序。分支结 构程序的关键问题是如何根据条件选择正确的分支。
SJMP DELAY:MOV DEL2: MOV DEL1: NOP
DJNZ DJNZ
START R3,#0FFH R4,#0FFH
;延时子程序开始
R4,DEL1 R3,DEL2
RET
END
第4章 汇编语言程序设计
4. 实训分析与总结 (1) 程序1的运行结果是:8个发光二极管同时闪动。该 程序的运行过程用流程图表示如图4.1所示。 程序1的执行过程是按照指令的排列顺序逐条执行的。 这种按照指令的排列顺序逐条执行的程序结构称为顺序结构 程序。 (2) 程序2的运行结果是:若内部RAM 20H单元的内容 为00H,则8个发光二极管全部处于点亮状态;若内部RAM 20H单元的内容为80H,则8个发光二极管处于“亮灭亮灭亮 灭亮灭”状态。程序2的流程图如图4.2所示。
DELAY:MOV R3,#7FH
;延时子程序
DEL2: MOV R4,#0FFH
DEL1: NOP
DJNZ R4,DEL1
DJNZ R3,DEL2
RET
END
;汇编程序结束
程序2:用位状态控制发光二极管的显示方式。
ORG MOV
0000H A,20H
;A←(20H),20H单元的内容 ;传送到累加器A
ORG 0000H
;程序从地址0000H开始存放
START: MOV P1,#00H ;把立即数00H送P1口,点亮
;所有发光二极管
ACALL DELAY
;调用延时子程序
MOV P1,#0FFH
;灭掉所有发光二极管
第4章 汇编语言程序设计
ACALL DELAY
;调用延时子程序
AJMP START
;重复闪动
第4章 汇编语言程序设计
(3) 程序3的运行结果是:顺序点亮8个发光二极管。该 程序的流程图如图4.3所示。
程序3的特点是:“点亮—延时—移位”这一程序段重 复执行了8次。重复执行某一程序段的程序结构称为循环结 构程序。该程序的设计过程见例4.6。
关于循环程序结构的详细介绍参见4.4节。
第4章 汇编语言程序设计
图4.3 程序3流程图
第4章 汇编语言程序设计
(4) 在程序1和程序3中都使用了一段相同的延时子程序 DELAY,这种供其它程序反复使用的程序或程序段称为子 程序。关于子程序的详细介绍参见4.6节。
第4章 汇编语言程序设计
5. 思考 (1) 在程序1和程序3中,如果去掉程序中的ACALL DELAY指令,程序运行结果是否有变化,为什么?如果想 改变8个发光二极管的闪动或点亮速度,如何修改程序? (2) 在程序2中,判断累加器A中数据最高位是否为1的 方法有很多,试看下面的指令是否能够实现。 ① JB ACC.7 NEXT ② MOV C,ACC.7
第4章 汇编语言程序设计
(2) 在单片机开发调试环境中,将内部RAM的20H单元内 容修改为00H,运行程序2,观察8个发光二极管的亮灭状态; 重新将内部RAM的20H单元内容修改为80H,再次运行程序2, 观察8个发光二极管的亮灭状态。
(3) 运行程序3,观察8个发光二极管的亮灭状态。 程序1:所有发光二极管不停地闪动。
高级语言(High-Level Language)是在汇编语言的基础上用 自然语言的语句来编写程序的,例如PL/M-51、Franklin C51、 MBASIC 51等。使用高级语言编写的程序可读性强,通用性好, 适用于不熟悉单片机指令系统的的用户。用高级语言编写程序 的缺点是实时性不高,结构不紧凑,编译后占用存储空间比较 大,这一点在存储器有限的单片机应用系统中没有优势。
第4章 汇编语言程序设计
RLC A
JC
NEXT
MOV P1,#00H
;累加器A的内容带CY循环左移, ;CY←ACC.7 ;判断CY是否为1,若是,跳转 ;到NEXT执行 ;否则,CY=0,点亮所有发光 ;二极管
SJMP $ NEXT: MOV P1,#55H ;CY=1,发光二极管交替亮灭
SJMP $ END
第4章 汇编语言程序设计
第4章 汇编语言程序设计
实训4 信号灯的控制2 4.1 概述 4.2 简单程序设计 4.3 分支程序设计 4.4 循环程序设计 4.5 查表程序 4.6 子程序设计与堆栈技术 本章小结 习题4
第4章 汇编语言程序设计
实训4 信号灯的控制2
1. 实训目的 (1) 掌握汇编语言程序的基本结构。 (2) 了解汇编语言程序设计的基本方法和思路。 2. 实训设备与器件 (1) 实训设备:单片机开发系统、微机等。 (2) 实训器件与电路:参见实训1电路图。 3. 实训步骤与要求 (1) 运行程序1,观察8个发光二极管的亮灭状态。
ห้องสมุดไป่ตู้
第4章 汇编语言程序设计
汇编语言(Assembly Language)是指用指令助记符代替机器 码的编程语言。汇编语言程序结构简单,执行速度快,程序易 优化,编译后占用存储空间小,是单片机应用系统开发中最常 用的程序设计语言。汇编语言的缺点是可读性比较差,只有熟 悉单片机指令系统并具有一定的程序设计经验的人员,才能研 制出功能复杂的应用程序。实训4中的3个程序都是用汇编语言 编写的。
JC NEXT
第4章 汇编语言程序设计
4.1 概 述
机器语言(Machine Language)是指直接用机器码编写程 序、能够为计算机直接执行的机器级语言。机器码是一串由 二进制代码“0”和“1”组成的二进制数据,其执行速度快, 但是可读性极差。机器语言一般只在简单的开发装置中使用, 程序的设计、输入、修改和调试都很麻烦。在实训1和实训3 中直接固化或输入的程序都是机器语言程序。
相关文档
最新文档