单片机技术应用实训 教学课件 ppt 作者 李晓艳 2

上传人:E**** 文档编号:89492027 上传时间:2019-05-25 格式:PPT 页数:39 大小:1.24MB
返回 下载 相关 举报
单片机技术应用实训 教学课件 ppt 作者 李晓艳 2_第1页
第1页 / 共39页
单片机技术应用实训 教学课件 ppt 作者 李晓艳 2_第2页
第2页 / 共39页
单片机技术应用实训 教学课件 ppt 作者 李晓艳 2_第3页
第3页 / 共39页
单片机技术应用实训 教学课件 ppt 作者 李晓艳 2_第4页
第4页 / 共39页
单片机技术应用实训 教学课件 ppt 作者 李晓艳 2_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《单片机技术应用实训 教学课件 ppt 作者 李晓艳 2》由会员分享,可在线阅读,更多相关《单片机技术应用实训 教学课件 ppt 作者 李晓艳 2(39页珍藏版)》请在金锄头文库上搜索。

1、,1,1,第2章 51系列单片机软件实训,主讲人:李晓艳,时 间:2011年11月,第2章 51系列单片机软件实训,2.1 分支程序设计,2.1.1 分支程序基础知识,分支程序的特点是程序中有转移指令。由于转移指令有无条件转移和有条件转移之分,因此分支程序也可分为无条件分支程序和有条件分支程序两类,无条件分支程序中含有无条件转移指令,比较简单。条件分支程序体现了计算机执行程序时的分析判断能力:若某条件满足,则机器就转移到另一个分支上执行程序;若条件不满足,则机器就按源程序继续执行。,51系列单片机,条件转移指令共有13条,分为累加器A判零转移指令,比较不相等转移指令,减1不为零转移指令和位控制

2、转移指令4类。因此,汇编语言源程序的分支程序设计实际上就是如何运用这13条转移指令进行编程的问题。,2.1 分支程序设计,2.1.2 分支程序实验,1实验目的,2.1 分支程序设计,2实验内容与原理,(1)实验内容,已知R0低4位有一个十六进制数(0F中的一个),请编程把它转换成相应ASCII码并送入30H。,(2)实验原理,ASCII码(American Standard Code Information Interchange)是美国信息交换标准代码的简称,诞生于1963年,广泛应用于微型计算机中。ASCII码采用一个字节的低7位进行编码,共可表示128个字符。由常用ASCII码(见表2-

3、1)可知,09的ASCII码为30H39H,即十进制与ASCII码二者相差30H;AF的ASCII码为41H46H,即十进制与ASCII码二者相差37H,所以本实验中,若R09,则R0内容只需加30H;若R09,则R0内容需加37H,分支程序流程图如图2-1所示。,2.1 分支程序设计,2.1 分支程序设计,图2-1 分支程序流程图,2.1 分支程序设计,3实验仪器与器件,装有Keil Vision2软件的计算机一台。,2.1 分支程序设计,4实验步骤,-运行Keil Vision2软件,新建一个工程,新建一个文件。将文件加到工程中并编译,如有错,请更改直到编译成功,单击“Debug”菜单,单

4、击“Start/Stop Debug Session”(或者使用快捷键Ctrl+F5)进入调试模式,进行调试。,在存储器窗口中输入D:30H,然后单步执行,查看30H,31H单元值的变化情况。,第一步,第二步,第三步,2.1 分支程序设计,5参考程序,ORG 0000H CLR C MOV R0,#16H MOV A,R0 ANL A,#0FH ;取低4位数 CJNE A,#10,NEXT1 NEXT1:JNC NEXT2 ADD A,#30H ;小于等于9,加30H SJMP DONE NEXT2:ADD A,#37H ;大于9,加37H DONE: MOV 30H,A ;存储结果 SJMP

