单片机原理及应用教案第5章_单片机原理教案第1章

2020-02-27 教案模板 下载本文

单片机原理及应用教案第5章由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“单片机原理教案第1章”。

第5课

教学内容:

2.4.8 MCS-51单片机指令的时序 第3章 汇编语言程序设计 3.1基本知识

3.2分支程序设计实例分析

3.3循环程序设计实例分析

教学目标:

了解:MCS-51单片机指令时序;程序设计方法;汇编语言格式及汇编方法

掌握:分支程序设计要点,先分支后赋值程序设计,先赋值后分支程序设计;循环程序设计要点,实例2程序设计方案。

课时安排:课时

教学重点:

分支和循环程序设计方法

教学提示:

一、重点内容与要点分析

(一)MCS-51单片机指令的时序

执行指令的最小时间单元是机器周期。每个机器周期由12个时钟周期构成,分为6个S状态。一般每个机器周期中ALE和/PSEN信号有效两次。指令长度有单字节、双字节、三字节三种情况。执行指令的时间有单周期、双周期、四周期三种情况。单字节指令的执行时间有单周期、双周期、四周期三种情况;双字节指令的执行时间有单周期、双周期两种情况;三字节指令的执行时间都为双周期。具体指令的长度和执指时间见附录。

(二)汇编语言程序设计

掌握:分支程序设计、循环程序设计、子程序设计。1.画出清晰的程序流程图

一般地,开发者都是首先对自己开发的项目进行仔细地分析了解,在心里有个大概的框架后就开始编程序。但是程序是很难一步到位的,当需要改变一点小小的漏洞或者是要加入一个新的功能时,编程者往往显得不知所措,不知从何下手,重新整理自己的思路而耗费大量的时间。因此最好在进行编程前画出整个项目的流程图,这样自己分析和解决问题的过程一目了然,而且要尽量详细具体,重要的地方应作上标记,便于以后作修改时能很快明白自己的思路。总之在编程过程中,有了流程图,就有了自己的主线,即使以后需要作大的变动,根据在流程图中的标记和说明,可以轻松地解决问题,以免在焦头烂额之际,思路不清晰而陷入困境。2.变量定义的直观性

大家肯定听说过Windows编程中的匈牙利命名法,它突出的特点就是变量名称的直观性,从变量的名称就能知道该变量的基本含义和用途,这样方便自己和别人理解程序,提高效率。其实在汇编程序中也可以实现,使用伪指令EQU和BIT即可。EQU用于定义字节常量,此变量可以代表地址,也可以代表立即数,只是使用时要注意如果是立即数的话,必须要在变量名称前面加上#号。还要注意在以字母开始的变量值前面加上0,如FFH应写成0FFH,否则会报错。BIT用于定义位变量。请看下面这段程序: SPEED_1 EQU 10H SPEED_2 EQU 20H SPEED_3 EQU 30H COUNT_H EQU 8DH COUNT_L EQU 10H ALARM_1 BIT 83H ALARM_2 BIT 84H ALARM_3 BIT 85H 一看就知道上面变量的基本含义,SPEED肯定和速度有关,COUNT和计数有关,ALARM和报警有关。当使用MOV A,SPEED_1时,SPEED_1是地址变量,即将10H地址单元中的数据送到寄存器A中。MOV A,#SPEED_1语句中,SPEED_1代表立即数,因为它前面有#号,即将立即数10H送到寄存器A中。注意:字符串变量的长度不能太长,一般宜在12个英文字母左右,否则编译会出错。

这样做还有一个好处是修改特别方便,当程序需要变动存储单元时,不用在每个使用此变量的地方轮流去修改,而只要在变量表中将相应的地址更改即可,如:如果以后需要加上一个存储单元而占用10H,将10H地址变成别的地址数值,假设为11H,按照一般的写法需要在程序中将地址10H逐个换成11H,特别麻烦。如果建立变量表的话,只需将该字符串变量对应的地址值改变即可,因为应用程序中使用的是字符串变量。例如,如果在程序中使用了10个MOV A,10H赋值语句,如果没有使用变量表,需要将10个10H地址值变成11H,如果是使用了变量表,只需将字符串变量对应的地址值由10H变成11H即可。

3.间接寻址的使用

