单片机课件51.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《单片机课件51.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课件 51
- 资源描述:
-
1、第第4 4章章 汇编语言程序设计汇编语言程序设计 80C5180C51汇编语言语句结构的基本格式汇编语言语句结构的基本格式 伪指令的功能和应用伪指令的功能和应用 汇编的概念汇编的概念 程序设计的步骤和基本方法程序设计的步骤和基本方法 顺序程序顺序程序 分支程序分支程序 循环程序循环程序 查表程序查表程序 散转程序散转程序本章要点本章要点标号:操作码标号:操作码 目的操作数,源操作数目的操作数,源操作数 ;注释;注释4-1 4-1 汇编语言程序设计基本概念汇编语言程序设计基本概念4.1.1 4.1.1 汇编语言及其语句结构汇编语言及其语句结构汇编语言程序设计中的数汇编语言程序设计中的数计算机只能
2、识别二进制数计算机只能识别二进制数机器指令,它原本是机器指令,它原本是不认识常用的十六进制数和十进制数的。不认识常用的十六进制数和十进制数的。机器指令机器指令/ /目标代码:目标代码: 由由0/10/1代码组成的操作码与操作数。代码组成的操作码与操作数。BCDBCD码:用二进制数表达的十进制数。码:用二进制数表达的十进制数。 (0 09 9表示为表示为:0000:00001001B 1001B 后缀后缀:B/b,H/h:B/b,H/h)二进制数:由二进制数:由0/10/1组成、组成、“逢逢2 2进进1”1”的数制。的数制。 如:如:01011110B 01011110B (0 01 1 后缀:
3、后缀:B/bB/b)十六进制数:便于读写记忆的二进制数的简写形式。十六进制数:便于读写记忆的二进制数的简写形式。 (0 09 9,A AF F 后缀:后缀:H/hH/h)汇编语言编程基本规则汇编语言编程基本规则汇编语言汇编语言: :用助记符描述的指令的集合。用助记符描述的指令的集合。指令中以指令中以 A AF F 开头的十六进制数前必须添一个开头的十六进制数前必须添一个 “0”0”。二进制数必须带后缀二进制数必须带后缀“B”B”或或“b”b”;十六进制数;十六进制数必须带后缀必须带后缀“H”H”或或“h”h”;十进制数的后缀是;十进制数的后缀是“D”D”或或“d”d”或无或无. . 标号标号:
4、操作码操作码 目的操作数目的操作数,源操作数源操作数;注释注释 汇编程序汇编程序: :汇编语言编写的程序借助编译工具汇编语言编写的程序借助编译工具编译成为目标代码编译成为目标代码, ,计算机才能识别。这个编译工具计算机才能识别。这个编译工具称为汇编程序。称为汇编程序。4.1.2 4.1.2 伪指令伪指令 在汇编时起控制作用,自身在汇编时起控制作用,自身并不产生并不产生机器码,而机器码,而仅是为汇编服务的一些指令,称为仅是为汇编服务的一些指令,称为伪指令伪指令。伪指令不属。伪指令不属于于8080C51C51指令系统。指令系统。 常用的伪指令有以下几种:常用的伪指令有以下几种: 起始伪指令起始伪指
5、令 ORG(OriginORG(Origin) ) 功能:规定功能:规定ORGORG下面目标程序的起始地址下面目标程序的起始地址。格式:格式:ORG 16ORG 16位位地址地址 ORG 0100H ORG 0100H START START:MOV AMOV A,#05H#05H ADD A ADD A,#08H#08H MOV 20H MOV 20H,A A ORG 0100H ORG 0100H表示该伪指令下面第一条指令的起始地址表示该伪指令下面第一条指令的起始地址是是0100H0100H,即,即MOV AMOV A,#05H#05H指令的第一个字节地址为指令的第一个字节地址为0100H
6、0100H,或标号或标号STARTSTART代表的地址为代表的地址为01000100H H。功能:将一个数据或特定的汇编符号赋予规定功能:将一个数据或特定的汇编符号赋予规定 的字符名称。的字符名称。 结束伪指令结束伪指令 ENDEND功能:汇编语言源程序的结束标志。功能:汇编语言源程序的结束标志。 在在ENDEND后面的指令,汇编程序不再处理后面的指令,汇编程序不再处理。格式:格式:ENDEND 等值伪指令等值伪指令 EQUEQU(EquateEquate)格式:格式:字符名称字符名称 EQUEQU 数据或汇编符号数据或汇编符号例如:例如: PP EQU R0 PP EQU R0 ;PP=R0
7、PP=R0 MOV A MOV A,PP PP ;A R0A R0 这里将这里将PPPP等值为汇编符号等值为汇编符号R0R0,在指令中,在指令中PPPP就可以代替就可以代替R0R0来使用。来使用。 数据地址赋值伪指令数据地址赋值伪指令 DATADATA格式:格式:字符名称字符名称 DATADATA 表达式表达式功能:将数据地址或代码地址赋予规定的功能:将数据地址或代码地址赋予规定的 字符名称。字符名称。 定义字节伪指令定义字节伪指令DBDB(Define ByteDefine Byte)格式:格式:DB 8DB 8位二进制数表位二进制数表功能:从指定的地址单元开始,定义若干功能:从指定的地址单
8、元开始,定义若干 个个8 8位内存单元的数据。位内存单元的数据。 数据与数据之间用数据与数据之间用“,”分割。分割。例如:例如: ORG 4000HORG 4000H TAB TAB: DB 73HDB 73H,4545,“A”A”,“2”2” TAB1 TAB1:DB 101BDB 101B 以上指令经汇编后,将对以上指令经汇编后,将对4000H4000H开始的若干内存单开始的若干内存单元赋值。元赋值。 (4000H)=73H(4000H)=73H,(4001H)(4001H):2DH(2DH(注:注:4545的的1616进制数进制数) ), 格式:格式:字符名称字符名称 BITBIT 位地
9、址位地址 定义字伪指令定义字伪指令DWDW(Define WordDefine Word)格式:格式:DW 16DW 16位二进制数表位二进制数表功能:从指定的地址单元开始,定义功能:从指定的地址单元开始,定义 若干个若干个1616位数据。位数据。 定义位地址伪指令定义位地址伪指令BITBIT功能:将位地址赋予所规定的字符名称。功能:将位地址赋予所规定的字符名称。 AQ AQ BIT P0.0 BIT P0.0 DEF BIT 30H DEF BIT 30H 把把P0P00 0的位地址赋给字符的位地址赋给字符AQAQ,把位地址,把位地址30H30H赋给字赋给字符符DEFDEF。在其后的编程中,
10、。在其后的编程中,AQAQ可作可作P0.0P0.0使用,使用,DEFDEF可作可作位地址位地址30H30H使用。使用。三三. .汇编汇编 将汇编语言源程序转换为计算机所能识将汇编语言源程序转换为计算机所能识别的机器语言代码程序的过程称为汇编。别的机器语言代码程序的过程称为汇编。 汇编可分为:汇编可分为: 手工汇编手工汇编 计算机汇编计算机汇编【例【例4-14-1】对下段程序进行手工汇编。】对下段程序进行手工汇编。 汇编和调试汇编和调试四四. . 程序设计的基本方法程序设计的基本方法编写程序要求:编写程序要求: 不仅要完成规定的功能任务,而且还要求:不仅要完成规定的功能任务,而且还要求: 执行速
11、度快执行速度快、占用内存少占用内存少、条理清晰条理清晰、 阅读方便阅读方便、便于移植便于移植、巧妙而实用巧妙而实用。 一般应按以下几个步骤进行:一般应按以下几个步骤进行: 分析问题,确定算法或解题思路分析问题,确定算法或解题思路 画流程图画流程图 编写源程序编写源程序 流程图符号和说明流程图符号和说明: : 顺序程序是指按顺序依次执行的程序,也顺序程序是指按顺序依次执行的程序,也称为简单程序或直线程序。称为简单程序或直线程序。 顺序程序结构虽然比较简单,但也能完成顺序程序结构虽然比较简单,但也能完成一定的功能任务,是构成复杂程序的基础。一定的功能任务,是构成复杂程序的基础。 第二节第二节 汇编
12、语言程序设计举例汇编语言程序设计举例一一. . 顺序程序顺序程序CONT: MOVCONT: MOV A,R0 A,R0; ;读低读低8 8位位CPLCPL A A; ;取反取反ADDADD A,#1 A,#1; ;加加1 1MOVMOV R2,A R2,A; ;存低存低8 8位位MOVMOV A,R1 A,R1; ;读高读高8 8位位CPLCPL A A; ;取反取反ADDCADDC A,#80H A,#80H; ;加进位及符号位加进位及符号位MOV R3,AMOV R3,A; ;存高存高8 8位位RETRET; ;【例【例4-2】 已知已知1616位二进制负数存放在位二进制负数存放在R1R
13、0R1R0中,中, 试求其补码,并将结果存在试求其补码,并将结果存在R3R2R3R2中。中。解:二进制负数的求补方法可归结为解:二进制负数的求补方法可归结为“求反加求反加1”1”,符号,符号位不变。利用位不变。利用CPLCPL指令实现求反;加指令实现求反;加1 1时,则应低时,则应低8 8位先加位先加1 1,高高8 8位再加上低位的进位。注意这里不能用位再加上低位的进位。注意这里不能用INCINC指令,因为指令,因为INCINC指令不影响标志指令不影响标志位。位。程序如下:程序如下: ORG 2000HORG 2000HBCD2BBCD2B:MOV AMOV A, R2 ;R2 ;取入口数据取
14、入口数据 ANL AANL A, #0F0H ;#0F0H ;取出十位取出十位 SWAP A ;SWAP A ;高高4 4位位 低低4 4位位 MOV BMOV B, #0AH#0AH MUL AB ; MUL AB ;十位乘十位乘1010 MOV R3 MOV R3,A ;A ;积暂存进积暂存进R3R3 MOV A MOV A, R2 ;R2 ;再取入口数据再取入口数据 ANL AANL A, #0FH ;#0FH ;取出个位取出个位 ADD AADD A, R3R3 MOV R2 MOV R2,A ;A ;结果结果 R2R2 RET ; RET ;若不是子程序可用若不是子程序可用END E
15、ND 例例: :将将R2R2中中BCDBCD码数转为二进制数存进码数转为二进制数存进R2R2。(此子程序在下一例中还要用到)(此子程序在下一例中还要用到) 根据不同条件转向不同的处理程序,根据不同条件转向不同的处理程序,这种结构的程序称为分支程序。这种结构的程序称为分支程序。 8080C51C51指令系统中的指令系统中的条件转移指令条件转移指令、比较转移指令比较转移指令和和位转移指令位转移指令,可以实现分,可以实现分支程序。支程序。二二. .分支程序分支程序【例【例4 45 5】 已知已知X X、Y Y均为均为8 8位二进制有符号数,位二进制有符号数,分别存在分别存在30H30H31H31H中
16、,试编制能实现下列符号函中,试编制能实现下列符号函数的程序:数的程序:实现程序如下实现程序如下: :【例【例4 46 6】将】将ASCIIASCII码转换为十六进制数。设码转换为十六进制数。设ASCIIASCII码放在累加器码放在累加器A A中,转换结果放到中,转换结果放到B B中。中。 解:由解:由ASCIIASCII码表码表( (表表1-4)1-4)可知,可知,30H30H39H39H为为0 09 9的的ASCIIASCII码,码,41H41H46H46H为为A AF F的的ASCIIASCII码。将码。将ASCIIASCII码减码减30H(030H(09)9)或或37H(A37H(AF)
17、F)就可获得对应的就可获得对应的十六进制数。程序如下:十六进制数。程序如下: S0S0单独按下,单独按下, 红灯亮红灯亮, ,其余灯其余灯灭;灭; S1 S1单独按下,单独按下, 绿灯亮绿灯亮, ,其余其余灯灯灭;灭; 其余情况,其余情况, 黄灯亮。黄灯亮。【例【例4.8】已知电路如图】已知电路如图4-54-5所示,要求实现:所示,要求实现:解:程序如下解:程序如下SGNL:ANL P1,#11100011BSGNL:ANL P1,#11100011B; ;红绿黄灯灭红绿黄灯灭 ORL P1,#00000011BORL P1,#00000011B; ;置置P1.0P1.0、P1.1P1.1输入
18、态输入态, , P1.5P1.5P1.7P1.7状态不变状态不变SL0: JNB P1.0,SL1SL0: JNB P1.0,SL1 ;P1.0=0,S0;P1.0=0,S0未按下未按下, ,转判转判S1S1 JNB P1.1,RED JNB P1.1,RED ;P1.0=1,S0;P1.0=1,S0按下按下; ;且且P1.1=0,S1P1.1=0,S1未按下未按下, ,转红灯亮转红灯亮YELW:SETB P1.4YELW:SETB P1.4 ; ;黄灯亮黄灯亮 CLR P1.2CLR P1.2 ; ;红灯灭红灯灭 CLR P1.3CLR P1.3 ; ;绿灯灭绿灯灭 SJMP SL0SJMP
19、 SL0 ; ;转循环转循环SL1: JNB P1.1,YELWSL1: JNB P1.1,YELW ;P1.0=0,S0;P1.0=0,S0未按下未按下;P1.1=0,S1;P1.1=0,S1未按下未按下, ,转黄灯亮转黄灯亮GREN:SETB P1.3GREN:SETB P1.3 ; ;绿灯亮绿灯亮 CLR P1.2CLR P1.2 ; ;红灯灭红灯灭 CLR P1.4CLR P1.4 ; ;黄灯灭黄灯灭 SJMP SL0SJMP SL0 ; ;转循环转循环RED: SETB P1.2RED: SETB P1.2 ; ;红灯亮红灯亮 CLR P1.3CLR P1.3 ; ;绿灯灭绿灯灭 C
20、LR P1.4CLR P1.4 ; ;黄灯灭黄灯灭 SJMP SL0SJMP SL0 ; ;转循环转循环 课堂练习题:课堂练习题: 电路及灯亮灭要求同上述【例】题,其中第电路及灯亮灭要求同上述【例】题,其中第3 3、4 4两条指令两条指令JNB P1.0JNB P1.0和和JNB P1.1JNB P1.1按下列要求修改,按下列要求修改,试重新编程。试重新编程。 JBJBP1.0P1.0,JBJBP1.1P1.1, JBJBP1.0P1.0, JNB P1.1JNB P1.1, JNB P1.0JNB P1.0, JBJBP1.1P1.1, 循环程序一般包括以下几个部分:循环程序一般包括以下几个
21、部分: 循环初值;循环初值; 循环体;循环体; 循环修改;循环修改; 循环控制;循环控制;以上四部分可以有两种组织形式,以上四部分可以有两种组织形式,其结构如其结构如图图4-64-6所所示。示。 三三. . 循环程序循环程序【例【例4.10】设设XiXi均为单字节数,并按顺序存放在以均为单字节数,并按顺序存放在以50H50H为首地址的内为首地址的内RAMRAM存储单元中,数据长度(个数)存储单元中,数据长度(个数)N N存存在在R2R2中,试编程求和中,试编程求和S=XS=X1 1+X+X2 2+X+XN N,并将,并将S S(双字(双字节)存放在节)存放在R3R4R3R4中,(设中,(设S
22、S6553665536)。)。解:程序如下:解:程序如下: SXN: MOV R2,#NSXN: MOV R2,#N ;置数据长度置数据长度( (循环次数循环次数) ) MOV R3,#00H MOV R3,#00H ;和单元和单元( (高高8 8位位) )清清0 0 MOV R4,#00H MOV R4,#00H ;和单元和单元( (低低8 8位位) )清清0 0 MOV R0,#50H MOV R0,#50H ;求和数据区首址求和数据区首址LOOP:MOV A,R4LOOP:MOV A,R4 ;读前次低读前次低8 8位和位和 ADD A,R0ADD A,R0 ;低低8 8位累加位累加 MO
23、V R4,AMOV R4,A ;存低存低8 8位和位和 CLR A CLR A ; ADDC A,R3 ADDC A,R3 ;高高8 8位加进位位加进位 MOV R3,A MOV R3,A ;存高存高8 8位和位和 INC R0 INC R0 ;指向下一数据指向下一数据 循环修改循环修改 DJNZ R2,LOOP DJNZ R2,LOOP ;判判N N个数据累加完否?个数据累加完否? 循环控制循环控制 RET RET ;退出循环退出循环 退出循环退出循环 置置循循环环初初值值循循环环体体【例【例4 41111】 设在内设在内RAM 40HRAM 40H开始的存储区有若干个字符开始的存储区有若干
24、个字符和数字,已知最后一个为字符和数字,已知最后一个为字符“$”($”(并且只有惟一一个并且只有惟一一个) ),试统计这些字符和数字的个数,统计结果存人试统计这些字符和数字的个数,统计结果存人30H30H单元。单元。 解:程序如下:解:程序如下:【例【例4 41212】 内部内部RAM 20HRAM 20H单元开始存有单元开始存有8 8个数,个数,试找出其中最大的数,送入试找出其中最大的数,送入MAXMAX单元。单元。 解:程序如下:解:程序如下: ORG 1000HORG 1000HDELAYDELAY:MOV R6MOV R6,#200 ; 1Tm#200 ; 1TmLOOP1: MOV
25、R7LOOP1: MOV R7,#248 ; #248 ; 1Tm1Tm NOP ; NOP ; 1Tm1TmLOOP2: DJNZ R7LOOP2: DJNZ R7,LOOP2 ; LOOP2 ; 2Tm2Tm DJNZ R6 DJNZ R6,LOOP1 ; LOOP1 ; 2Tm2Tm RET ; 1Tm RET ; 1Tm补充例补充例: :软件循环延时软件循环延时100mS(100mS(晶振晶振12MHz)12MHz) 1Tm =1uS 100mS = 100000 uS 1Tm =1uS 100mS = 100000 uS MOV RnMOV Rn #data #data 和和 NOP
展开阅读全文