5、 $ END,2.1 分支程序设计,2.1.3 巩固与拓展练习,已知VAR单元中有一个自变量X,请按如下条件编程求函数值Y,并将它存入FUNC单元,其中VAR代表30H单元,FUNC代表31H单元。,2.2 循环程序设计,2.2.1 循环程序基础知识,2.2 循环程序设计,循环体先循环控制后循环处理,即先判断后处理,循环体先循环处理后循环控制,即先处理后判断,2两种编程方法,2.2 循环程序设计,2.2.2 循环程序实验,1实验目的,2.2 循环程序设计,2实验内容与原理,(1)实验内容,若Xi均为单字节数据,并按i(i=1n)顺序存放在从50H开始的内部RAM单元中,n等于10,现在要求编程

6、求出它们的和(双字节),并放在30H,31H中。,(2)实验原理,本实验要求10个数的和,使用循环程序只需要写一遍加法程序段,然后使其重复10次即可。程序开始时先设初值,设置循环次数计数器,地址指针初值,存放结果的单元初值,然后进入循环体,取数相加,存和,再地址修改,循环判断,判断是否需要继续求和,如需继续,转回到循环体开始,否则结束程序。循环程序流程图图2-2。,2.2 循环程序设计,图2-2 循环程序流程图,2.2 循环程序设计,3实验仪器与器件,装有Keil Vision2软件的计算机一台。,2.2 循环程序设计,4实验步骤,-运行Keil Vision2软件,新建一个工程,新建一个文件

7、。将文件加到工程中并编译,如有错,请更改直到编译成功,单击“Debug”菜单,单击“Start/Stop Debug Session”(或者使用快捷键Ctrl+F5)进入调试模式,进行调试。,在存储器窗口中输入D:30H,然后单步执行,查看30H,31H单元值的变化情况。,第一步,第二步,第三步,2.2 循环程序设计,5参考程序,ORG 0000H MOV 50H,#01H MOV 51H,#02H MOV 52H,#03H MOV 53H,#04H MOV 54H,#05H MOV 55H,#06H MOV 56H,#07H MOV 57H,#08H MOV 58H,#09H MOV 59H

8、,#0AH,ADD1: MOV 30H,#00H ;设置存放结果的单元初值 MOV 31H,#00H MOV R2,#10 ;设置循环计数器初值 MOV R0,#50H ;设置地址指针初值 LOOP: MOV A,31H ADD A,R0 MOV 31H,A ;和的低字节存放在31H INC R0 ;地址指针修改 CLR A ADDC A,30H MOV 30H,A ;高字节存放在30H DJNZ R2,LOOP ;循环判断是否结束 SJMP $ END,2.2 循环程序设计,2.2.3 巩固与拓展练习,已知BLOCK1和BLOCK2为起始地址的存储区中分别有5个字节无符号被减数和减数(低位在

9、前,高位在后),请编写程序令它们相减并把差放入BLOCK1为起始地址的存储单元。(其中BLOCK1代表30H,BLOCK2代表40H单元)。,2.3 查表程序设计,2.3.1 查表程序基础知识,查表是根据存放在存储器中的数据表格的项数来查找和它对应的表中值。 例如:查y=x2(设x=09)的平方表时。可以预先计算出x为09时的y值作为数据表格,存放在起始地址为DTAB的存储器中。并使x的值和数据表格的项数(即所查数据的实际地址对DTAB的偏移量)一一对应,就可以根据DTABx来找到和x对应的y值。,51系列单片机有以下两条专门的查表指令: 1)MOVC A,A+DPTR 2)MOVC A,A+

10、PC,2.3 查表程序设计,1)MOVC A,A+DPTR,把所查表的项数送入到累加器A,用DPTR存放数据表格的起始地址,使用MOVC A,A+DPTR完成查表,1,2,3,2.3 查表程序设计,2)MOVC A,A+PC,使用ADD A,#data指令对累加器A进行修正,使用传送指令把所查数据表格的项数送入累加器A,采用查表指令MOVC A,A+PC完成查表,1,2,3,2.3 查表程序设计,2.3.2 查表程序实验,1实验目的,2.3 查表程序设计,2实验内容与原理,(1)实验内容,已知R0低4位有一个十六进制数(0F),请编程求出其ASCII码并送入30H单元。,(2)实验原理,由AS