一般提到间接寻址大家首先会想到DPTR,这是个16位的外部RAM地址寄存器。但是我要说的是内部的RAM地址寄存器,51系列单片机中8052单片机内部有256字节的RAM,我们可以用直接寻址访问其中00H-7FH字节单元,而80H-FFH范围内的内部RAM地址和特殊功能寄存器的地址空间是重叠的,因此51规定对于特殊功能寄存器的访问只能用直接寻址方式,而对于80H-FFH范围内的内部RAM地址只能用间接寻址,一般使用的指令是: MOVX @Ri,A 和MOVX A,@Ri

例如将内部RAM地址81H的数据送到寄存器A,程序如下:

MOV R0,#81H MOVX A,@R0

将寄存器A的数据送到内部RAM地址81H,程序如下: MOV R0,#81H MOVX @R0,A 4.中断现场的保护

在使用多种中断方式后,这个问题尤其显得重要,因为如果有一个寄存器的数据没有保护好,那么付出的调试代价是巨大的,这点大家肯定有体会。如果内部RAM变量不多的话,可以将堆栈大小尽量设大些,而且最好在每次进入中断的时候都进行压栈,主要针对寄存器A、B、C、PSW。注意在退出中断时执行退栈指令。还有就是注意堆栈的大小防止溢出。

5.返回指令的使用

其实这个问题应该是不值得提的,但是在初学者中这个问题还是比较普遍的。RET指令是子程序返回指令,但是好多人把它当成一个万能的回转指令,其功能是完成从堆栈中取出以前压入的16位地址送入PC,从而完成子程序的返回。但是有些人总是使用RET指令返回到自己预想的地方,这样造成的后果是致命的。

二、教学方式

在课堂讲授教学内容后,留20分钟,学生作报告。课堂讲授为主,结合电子CAI课件和教学网站,提供教学效果。

三、作业

1.结合实例2回答以下问题:

(1)冒泡程序结束后为什么A中内容与任何数据单元都不同?(2)ORG 0100H的作用?为什么说是伪指令?

(3)分支程序中 X=-1时,写入 #FFH → A→31H,但最后31H单元中内容为什么不是-1?

2.试将实例2参考程序改为能使64个数从大到小顺序排列,并说明改动理由。3.试编写能将存放在片外RAM的100个数进行从小到大顺序排列的双循环程序,并加以必要说明。

4.讨论 在实例2中

(1)在1轮冒泡比较循环中,R0的最小值是多少?最大值又是多少?(2)在第10轮冒泡比较循环中,R0的最小值是多少?最大值又是多少?(3)在最后1轮冒泡比较循环中,R0的最小值是多少?最大值又是多少?

5.冒泡法排序程序,如果改变数组长度为7,数据从40单元开始存放,如何修改程序? 6.编写程序,把累加器中的8位无符号二进制数转换成为(两个字节)BCD码。百位数存入HUND变量单元,十位数和个位数存入相邻的变量单元TENONE中。这段子程序的入口地址以符号BINBCD表示。

《单片机原理及应用》课程教案

《单片机原理及应用》课程教案第三次课 2学时 主要内容: 第二部分 单片机的原理与结构(3) 2.5 并行I/O端口 2.6 时钟电路与时序 2.7 复位操作和复位电路 重点: P0~P3端口......

激光原理教案第5章

长 春 理 工 大 学教案用纸《激光原理技术及应用》讲义(第5章 典型激光器)王 菲长春理工大学2007年5月No:长 春 理 工 大 学教案用纸 第五章 典型激光器(2学时)§1.气体激光器一......

单片机原理及应用课程设计

智能电子钟(LCD显示)1、设计内容及要求...............................................................................................2 1.1、设计内容......................

《单片机原理及应用》课程

《单片机原理及应用》课程自评报告陕西理工学院电气工程系《单片机原理及应用》课程组 二○一○年三月目 录第一部分 课程简介第二部分课程内容与体系的改革 第三部分 实验......

《单片机原理及应用》实验报告

实验一:单片机开发装置使用方法(小2号,加粗)一、实验目的(3号,加粗) 内容(楷体,4号,不加粗)字符和数字用Times new Roman二、实验内容三、实验步骤四、实验结果五、实验分析六、实验总......

《单片机原理及应用教案第5章.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
单片机原理及应用教案第5章
点击下载文档
相关专题 单片机原理教案第1章 单片机 教案 原理 单片机原理教案第1章 单片机 教案 原理
[教案模板]相关推荐
[教案模板]热门文章
下载全文