单片机原理及其应用第五章优秀课件.ppt
《单片机原理及其应用第五章优秀课件.ppt》由会员分享,可在线阅读,更多相关《单片机原理及其应用第五章优秀课件.ppt(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机原理及其应用第五章第1页,本讲稿共53页补充补充汇编语言源程序的格式源程序基本上由主程序、子程序、中断服务子程序组成。编制汇编语言源程序根据MCS-51单片机ROM的出厂内部定义,一般按这样的主框架编制:;程序变量定义区1 SDA BITP1.3;定义SDA位变量 2 IOEQUP0;定义I/O等值P0口3 ByteConDATA30H;定义字节变量ByteCon;程序主体部分4 ORG0000H;程序段从0000H单元开始存放 5 LJMPMAIN;跳到主程MAIN6 ORG0003H;从0003H开始存放程序段7 LJMPINTERUPT1;跳到外部中断0处理子程序第2页,本讲稿共5
2、3页前言前言汇编语言源程序的格式8ORG 0030H ;从0030H开始存放程序段9MAIN:;主程序标号说明10 MOV SP,#30H ;设置堆栈指针,可以大于30H11 LCALLINITIATE ;调用初始化子程12 FCY:;控制程序循环标号LCALLSUB ;调用功能子程序13 LJMP FCY ;跳到FCY构成循环14 ORG xxxx ;以下功能程序的存放地址15 INITIATE:;初始化子程序标号16 RET ;子程序返回17 SUB:;功能子程序标号18 RET ;子程序返回19 INTERUPT1:;外部中断0功能程序20 RETI ;中断返回21 TABLE:;表的标
3、号22 DB 00H,01H ;表的数据 END;源程序结束,停止汇编。第3页,本讲稿共53页前言前言汇编语言源程序的格式第13行:把一些符号或变量定义成通俗的符号。第4、6、8、14行:表示程序存储的开始地址。第5行:使CPU在执行程序时,从0000H跳过各中断源的入口地址,主程序以跳转的目标地址作为起始地址开始编写。第6行:中断服务程序的存储地址。第9、12、15、17、19行:为程序语句标号。第10行:设置堆栈指针一般最小设30H,栈区够用还可以增大。第21、22行:为查表指令的表。第4页,本讲稿共53页5-1 汇编语言概述汇编语言概述一、汇编语言程序设计的一般步骤一、汇编语言程序设计的
4、一般步骤 分析课题分析课题 确定算法确定算法 画流程图画流程图 编写程序编写程序 上机调试上机调试当接到程序设计的任务后,首先对任务进行详尽的分析,搞清楚已知的数据和想要得到的结果,程序应该完成何种的功能。第5页,本讲稿共53页4-4 汇编语言程序设计基础汇编语言程序设计基础一、汇编语言程序设计的一般步骤一、汇编语言程序设计的一般步骤 分析课题分析课题 确定算法确定算法 画流程图画流程图 编写程序编写程序 上机调试上机调试 根据实际问题的要求和指令系统的特点,确定解决问题的具体步骤。根据任务要求,对不同的计算方法进行比较,选择最适宜的算法。第6页,本讲稿共53页4-4 汇编语言程序设计基础汇编
5、语言程序设计基础一、汇编语言程序设计的一般步骤一、汇编语言程序设计的一般步骤 分析课题分析课题 确定算法确定算法 画流程图画流程图 编写程序编写程序 上机调试上机调试将解决问题的具体步骤用一种约定的几何图形、指向线和必要的文字说明描述出来的图形。第7页,本讲稿共53页4-4 汇编语言程序设计基础汇编语言程序设计基础一、汇编语言程序设计的一般步骤一、汇编语言程序设计的一般步骤 分析课题分析课题 确定算法确定算法 画流程图画流程图 编写程序编写程序 上机调试上机调试 经过上述各步骤后,解决问题的思路已经非常清楚,所以接下来就可以按流程图的顺序对每一个功能框选用合适的指令编写出汇编语言程序。第8页,
6、本讲稿共53页4-4 汇编语言程序设计基础汇编语言程序设计基础一、一、汇编语言程序设计的一般步骤汇编语言程序设计的一般步骤 分析课题分析课题 确定算法确定算法 画流程图画流程图 编写程序编写程序 上机调试上机调试在应用程序的设计中,几乎没有一个程序只经过一次编写就完全成功的,所以必须经过上机调试。第9页,本讲稿共53页二、评价程序质量的标准二、评价程序质量的标准 (1)程序的执行时间。程序的执行时间。(2)程序所占用的内存字节数。程序所占用的内存字节数。(3)程序的逻辑性、可读性。程序的逻辑性、可读性。(4)程序的兼容性、可扩展性。程序的兼容性、可扩展性。(5)程序的可靠性。程序的可靠性。第1
7、0页,本讲稿共53页三、汇编程序结构按程序的走向可以将程序分成按程序的走向可以将程序分成5种结构:种结构:简单程序简单程序 分支程序分支程序 循环程序循环程序 查表程序查表程序 子程序子程序第11页,本讲稿共53页简单程序简单程序 简单程序是指一种无分支的顺序执行程序,即CPU从第一条指令开始依次依次执行每一条指令,直到最后一条指令。这种程序虽然比较简单,但也能完成一定的功能,并且往往也是构成复杂程序的基础。拆字程序拼字程序求和程序第12页,本讲稿共53页ORG 1000HMOV A,R0ADD A,R2MOV R0,AMOV A,R1ADDC A,R3MOV R1,AMOV A,#0ADDC
8、 A,#0MOV R2,ASJMP$END求和程序求和程序例:例:设2个16位二进制数分别存于R1R0和R3R2中,求二者的和,并将和存于R2R1R0。解解:分析命题分析命题确定算法确定算法画流程图画流程图编写程序编写程序上机调试上机调试(R0)+(R2)送R0单元;(R1)+(R3)+Cy送R1单元;Cy+0送R2单元开始(R0)+(R2)送R0单元(R1)+(R3)+Cy送R1单元Cy+0送R2单元结束第13页,本讲稿共53页拆字程序拆字程序例:例:将20H单元中存放的一个两位的BCD拆开并转换成ASCII码,然后存入21H 和22H单元。解解:分析命题分析命题确定算法确定算法画流程图画流
9、程图编写程序编写程序上机调试上机调试22H21H20H89H38H39H拆开BCD码,然后分别或#30H即可。ORG 1000HMOV R0,#22HMOV R0,#0MOV A,20H XCHD A,R0ORL 22H,#30HSWAP AORL A,#30HMOV 21H,ASJMP$END开始将22H清零将A、22H中低4位交换将22H内容或#30H累加器A中高低4位交换20H单元的内容送AA与#30H相或后送21H结束第14页,本讲稿共53页拼字程序拼字程序例:例:将30H和31H单元中存放的2个一字节BCD码组合成一个2位的BCD码存入32H单元,31H单元中的数为低4位。解解:分析
10、命题分析命题确定算法确定算法画流程图画流程图编写程序编写程序上机调试上机调试32H31H30H04H07H47H将30H单元的高4与低4交换,再与31H单元相或MOV A,30HSWAP AORL A,31HMOV 32H,ASJMP$开始将30H单元的内容送A将A中高、低4位交换将A中内容与31H单元内容相或将A中内容存入32H单元结束第15页,本讲稿共53页进制转换程序进制转换程序例:例:将内部RAM的20H单元中的8位无符号二进制数转换为3位BCD码,并将结果存放在FIRST(百位)和SECOND(十位、个位)两单元中。解解:分析命题分析命题确定算法确定算法画流程图画流程图编写程序编写程
11、序上机调试上机调试22H21H十位、个位百位先除以100,取出百位;再除以10位,取出十位和个位。FIRST DATA 22HSECOND DATA 21HORG 1000HHBCD:MOV A,20HMOV B,#100DIV ABMOV FIRST,AMOV A,BMOV B,#10DIV ABSWAP AORL A,BMOV SECOND,ASJMP$开始将20H单元的内容送A将A除以100将A中内容存入FIRSTBA,再将A除以10结束将A、B合成后存入SECOND第16页,本讲稿共53页分支程序分支程序分支程序就是条件分支程序,即根据不同的条件执行不同的程序段。在编写分支程序时,关键
12、是如何判断分支的条件。在MCS-51中可以直接用来判断分支条件的指令不是很多,只有累加器为零(或不为零)、比较条件转移指令CJNE等,但它还提供位条件转移指令,如JC,JB等。把这些指令结合在一起使用,就可以完成各种各样的条件判断,如正负判断、溢出判断、大小判断等。分段函数符号函数比较大小第17页,本讲稿共53页例:例:两个无符号数分别存于ONE和TWO单元,试比较它们的大小,将较大者存人MAX单元。若两数相等则任存入一个即可。解解:分析命题分析命题确定算法确定算法画流程图画流程图编写程序编写程序上机调试上机调试比较大小:简单分支程序比较大小:简单分支程序MOVA,ONECJNEA,TWO,N
13、EXT1NEXT1:JCNEXT2MOVMAX,ONESJMP$NEXT2:MOV MAX,TWOSJMP$返回返回开始将ONE单元的内容送A结束ATWO将TWO单元内容送MAX单元YN将ONE单元内容送MAX单元第18页,本讲稿共53页例:例:设变量X存放于VAR单元,函数值Y存放在FUNC单元。试按照下式的要求给Y赋值。解解:Y=分析命题分析命题确定算法确定算法画流程图画流程图编写程序编写程序上机调试上机调试符号函数符号函数VARDATA30HFUNCDATA31HMOVA,VARJZCOMPJNBACC.7,POSIMOVA,#0FFHSJMPCOMPPOSI:MOVA,#1COMP:M
14、OVFUNC,ASJMP$开始将VAR单元的内容送A结束A=0?将0送FUNC单元A 0?将1送FUNC单元将-1送FUNC单元YNYN第19页,本讲稿共53页例:例:设变量X存放于VAR单元,函数值Y存放在FUNC单元。试按照下式的要求给Y赋值。解解:Y=分析命题分析命题确定算法确定算法画流程图画流程图编写程序编写程序上机调试上机调试分段函数分段函数MOVA,VARCJNEA,#10,NEXT1NEXT1:JCNEXT2MOVR0,#1CJNEA,#21,NEXT3NEXT3:JNCNEXT4MOVR0,#0SJMPNEXT4NEXT2:MOVR0,#0FFHNEXT4:MOVFUNC,R0
15、SJMP$开始将VAR单元的内容送A结束A 20?将0送FUNC单元A 1 0?将-1送FUNC单元将1送FUNC单元YYNN第20页,本讲稿共53页多重分支程序设计多重分支程序设计散转法散转法根据某种输入或运算的结果转向各个处理程序称为散转多分支,即散转程序。(1)利用转移指令表实现转移利用转移指令表实现转移将转移到不同程序的转移指令列成表格,判断条件后查表,执行表中的转移指令。【例】【功能】某菜单有9项。根据输入数码转去执行相应的子程序。即输入“1”,执行子程序1;输入“2”,执行子程序2;依次类推。第21页,本讲稿共53页【分析】用直接转移指令组成一个转移表,然后把菜单号读入累加器(A)
16、,转移表首地址放入DPTR中,利用JMPA+DPTR实现散转。【入口参数】(R3)=存输入键盘码19。【出口参数】转移到相应的子程序入口。ORG0030HKEY_JMP:MOVDPTR,#PRGTBL;子程序入口首地址送DPTRMOVA,R3;把键盘输入缓冲区内容送累加器(A)DECA;由于输入数码为19,因此需减1MOVB,#03H第22页,本讲稿共53页MULAB;由于长跳转指令LJMP占用3B,;各子程序入口地址相距3BJMPA+DPTR;根据输入码,执行相应的子程序ORG2000H;程序入口地址表PRGTBL:LJMPNO1LJMPNO2LJMP NO3LJMPNO4LJMPNO5LJ
17、MPNO6LJMP NO7LJMP NO8LJMP NO9END第23页,本讲稿共53页(2)利用转向地址表实现转移利用转向地址表实现转移这种方法将转移地址列成表格,将表格的内容作为转移的目标地址。【例】【功能】根据R3(0n)的内容转向对应的程序;处理程序的入口符号地址分别为PR0PRn(n256)【分析】将PR0PRn入口地址(16位地址)列在表格中,故每一项占两个单元;PRn在表中的偏移量为2n,因此将R3的内容乘“2”即得PRn在表中的偏移地址;从偏移地址2n和2n+1两个单元分别取出PRn的高8位地址和低8位地址送DPTR寄存器,用JMPA+DPTR指令(A先清零)即转移到PRn入口
18、执行。第24页,本讲稿共53页【入口参数】(R3)=0n转移。【出口参数】转移到相应的子程序入口。PR0EQU0110HPR1EQU0220HPR2EQU0330HORG0030HKEY_JMP:MOVDPTR,#TABMOVA,R3ADDA,R3;(A)(R3)*2JNCNADDINCDPH;(R3*2)256第25页,本讲稿共53页NADD:MOVR3,AMOVC A,A+DPTRXCHA,R3;转移地址高8位INCAMOVCA,A+DPTRMOVDPL,A;转移地址低8位MOVDPH,R3CLRAJMPA+DPTRTAB:DWPR0,PR1,PR2,PRnPR0:处理程序0PR1:处理程
19、序1PRn:处理程序nEND第26页,本讲稿共53页(3)利用地址偏移量表实现散转利用地址偏移量表实现散转这种方法将转移目标地址与表首地址差列表,作为转移目标地址。【例】【功能】有5个按键0,1,2,3,4,根据按下的键转向不同的处理程序,分别为PR0,PR1,PR2,PR3,PR4。【分析】汇编时,利用了伪指令的数学计算功能,标首地址加上处理程序与标首地址差即可转到处理程序。【入口参数】(B)=转向程序号(键盘编码)。【出口参数】转移到相应的子程序入口。第27页,本讲稿共53页ORG0030HKEY_JMP:MOVA,BMOVDPTR,#TABMOVCA,A+DPTRJMPA+DPTRTAB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 及其 应用 第五 优秀 课件
限制150内