11、CII码表可知常用ASCII码09的ASCII码为30H39H,AF的ASCII码为41H46H,.将ASCII码做成表,即可采用查表方式查到对应的ASCII码,查表程序流程图如图2-3所示。,2.3 查表程序设计,图2-3 查表程序流程图,2.3 查表程序设计,3实验仪器与器件,装有Keil Vision2软件的计算机一台。,2.3 查表程序设计,4实验步骤,-运行Keil Vision2软件,新建一个工程,新建一个文件。将文件加到工程中并编译,如有错,请更改直到编译成功,单击“Debug”菜单,单击“Start/Stop Debug Session”(或者使用快捷键Ctrl+F5)进入调试

12、模式,进行调试。,在存储器窗口中输入D:30H,然后单步执行,查看30H,31H单元值的变化情况。,第一步,第二步,第三步,2.3 查表程序设计,5参考程序,ORG 0000H MOV R0,#16H MOV A,R0 ANL A,#0FH MOV DPTR,#ASCTAB MOVC A,A+DPTR MOV 30H,A SJMP $ ASCTAB: DB 1,2,3,4, DB 5,6,7,8,9 DB A,B,C,D,E,F END,2.3 查表程序设计,2.4 子程序设计,2.4.1 子程序基础知识,所谓子程序是指完成确定任务并能为其它程序反复调用的程序段,调用子程序的程序叫做主程序或调

13、用程序。在主程序中只安排程序的主要线索,在需要调用某个子程序时,采用调用指令从主程序转入相应子程序执行,CPU执行到子程序末尾的RET返回指令,返回到主程序断点处继续执行。 子程序常常可以构成子程序库,集中放在某一存储空间,任凭主程序随时调用,这样采用子程序便能使整个程序结构简单。缩短了程序设计时间,减少了对存储空间的占用。,2.4 子程序设计,子程序要完成某一专用任务,在结构上应具有通用性和独立性,在编写子程序时,应注意以下五点:,2.4 子程序设计,2.4.2 子程序实验,2.4 子程序设计,2实验内容与原理,(1)实验内容 设MDA和MDB内有两数a和b,请编出求c=a2+b2 并把c送

14、入MDC的程序,其中a和b皆为小于10的整数,MDA为20H单元,MDB为21H单元,MDC为22H单元。 (2)实验原理 本实验程序由两部分组成:主程序通过累加器A传送子程序的入口参数a和b。子程序通过累加器A传送出口参数a2或b2给主程序,子程序为求平方的通用子程序。,2.4 子程序设计,3实验仪器与器件 装有Keil Vision2软件的计算机一台。,2.4 子程序设计,4实验步骤,-运行Keil Vision2软件,新建一个工程,新建一个文件。将文件加到工程中并编译,如有错,请更改直到编译成功,单击“Debug”菜单,单击“Start/Stop Debug Session”(或者使用快

15、捷键Ctrl+F5)进入调试模式,进行调试。,在存储器窗口中输入D:20H,然后单步执行,查看22H,31H单元值的变化情况。,第一步,第二步,第三步,2.4 子程序设计,5参考程序,ORG 1000H MDA DATA 20H MDB DATA 21H MDC DATA 22H MOV MDA,#05H MOV MDA,#09H MOV A,MDA ACALL SQR ;调用求平方子程序 MOV R1,A MOV A,MDB ACALL SQR ;调用求平方子程序 ADD A,R1 MOV MDC,A SJMP $,SQR: ADD A,#01H ;求平方子程序 MOVC A,A+PC RET SQRTAB: DB 0,1,4,9,16 DB 25,36,49,64,81 END,2.4 子程序设计,2.4.3 巩固与拓展练习,试编写双字节整数BCD码转换成二进制数的程序。(提示:由于(d3d2d1d0)BCD=(d310+d2)100+(d110+d0),其中di10+di-1运算可编写成子程序。),Thank You !,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号