1、下午12时37分,单片机应用技术,1,任务八 学习、应用位操作指令,1. 位传送指令(2条)MOV C, bit ;(bit)CyMOV bit, C ;(Cy)bit2. 位置位、清零、取反指令(6条)SETB C ; 1Cy CLR bit ; 0bit CPL C ; cySETB bit ; 1bit CLR C ; 0Cy CPL bit ;bit3. 位运算指令(4条)ANL C, bit;(Cy)( bit)CyANL C, /bit;(Cy)CyORL C, bit;(Cy)( bit)CyORL C, /bit;(Cy)Cy,下午12时37分,单片机应用技术,2,4、位控制转
2、移指令(5条)JC re ; 若(Cy)=1,则PC+2+relPC,程序转移执行; 若(Cy)=0,则PC+2PC,程序顺序执行JNC rel ;若(Cy)=0,则PC+2+relPC,程序转移执行; 若(Cy)=1,则PC+2PC,程序顺序执行JB bit, rel ;若(bit)=1,则PC+3+relPC,程序转移执行; 若(bit)=0,则PC+3PC,程序顺序执行JNB bit, rel; 若(bit)=0,则PC+3+relPC,程序转移执行; 若(bit)=1,则PC+3PC,程序顺序执行JBC bit, rel;若(bit)=1,则PC+3+relPC,程序转移执行 且 0b
3、it; 若(bit)=0,则PC+3PC,程序顺序执行,任务八 学习、应用位操作指令,下午12时37分,单片机应用技术,3,【例3-29】试编程实现将内RAM中以BUF开始的一批有符号数,将正数送外RAM的正数区,负数送外RAM的负数区,遇到0中止。(设正数区起点地址是30H,负数区起点地址是60H)源程序: MOV R0, #BUF ; 将数据块的首地址送到R0中 MOV R1, #30H ;将正数的首地址送到R1中 MOV DPTR, #0060H ;将负数的首地址送到DPTR中 MP3: MOV A, R0 ; 将数据读到累加器A中 JNZ MP4 ;判断A中数据不是0 SJMP $ ;
4、 累加器A中数据是0中止 MP4: JB ACC.7 ,MP5 ; 累加器A中数据是负数? MOVX R1, A ;将正数送正数区 INC R0 ;指向数据块的下一个数据 INC R1 ;指向正数区的下一个单元 MP5: MOVX DPTR, A ;将负数送负数区 INC R0 ;指向数据块的下一个数据 INC DPTR ;指向负数区的下一个单元 AJMP MP3 ;返回继续 END,任务八 学习、应用位操作指令,下午12时37分,单片机应用技术,4,任务八 初步掌握MCS51单片机汇编程序设计,认知1 了解单片机伪指令,伪指令又称指示性指令,具有和指令类似的形式,但汇编时伪指令并不产生可执行
5、的目标代码,只是对汇编过程进行某种控制或提供某些汇编信息。 定位伪指令ORG 定义字节数据伪指令DB 定义字数据伪指令DW 定义空间伪指令DS 符号定义伪指令EQU或 数据赋值伪指令DATA 数据地址赋值伪指令XDATA 汇编结束伪指令END,下午12时37分,单片机应用技术,5,1. 定位伪指令ORG格式:标号: ORG 地址表达式功能:规定程序块或数据块存放的起始位置例如:ORG 1000H; MOV A,#20H 存放于1000H开始的单元。表示下面指令MOV A,#20H存放于1000H开始的单元。 说明:程序中可以出现多个ORG指令。2. 定义字节数据伪指令DB格式:标号: DB 字
6、节数据表功能:字节数据表可以是多个字节数据、字符串或表达式,它表示将字节数据表中的数据从左到右依次存放在指定地址单元。例如:ORG 1000H TAB:DB 2BH,0A0H,A,2*4 ;表示从1000H单元开始的地方存放数据2BH,0A0H,41H(字母A的ASCII码),08H。,任务八 初步掌握MCS51单片机汇编程序设计,认知1 了解单片机伪指令,下午12时37分,单片机应用技术,6,任务八 初步掌握MCS51单片机汇编程序设计,认知1 了解单片机伪指令,3. 定义字数据伪指令DW格式:标号: DW 字数据表功能: 与DB类似,但DW定义的数据项为字,包括两个字节,存放时高位在前,低
7、位在后。例如: ORG 1000HDATA:DW 324AH,3CH ; 表示从1000H单元开始的地方存放数据32H,4AH,00H,3CH(3CH以字的形式表示为003CH)。4. 定义空间伪指令DS格式:标号: DS 表达式功能:从指定的地址开始,保留多少个存储单元作为备用空间。例如:ORG 1000HBUF:DS 50TAB:DB 22H ;表示从1000H开始的地方预留50(1000H1031H)个存储字节空间,22H存放在1032H单元。,下午12时37分,单片机应用技术,7,任务八 初步掌握MCS51单片机汇编程序设计,认知1 了解单片机伪指令,5. 符号定义伪指令EQU或=格式
8、:符号名 EQU 表达式符号名=表达式功能:将表达式的值或某个特定汇编符号定义为一个指定的符号名,只能定义单字节数据,并且必须遵循先定义后使用的原则,因此该语句通常放在源程序的开头部分。例如: SUM EQU 21H MOV A,SUM ;执行指令后,累加器A中的值为21H中的数据6. 数据赋值伪指令DATA格式:符号名 DATA 表达式功能:将表达式的值或某个特定汇编符号定义一个指定的符号名,只能定义单字节数据,但可以先使用后定义,因此用它定义数据可以放在程序末尾进行数据定义。举例: MOV A,#LEN LEN DATA 10,下午12时37分,单片机应用技术,8,任务八 初步掌握MCS5
9、1单片机汇编程序设计,认知1 了解单片机伪指令,7. 数据地址赋值伪指令XDATA格式:符号名 XDATA 表达式功能:将表达式的值或某个特定汇编符号定义一个指定的符号名,可以先使用后定义,并且用于双字节数据定义。举例: DELAY XDATA 0356HLCALL DELAY ;执行指令后,程序转到0356H单元执行8. 汇编结束伪指令END格式:标号: END 功能:汇编语言源程序结束标志,用于整个汇编语言程序的末尾处。,下午12时37分,单片机应用技术,9,程序设计概述设计语言,最早人们只能用机器语言(二进制)编写程序; 为了方便记忆,人们开始用助记符形式的汇编语言编写程序,称为低级语言
10、。然后再用汇编系统将其翻译成机器语言,该过程称为汇编;为了用更接近人的语言编写程序,程序设计师们发明了高级语言,如: BASIC、FORTRAN、PASCAL、 C、JAVA 然后再用编译系统将其翻译成机器语言,该过程称为编译; 机器只能识别机器语言。所以必须用编译系统将高级语言编写的源程序编译成机器语言,用汇编系统将用汇编语言编写的源程序汇编成机器语言; 由低级或高级语言构成的程序称为源程序,由机器语言构成的程序称作目标程序;,任务八 初步掌握MCS51单片机汇编程序设计,下午12时37分,单片机应用技术,10,1. 汇编程序设计步骤(1) 分析问题,确定算法(2) 画出程序流程图编写较复杂
11、的程序,画出程序流程图是十分必要的。所谓程序流程图也称为程序框图,是根据控制流程设计的,它直接反映了整个系统以及各个部分之间的相互关系,同时也反映操作顺序,因而有助于分析出错原因。(3) 分配内存工作区及有关端口地址(4) 编制汇编源程序(5) 仿真调试程序(6) 固化程序,1、单片机汇编语言程序设计的基本步骤如下,认知2 掌握汇编语言程序设计与汇编,任务八 初步掌握MCS51单片机汇编程序设计,下午12时37分,单片机应用技术,11,顺序程序:顺序程序是最简单、最基本的程序结构,其特点是按指令的排列顺序一条条地执行,直到全部指令执行完毕为止。分支程序:分支程序是通过转移指令对相应条件的判断实
12、现改变程序的执行方向的设计方法。循环程序:在程序中需要反复的执行的程序段,为了避免在程序中多次的编写,可以通过利用条件转移或无条件转移指令来控制程序的执行。子程序结构:把实现一定功能的程序编制好,供其他程序调用。,单片机汇编语言程序主要的几种程序设计方法:,任务八 初步掌握MCS51单片机汇编程序设计,下午12时37分,单片机应用技术,12,顺序结构结构特点: 按指令的先后顺序依次执行。例:将内RAM20H单元的两个压缩BCD码拆开变成ASCII码,存入21H、22H单元。(假设20H中的BCD码为00110100),什么是BCD码?什么是ASII码?,0011,压缩BCD码,0011,001
13、1,0100,低四位ASII码,高四位ASII码,任务八 初步掌握MCS51单片机汇编程序设计,下午12时37分,单片机应用技术,13,方法1:将BCD码除以10H,恰好是将BCD码分别移到了A、B的低4位。然后再各自与30H相或,即成为ASCII码。,方法2:利用半字节交换指令来实现。,任务八 初步掌握MCS51单片机汇编程序设计,认知2 掌握汇编语言程序设计,下午12时37分,单片机应用技术,14,ORG 0000HMOV A,20HMOV B,#10HDIV ABORL B,#30HMOV 22H,BORL A,#30HMOV 21H,ASJMP $,方法1,源程序如下:,0011,01
14、00,PC,PC,PC,0011 0100,0001 0000,PC,0011,0000,0000 0100,PC,0011 0100,PC,PC,PC,0011,PC,任务八 初步掌握MCS51单片机汇编程序设计,下午12时37分,单片机应用技术,15,ORG 0000H MOV R0,#20H MOV A,#30H XCHD A,R0 MOV 22H,A MOV A,R0 SWAP A ORL A , #30H MOV 21H, A SJMP $,方法2,PC,PC,PC,PC,PC,PC,PC,PC,PC,源程序如下:,0011,0010 0000,0011,0100,0000,0100
15、,0011,0100,0011,0000,0011,0000,0011,PC,0011,任务八 初步掌握MCS51单片机汇编程序设计,下午12时37分,单片机应用技术,16,分支程序结构结构特点:不一定按指令的先后顺序依次运行程序,程序的流向有两个或两个以上分支,根据指定条件选择程序的流向。实例:已知30H单元中有一变量X,要求编写一程序按下述要求给Y赋值,结果存入31H单元。 X+1, X0 Y = 0 , X = 0 1 , X0题意:根据X的不同,程序编写时有三个出口,即有三个分支!,想一想:程序怎么编写?,任务八 初步掌握MCS51单片机汇编程序设计,下午12时37分,单片机应用技术,
16、17,开始,XA,A= 1,A= A+1,存结果,结束,Y,Y,N,N,程序框图:,A0?,A=0?,任务八 初步掌握MCS51单片机汇编程序设计,下午12时37分,单片机应用技术,18,源程序如下: ORG 2000H MOV A,30H JZ LP1 ;X = 0,转LP1处理 JNB ACC.7,LP2 ;X0,转LP2处理 MOV A,#0FFH ;X0,则Y= 1 SJMP LP1 LP2:ADD A,#01 ;X 0,Y=X+1 LP1:MOV 31H,A ;存结果 SJMP $ ;循环等待,$表示转至 本地址,此方法适用 于一字节的偏移量,最高位为符号位。,任务八 初步掌握MCS
17、51单片机汇编程序设计,下午12时37分,单片机应用技术,19,结构特点:利用转移指令反复运行需要多次重复的程序段。例如:延时程序:(DELAY) DELAY: MOV R3, #OFFH DEL2: MOV R4,#0FFH DEL1: DJNZ R4,DEL1 DJNZ R3,DEL2 RET 循环程序的组成: 1. 初始化部分(设定循环次数等)。 2. 循环体(重复执行的部分,用于完成实际操作) 3. 循环控制(不断修改和判别循环变量,直至结束)。 4. 循环结束处理。,循环程序结构,任务八 初步掌握MCS51单片机汇编程序设计,下午12时37分,单片机应用技术,20,子程序结构,在实际
18、问题中,常常会遇到在一个程序中多次用到相同的运算或操作,若每遇到这些运算或操作,都从头编起,将使程序繁琐、浪费内存。因此在实际中,经常把这种多次使用的程序段,按一定结构编好,存放在存储器中,当需要时,可以调用这些独立的程序段。通常将这种可以被调用的程序段称为子程序。,主要内容: 1. 主程序与子程序的关系 2. 子程序嵌套 3. 子程序的调用与返回,任务八 初步掌握MCS51单片机汇编程序设计,下午12时37分,单片机应用技术,21,任务八 初步掌握MCS51单片机汇编程序设计,【例3-33】设有一长度为30H的字符串在单片机内RAM中,其首地址为40H,要求将该字符串中的每一个字符加偶校验位,试编程用子程序的方法来实现。参考程序: ORG0030HMAIN: MOV R0, #40H ; 置地址指针R0初值 MOV R7, #30H ; 置字符串长度LOOP: MOV A, R0 ;取未加检验位的ASCII码 LCALL MP3 ;调用子程序 MOV R0, A ;将加检验位的ASCII码送回 INC R0 ;修改数据指针 DJNZ R7, LOOP ;判断数据循环是否结束? SJMP $ MP3: ADD A , #00H JNB PSW.0, MP4 ORL A, #80H MP4: RET END,
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。