单片机第三章讲稿.ppt
《单片机第三章讲稿.ppt》由会员分享,可在线阅读,更多相关《单片机第三章讲稿.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机第三章第一页,讲稿共四十八页哦教学目标掌握汇编语言程序基本结构。掌握程序设计的步骤和方法。学会具体程序的应用。第二页,讲稿共四十八页哦 程序设计的过程大致可以分为以下几个步骤:(1)编制说明要解决问题的程序框图。(2)确定数据结构、算法、工作单元、变量设定。(3)根据所用计算机的指令系统,按照已编制的程序框图,用汇编语言编制出源程序。(4)将编制出的程序在计算机上调试,直至实现预定的功能。第三页,讲稿共四十八页哦4.1 三种基本程序结构:(1)顺序程序顺序程序是指按顺序依次执行的程序,也称为简单顺序程序是指按顺序依次执行的程序,也称为简单程序或直线程序。程序或直线程序。顺序程序结构虽然比
2、较简单,但也能完成一定的功能任务,是构成复杂程序的基础。第四页,讲稿共四十八页哦【例例4-1/3-27】已知16位二进制负数存放在R1、R0中,试求其补码,并将结果存放在R3、R2中。分析:分析:负数的求补负数的求补:“求反加求反加1”,符号位不变。,符号位不变。利用CPL指令实现求反;加1时,则应低8位先加1,高8位再加上低位的进位。注意注意:不能用不能用INC指令指令。第五页,讲稿共四十八页哦步骤:步骤:(1)低八位送累加器(低八位送累加器(CPL操作八位数字只能在累加器中进操作八位数字只能在累加器中进行);行);(2)低八位取反,加)低八位取反,加1;(3)存低八位处理结果;)存低八位处
3、理结果;(4)高八位送累加器;)高八位送累加器;(5)高八位取反,加标志位并将符号位置)高八位取反,加标志位并将符号位置1;(6)保存高八位处理结果。)保存高八位处理结果。第六页,讲稿共四十八页哦程序如下:CONT:MOV A,R0 ;读低8位 CPL A ;取反 ADD A,#1 ;加1 MOV R2,A ;存低8位 MOV A,R1 ;读高8位 CPL A ;取反 ADDC A,#80H;加进位及符号位 MOV R3,A ;存高8位 RET ;返回第七页,讲稿共四十八页哦【例例3-28/4-2】将两个半字节数合并成一个1字节数。设内部RAM的40H、41H单元中分别存放着8位二进制数110
4、1 1001B、10110110B。要求取出两个单元中的低半字节,合并成一个字节后,存放在42H单元中。第八页,讲稿共四十八页哦要求:设内部RAM的40H、41H单元中分别存放着8位二进制数。要求取出两个单元中的低半字节,合并成一个字节后,存放在42H单元中。步骤:(1)取40H里面的数字放入累加器;(2)高四位清零;(3)高低位互换;(4)保存;(5)取41H里面的数字放入累加器;(6)高四位清零;(7)拼字;(8)保存。第九页,讲稿共四十八页哦程序如下:ORG 0000HSTART:MOV R1,#40H MOV A,R1 ANL A,#0FH ;取第一个半字节 SWAPA INC R1
5、XCH A,R1 ;取第二字节取第二字节 ANLA,#0FH ;取第二个半字节 ORL A,R1 ;拼字 INC R1 MOV R1,A ;存放结果 SJMP$END第十页,讲稿共四十八页哦【例例3-29/4-3】拆字程序。40H里面一个8位 二进制数拆成两个半字节数字,分别送入41H 42H中。步骤(1)40H数字送累加器;(2)备份;(3)高四位清零;(4)保存低四位;(5)取数字;(6)低四位清零;(7)高地位互换;(8)保存高四位。第十一页,讲稿共四十八页哦ORG 0000HSTART:MOV R1,#40H MOV A,R1 MOV B,A ;暂存B中 ANL A,#0FH ;取第一
6、个半字节 INC R1 MOV R1,A ;存放第一个半字节 MOV A,B SWAP A ANL A,#0FH ;取第二个半字节 INC R1 MOV R1,A ;存放第二个半字节 SJMP$END第十二页,讲稿共四十八页哦4.1.2 分支程序分支程序比顺序程序的结构复杂得多,其主要特点是程序的流向有两个或两个以上的出口,根据指定的条件进行选择确定。编程的关键是如何确定供判断或选择的条件以及选择合理的分支指令。第十三页,讲稿共四十八页哦【例例3-30/4-4】求单字节有符号二进制数的补码。分析:正数的补码是其本身,负数的补码是其反码加1。因此,程序首先判断被转换数的符号首先判断被转换数的符号
7、,负数进行转换,正负数进行转换,正数即为补码。数即为补码。步骤:步骤:(1)判断正负,正则跳到正数对应的子程序,负数)判断正负,正则跳到正数对应的子程序,负数则往下执行;(则往下执行;(2)假设是负数,取反;)假设是负数,取反;(3)加)加1;(;(4)符号位置)符号位置1,负数处理程序结束;(,负数处理程序结束;(5)正数处理子程序。正数处理子程序。第十四页,讲稿共四十八页哦设二进制数放在累加器A中,其补码放回到A中。程序如下:ORG 0000H CMPT:JNB ACC.7,NCH ;(A)0,不需转换 CPL A ADD A,#1 SETBACC.7 ;保存符号 NCH:SJMP$END
8、 第十五页,讲稿共四十八页哦【例例3-31/4-5】两个无符号数比较大小。设两个连续外部外部RAM单元ST1和ST2中存放不带符号的二进制数,找出其中的大数存入ST3单元中。第十六页,讲稿共四十八页哦设两个连续外部外部RAM单元ST1和ST2中存放不带符号的二进制数,找出其中的大数存入ST3单元中。分析:减法运算的操作数必须在内部数据存储器中,所以ST1和ST2中的数据首先要存入内部数据存储器,再通过减法运算判断大小步骤(1)取第一个数并保存;(2)取第二个数到累加器A;(3)第二个数减第一个数(4)如果发生借位(CY=1),则第一个存入ST3,否则第二个数第十七页,讲稿共四十八页哦程序如下:
9、ORG 8000H ST1 EQU 8040H START1:CLRC ;进位位清零 MOV DPTR,#ST1;设数据指针 MOVXA,DPTR ;取第一个数 MOV R2,A ;暂存R2 INC DPTR MOVXA,DTPR ;取第二个数 SUBBA,R2 ;两数比较 JNC BIG1 XCH A,R2 ;第一个数大BIG0:INC DPTR MOVXDPTR,A ;存大数 SJMP$BIG1:MOVX A,DPTR;第二个数大 SJMP BIG0 END 第十八页,讲稿共四十八页哦4.1.3 循环程序只有简单程序和分支程序简单程序和分支程序是不够的。因为简单程序和分支程序的特点是,每一
10、条指令至多执行一次。的特点是,每一条指令至多执行一次。在处理实际事务时,有时会遇到多次重复处理的问题,用循环程序的方法来解决就比较合适。循环程序中的某些指令可以反复执行多次。采用循环程序,可使程序缩短,从而节省存采用循环程序,可使程序缩短,从而节省存储单元。储单元。重复次数越多,循环程序的优越性就越明显。第十九页,讲稿共四十八页哦1.单循环程序第二十页,讲稿共四十八页哦【例例4-6/3-31】多个单字节数据求和。已知有10个单字节数据,依次存放在以内部RAM的50H单元开始的连续单元中。要求把计算结果存入R2、R3中(高位存R2,低位存R3)。思路:R2、R3、CY首先清零,依次将10个数据跟
11、R3中数据相加(结果存在R3),每次加法完成后,如果CY=1,则R2加1.第二十一页,讲稿共四十八页哦解:程序如下:ORG 8000HSAD:MOV R0,#50H ;设数据指针 MOV R5,#0AH;计数值0AHR5SAD1:MOV R2,#0 ;和的高8位清零 MOV R3,#0 ;和的低8位清零LOOP:MOV A,R3 ;取加数 ADD A,R0 MOV R3,A ;存和的低8位 JNC LOP1 INC R2 ;有进位,和的高8位+1LOP1:INC R0 ;指向下一个数据地址 DJNZ R5,LOOP SJMP$END 第二十二页,讲稿共四十八页哦【例例4-7/3-33】内部RA
12、M单元清零。要求:将60H为起点的9个单元清“0”。解:程序如下:ORG 0000HCLEAR:CLR A ;A清0 MOV R0,#60H ;确定清0单元起始地址 MOV R6,#09 ;确定要清除的单元个数LOOP:MOV R0,A ;清单元 INC R0 ;指向下一个单元 DJNZ R6,LOOP ;控制循环 SJMP$END第二十三页,讲稿共四十八页哦【例例4-8】外部RAM单元清零。要求:设有40个外部RAM单元要清“0”,即为循环次数存放在R2寄存器中,其首地址存放在DPTR中,设为3000H。解:方法一:程序如下:ORG0000HMOVDPTR,#3000HCLEAR:CLRAM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 第三 讲稿
限制150内