《单片机接口技术ppt精.ppt》由会员分享,可在线阅读,更多相关《单片机接口技术ppt精.ppt(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机接口技术ppt第1页,本讲稿共44页4.1 伪伪 指指 令令 伪指令伪指令 是是 对汇编过程对汇编过程 起控制作用,但本身并没起控制作用,但本身并没有对应的机器代码的指令。有对应的机器代码的指令。一、一、汇编起始指令汇编起始指令 ORG 指令格式为指令格式为:ORG nn 该该指指令令的的作作用用是是指指明明后后面面的的程程序序或或数数据据块块的的起起始始地地址址,它它总总是是出出现现在在每每段段源源程程序序或或数数据据块块的的开开始始。式式中中,nn为为 16 位位地地址址,汇汇编编时时nn确确定定了了此此语语句句后后面面第第一一条条指指令令或或第第一一个个数数据据的的地地址址,此此后
2、后的的源源程程序序或或数数据据块块就就依依次次连连续续存存放放在在以以后后的的地地址址内内,直直到到遇遇到到另另一一个个ORG指令为止。指令为止。第2页,本讲稿共44页 例例:ORG 2000H MOV SP,60H MOV R0,2FH MOV R2,0FFH ORG伪伪指指令令说说明明其其后后面面程程序序的的目目标标代代码码在在存存储储器器中中存存放放的的起起始始地址是地址是2000H,即即 存储器地址存储器地址 目标程序目标程序 2000H 75 81 60 2003H 78 2F 2005H 7A FF 第3页,本讲稿共44页 二、等值指令二、等值指令EQU 指令格式指令格式:字符名称
3、字符名称 EQU 数字或汇编符号数字或汇编符号 例例:PA8155 EQU 8001H;即给标号;即给标号PA8155赋值为赋值为8001H。功能功能:使指令中的字符名称等价于给定的数字或汇编符号。使指令中的字符名称等价于给定的数字或汇编符号。使使用用等等值值指指令令可可给给程程序序的的编编制制、调调试试、修修改改带带来来方方便便,如如果果在在程程序序中中要要多多次次使使用用到到某某一一地地址址,由由EQU指指令令将将其其赋赋值值给给一一个个字字符符名名称称,一一旦旦需需要要对对其其进进行行变变动动,只只要要改改变变EQU命命令令后后面面的的数数字字即即可可,而而不不需需要要对对程程序序中中涉
4、涉及及到到该该地地址址的的所所有有指指令令逐逐句句进进行行修修改改。但但要要注注意意,由由 EQU等等值值的的字字符符名名称称必必须须先先赋赋值值后后使使用用,且且在在同同一一个个源源程程序序中中,同同一一个标号只能赋值一次。个标号只能赋值一次。第4页,本讲稿共44页 三、三、定义字节指令定义字节指令DB 指令格式指令格式:标号标号:DB 8位二进制数表位二进制数表 功功能能:把把 8 位位二二进进制制数数表表依依次次存存入入从从标标号号开开始始的的连连续续的的存存储单元中。储单元中。格格式式中中,标标号号区区段段可可有有可可无无,DB指指令令之之后后的的 8 位位二二进进制制数数表表是是字字
5、节节常常数数或或用用逗逗号号隔隔开开的的字字节节串串,也也可可以以是是用用引引号号括括起起来来的的ASCII码码字字符串符串 (一个一个 ASCII字符相当于一个字节字符相当于一个字节)。例例:第5页,本讲稿共44页ORG 1000HBUF1:DB 38H,7FH,80HBUF2:DB 45H,66H ORG伪伪指指令令指指定定了了标标号号BUF1的的地地址址为为1000H,而而DB伪伪指指令令是是将将其其后后的的二二进进制制数数表表38H,7FH,80H依依次次存存放放在在1000H,1001H,1002H 3 个个连连续续单单元元之之中中,BUF2也也是是一一个个标标号号,其其地地址址与与
6、前前一一条条伪伪指指令令连连续续,即即1003H,1004H地地址址单单元元中中依依次次存存放放 45H,66H。第6页,本讲稿共44页 四、四、定义字指令定义字指令DW 指令格式指令格式:标号标号:DW 16 位数据表位数据表 该该指指令令的的功功能能与与DB相相似似,区区别别仅仅在在于于从从指指定定地地址址开开始始存存放放的的是是指指令令中中的的 16 位位数数据据,而而不不是是字字节节串串。每每个个 16 位位数数据据要要占占两两个个存存储储单单元元,高高8 位位先先存存,低低 8 位位后后存存,这这和和MCS-51指指令令中中的的16位位数数据据存存放放顺顺序序是一致的。是一致的。第7
7、页,本讲稿共44页五、定义存储区指令五、定义存储区指令 DS 表示在表示在ROM中从标号地址开始,预留一定数量的字节中从标号地址开始,预留一定数量的字节单元供程序使用单元供程序使用 标号:标号:DS 表达式表达式表达式是由常数、操作符、运算符组合而成的算式表达式是由常数、操作符、运算符组合而成的算式第8页,本讲稿共44页六、数据地址赋值指令六、数据地址赋值指令DATA 将表达式的值赋予所定义的字符名,表达式通常为数据将表达式的值赋予所定义的字符名,表达式通常为数据地址或代码地址地址或代码地址 字符名字符名 DATA 表达式表达式七、定义地址符号指令七、定义地址符号指令 BIT 将指定的位地址赋
8、予所定义的字符名将指定的位地址赋予所定义的字符名 字符名字符名 BIT 位地址位地址 第9页,本讲稿共44页 八、八、汇编结束指令汇编结束指令END 指令格式指令格式:标号标号:END 地址或标号地址或标号 格格式式中中标标号号以以及及END后后面面的的地地址址或或标标号号可可有有可可无无。功功能能:提提供供汇汇编编结结束束标标志志。汇汇编编程程序序遇遇到到 END后后就就停停止止汇汇编编,对对 END以以后后的的语语句句不不予予处处理理,故故 END应应放放在程序的结束处。在程序的结束处。第10页,本讲稿共44页4.2 汇编语言程序设计汇编语言程序设计 4.2.1 简单程序设计简单程序设计
9、例例 1 两个无符号双字节数相加。两个无符号双字节数相加。设设被被加加数数存存放放于于内内部部RAM的的40H(高高位位字字节节),41H(低低位位字字节节),加加数数存存放放于于50H(高高位位字字节节),51H(低位字节)(低位字节),和数存入和数存入 40H和和41H单元中。单元中。第11页,本讲稿共44页程序如下:START:CLR C ;将将Cy清零清零 MOV R0,41H ;将被加数地址送数据指针将被加数地址送数据指针R0 MOV R1,51H ;将加数地址送数据指针将加数地址送数据指针R1 AD1:MOV A,R0 ;被加数低字节的内容送入被加数低字节的内容送入AADD A,R
10、1 ;两个低字节相加两个低字节相加MOV R0,A ;低字节的和存入被加数低字节中低字节的和存入被加数低字节中 DEC R0 ;指向被加数高位字节指向被加数高位字节 DEC R1 ;指向加数高位字节指向加数高位字节 MOV A,R0 ;被加数高位字节送入被加数高位字节送入AADDC A,R1 ;两个高位字节带两个高位字节带Cy相加相加 MOV R0,A ;高位字节的和送被加数高位字节高位字节的和送被加数高位字节 RET 第12页,本讲稿共44页例例 2 将外部将外部RAM中的中的1000H单元的高单元的高4位内容屏蔽掉,位内容屏蔽掉,结果送外部结果送外部RAM中的中的1010H单元单元 ORG
11、 0000H AJMP MAIN ORG 0030H MAIN:MOV DPTR,#1000H MOVX A,DPTR ANL A,#0FH MOV DPTR,#1010H MOVX DPTR,A SJMP$第13页,本讲稿共44页 例例 3 将两个半字节数合并成一个一字节数。将两个半字节数合并成一个一字节数。设设内内部部RAM 40H#,41H单单元元中中分分别别存存放放着着 8 位位二二进进制制数数,要要求求取取出出两两个个单单元元中中的的低低半半字字节节,并并成成一一个个字字节节后后,存存入入 50H单单元元中中。程程序序如下如下:START:MOV R1,40H ;设置设置R1为数据指
12、针为数据指针MOV A,R1 ;取出第一个单元中的内容取出第一个单元中的内容ANL A,0FH ;取第一个数的低半字节取第一个数的低半字节SWAP A ;移至高半字节移至高半字节INC R1;修改数据指针修改数据指针XCH A,R1 ;取第二个单元中的内容取第二个单元中的内容ANL A,0FH ;取第二个数的低半字节取第二个数的低半字节ORL A,R1 ;拼字拼字MOV 50H,A;存放结果存放结果RET 第14页,本讲稿共44页4.2.2 分支程序设计分支程序设计 图图 4.1 分支结构框图分支结构框图(a)单分支流程单分支流程;(b)多分支流程多分支流程 第15页,本讲稿共44页 例例 3
13、 比较两个无符号数的大小。比较两个无符号数的大小。设外部设外部 RAM 的存储单元的存储单元 ST1和和 ST2中存放两个不带符号的二进制数中存放两个不带符号的二进制数,找出其中的大数存入外部找出其中的大数存入外部 RAM 中的中的 ST3单元中。单元中。图 4.2第16页,本讲稿共44页程序如下:程序如下:ORG 1000H ST1 EQU 2000H ST2 EQU 2100H ST3 EQU 2200H START:CLR C ;清零清零Cy MOV DPTR,ST1 ;第一个数的指针第一个数的指针 MOVX A,DPTR ;取第一个数取第一个数 MOV R2,A ;保存保存 MOV D
14、PTR,ST2 ;第二个数的指针第二个数的指针 MOVX A,DPTR ;取第二个数取第二个数 CLR C 第17页,本讲稿共44页SUBB A,R2;两数比较两数比较JNC BIG2;若第二个数大若第二个数大,则转则转XCH A,R2;第一个数大第一个数大,大数送大数送ABIG1:MOV DPTR,ST3 MOVX DPTR,A;存大数存大数RETBIG2:MOVX A,DPTR;第二个数大第二个数大SJMP BIG1RET 第18页,本讲稿共44页例例4 两个带符号数分别存放在两个带符号数分别存放在ONE 和和TWO 两单元两单元中中,试比较大小试比较大小,大的存入大的存入MAX单元单元
15、CLR C MOV A,ONE SUBB A,TWO JZ XMAX JB ACC.7,NEG JB OV,YMAX SJMP XMAX NEG:JB OV,XMAX第19页,本讲稿共44页YMAX:MOV A,TWO SJMP RMAXXMAX:MOV A,ONERMAX:MOV MAX,A RET ONE DATA 30H TWO DATA 31H MAX DATA 32H END第20页,本讲稿共44页4.2.3 循环程序设计循环程序设计 一、一、循环程序循环程序 图 4.4 第21页,本讲稿共44页 循环程序一般由四个主要部分组成循环程序一般由四个主要部分组成:(1)初初始始化化部部分
16、分:为为循循环环程程序序做做准准备备,如如规规定定循循环环次次数数、给给各各变量和地址指针预置初值。变量和地址指针预置初值。(2)处处理理部部分分:为为反反复复执执行行的的程程序序段段,是是循循环环程程序序的的实实体体,也也是是循循环环程序的主体。程序的主体。(3)循循环环控控制制部部分分:这这部部分分的的作作用用是是修修改改循循环环变变量量和和控控制制变变量量,并并判判断断循环是否结束循环是否结束,直到符合结束条件时直到符合结束条件时,跳出循环为止。跳出循环为止。(4)结束部分结束部分:这部分主要是对循环程序的结果进行分析、这部分主要是对循环程序的结果进行分析、处理和存放。处理和存放。第22
17、页,本讲稿共44页 例例 5 工作单元清零。工作单元清零。在在应应用用系系统统程程序序设设计计时时,有有时时经经常常需需要要将将存存储储器器中中各各部部分分地地址址单单元元作作为为工工作作单单元元,存存放放程程序序执执行行的的中中间间值值或或执执行行结结果果,工工作作单单元元清清零零工作常常放在程序的初始化部分中。工作常常放在程序的初始化部分中。将外部存储器将外部存储器1000H10FFH单元清零单元清零程序如下程序如下:第23页,本讲稿共44页方法1 CLEAR:MOV R0 ,#00H MOV DPTR,1000H ;工工作作单单元元首首址址送送指指针针CLEAR1:CLR A MOVX
18、DPTR,A INC DPTR ;修改指针修改指针 INC R0 CJNE R0,#00H,CLEAR1;控制循环控制循环 RET 第24页,本讲稿共44页方法2CLEAR:CLR A MOV DPTR,1000H ;工工作作单单元元首首址址送送指指针针 MOV R2,256;置循环次数置循环次数CLEAR1:MOVX DPTR,A INC DPTR ;修改指针修改指针 DJNZ R2,CLEAR1;控制循环控制循环 RET 第25页,本讲稿共44页 例例 6 设设在在内内部部 RAM的的BLOCK单单元元开开始始处处有有长长度度为为 LEN个个的的无无符符号号数数据据块块,试试编编一一个个求
19、求和和程程序序,并并将将和和存存入入内内部部 RAM的的 SUM单元(设和不超过单元(设和不超过 8 位)。位)。BLOCK EQU 20H LENEQU 30H SUM EQU 40HSTART:CLR A ;清累加器清累加器A MOV R2,LEN;数据块长度送数据块长度送R2 MOV R1,BLOCK ;数据块首址送数据块首址送R1 LOOP:ADD A,R1;循环加法循环加法 INC R1;修改地址指针修改地址指针 DJNZ R2,LOOP ;修改计数器并判断修改计数器并判断 MOV SUM,A;存和存和 RET 第26页,本讲稿共44页 二、二、多重循环多重循环 例例 7 50ms延
20、时程序。延时程序。延延时时程程序序与与 MCS-51 执执行行指指令令的的时时间间有有关关,如如果果12 MHz晶晶振振,一一个个机机器器周周期期为为 1 s,计计算算出出一一条条指指令令以以至至一一个个循循环环所所需需要要的的执执行行时时间间,给给出出相相应应的的循循环环次次数数,便便能能达达到到延延时时的的目目的的。50ms延延时程序需连续运行时程序需连续运行25000次次DJNZ指令指令:DEL:MOV R7,200 DEL1:MOV R6,125 DEL2:DJNZ R6,DEL2 DJNZ R7,DEL1 RET 第27页,本讲稿共44页 上上例例程程序序中中采采用用了了多多重重循循
21、环环程程序序,即即在在一一个个循循环环体体中中又又包包含含了了其其它它的的循循环环程程序序,这这种种方方式式是是实实现现延延时时程程序序的的常常用用方方法法。使使用用多多重重循循环环时时,必须注意必须注意:(1)循环嵌套循环嵌套,必须层次分明必须层次分明,不允许产生内外层循环交叉。不允许产生内外层循环交叉。(2)外外循循环环可可以以一一层层层层向向内内循循环环进进入入,结结束束时时由由里里往往外外一一层层层退出。层退出。(3)内内循循环环可可以以直直接接转转入入外外循循环环,实实现现一一个个循循环环由由多多个个条条件件控制的循环结构方式。控制的循环结构方式。第28页,本讲稿共44页 例例8 在
22、在内内部部 RAM中中从从 50H单单元元开开始始的的连连续续单单元元依依次次存存放放了了一一串串字字符符,该该字字符符串串以以回回车车符符为为结结束束标志标志,要求测试该字符串的长度。要求测试该字符串的长度。程序如下程序如下:START:MOV R2,0FFH MOV R0,4FH ;数据指针数据指针R0置初值置初值 LOOP:INC R0 INC R2 CJNE R0,0DH,LOOP RET 第29页,本讲稿共44页4.2.4 散转程序设计散转程序设计 散散转转程程序序是是分分支支程程序序的的一一种种,它它可可根根据据运运算算结结果果或或输输入入数数据据将将程程序序转转入入不不同同的的分
23、分支支。MCS-51 指指令令系系统统中中有有一一条条跳跳转转指指令令JMPA+DPTR,用它可以很容易地实现散转功能。用它可以很容易地实现散转功能。此此指指令令的的特特点点在在于于,转转移移的的目目标标地地址址不不是是在在编编程程或或汇汇编编时时预预先先确确定定的的,而而是是在在程程序序运运行行过过程程中中动动态态地地确确定定的的。目目标标地地址址是是以以数数据据指指针针 DPTR的的内内容容为为起起始始的的 256 字字节节范范围围内内的的指指定定地地址址,即即由由 DPTR的的内内容容决决定定分分支支转转移移程程序序的的首首地地址址,由由累累加加器器 A的的内内容容来来动动态态选选择择其
24、其中中的的某某一个分支转移程序。一个分支转移程序。第30页,本讲稿共44页 例例 9 根据工作寄存器根据工作寄存器R0 内容的不同内容的不同,使程序转入相应的分支。使程序转入相应的分支。(R0)=0 对应的分支程序标号为对应的分支程序标号为PR0;(R0)=1 对应的分支程序标号为对应的分支程序标号为PR1;(R0)=N 对应的分支程序标号为对应的分支程序标号为PRN。第31页,本讲稿共44页程序如下程序如下:LP0:MOV DPTR,TAB ;取表头地址取表头地址 MOV A,R0 CLR C RLC A ;R0内容乘以内容乘以2 JNC LP1 ;无进位转移无进位转移 INC DPH ;加
25、进位位加进位位LP1:JMP A+DPTR;跳至散转表中相应位置跳至散转表中相应位置TAB:AJMP PR0 AJMP PR1 .AJMP PRN 第32页,本讲稿共44页 本本例例程程序序仅仅适适用用于于散散转转表表首首地地址址 TAB和和处处理理程程序序入入口口地地址址 PR0,PR1,PRN在在同同一一个个 2 KB范范围围的的存存储储区区内内的的情情形形。若若超超出出 2 KB范范围围可可在在分分支支程程序序入入口口处处安安排排一一条条长长跳跳转转指指令令,可可采采用用如如下下程程序序:MOV DPTR,TABMOV A,R0 MOV B,03H ;长跳转指令占长跳转指令占 3 个字节
26、个字节MUL ABXCH A,B 第33页,本讲稿共44页 ADD A,DPH MOV DPH,A XCH A,B JMP A+DPTR;跳至散转表中相应的位置跳至散转表中相应的位置 TAB:LJMP PR0;跳至不同的分支跳至不同的分支 LJMP PR1 LJMP PRN 第34页,本讲稿共44页4.2.5 查表程序设计查表程序设计 查查表表程程序序是是一一种种常常用用程程序序,它它广广泛泛使使用用于于 LED显显示示控控制制、打打印印机机打打印印控控制制、数数据据补补偿偿、数数值值计计算算、转转换换等等功功能能程程序序中中,这这类类程程序序具具有有简简单、执行速度快等特点。单、执行速度快等
27、特点。所所谓谓查查表表法法,就就是是预预先先将将满满足足一一定定精精度度要要求求的的表表示示变变量量与与函函数数值值之之间间关关系系的的一一张张表表求求出出,然然后后把把这这张张表表存存于于单单片片机机的的程程序序存存储储器器中中,这这时时自自变变量量值值为为单单元元地地址址,相相应应的的函函数数值值为为该该地地址址单单元元中中的的内内容容。查查表表,就就是是根根据据变变量量 X在在表表格格中中查查找找对对应应的的函函数数值值 Y,使使 Y=f(X)。第35页,本讲稿共44页MCS-51指令系统中指令系统中,有两条查表指令有两条查表指令:MOVC A,A+PC MOVC A,A+DPTR 查表
28、步骤见书查表步骤见书P50注意:以注意:以DPTR和和PC作为基地址寄存器的区别作为基地址寄存器的区别第36页,本讲稿共44页 例例 10 一一个个十十六六进进制制数数存存放放在在R0寄寄存存器器低低 4 位位中中,将将其其转转换换成成ASCII码并送回码并送回 R0。十十六六进进制制 09的的ASCII码码为为 30H39H,AF的的ASCII码码为为41H46H,ASCII码表格的首地址为码表格的首地址为ASCTAB。编程如下。编程如下:ORG 1000H HEXASC:MOV DPTR#ASCTAB MOV A,R0 ANL A,0FH MOVC A,A+DPTR MOV R0,A RE
29、T 第37页,本讲稿共44页ASCTAB:DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H DB 41H,42H,43H,44H,45H DB 46H 在在这这个个程程序序中中,若若查查表表指指令令用用MOVC A,A+PC到到表表格格首首地地址有两条指令址有两条指令,占用占用 2 个字节地址空间个字节地址空间,故修改指针应加故修改指针应加 2。第38页,本讲稿共44页4.2.5 子程序和参数传递子程序和参数传递 一、一、子程序的概念子程序的概念 通通常常把把一一些些基基本本操操作作功功能能编编制制为为程程序序段段作作为为独独立立的的子子程程序序,以以
30、供供不不同同程程序序或或同同一一程程序序反反复复调调用用。在在程程序序中中需需要要执执行行这这种种操操作作的的地地方方放放置置一一条条调调用用指指令令,当当程程序序执执行行到到调调用用指指令令,就就转转到到子子程程序序中中完完成成规规定定的操作的操作,并返回到原来的程序继并返回到原来的程序继 续执行下去。续执行下去。第39页,本讲稿共44页 二、二、子程序的调用子程序的调用 调调用用子子程程序序的的指指令令有有“ACALL”和和“LCALL”,执执行行调调用用指指令令时时,先先将将程程序序地地址址指指针针PC改改变变(“ACALL”加加 2,“LCALL”加加 3),然然后后将将 PC值值压压
31、入入堆堆栈栈,用用新新的的地地址址值值代代替替。执执行行返返回回指指令令时时,再再将将 PC值值弹弹出。出。子子程程序序调调用用中中,主主程程序序应应先先把把有有关关的的参参数数存存入入约约定定的的位位置置,子子程程序序在在执执行行时时,可可以以从从约约定定的的位位置置取取得得参参数数,当当子子程程序序执执行行完完,将将得得到到的的结结果果再再存存入入约约定定的的位位置置,返返回回主主程程序序后后,主主程程序序可可以以从从这这些些约约定定的的位位置置上上取得需要的结果取得需要的结果,这就是参数的传递。这就是参数的传递。第40页,本讲稿共44页 例例 11 将将一一个个字字节节二二进进制制数数转
32、转换换成成 3 位位非非压压缩缩型型BCD码。码。设设一一个个字字节节二二进进制制数数在在内内部部RAM 40H单单元元,转转换换结结果果放放入入内内部部 RAM 50H,51H,52H单单元元中中(高高位在前)位在前),程序如下程序如下:第41页,本讲稿共44页HEXBCD:MOV A,40H MOV B,100 DIV AB MOV 50H,A MOV A,10 XCH A,B DIV AB MOV 51H,A MOV 52H,B RET 第42页,本讲稿共44页 例例 12 假定被乘数在(假定被乘数在(R4R3)中)中,乘数放在乘数放在R2中中,乘积放在乘积放在R7R6和和R5中。中。M
33、CS-51 中有中有 8 位数的乘法指令位数的乘法指令MUL,用它来实现多字节乘法时用它来实现多字节乘法时,可表示为可表示为 (R4R3)(R2)=(R4)28+(R3)(R2)=(R4)(R2)28+(R3)(R2)其中(其中(R4)(R2)和()和(R3)(R2)都是可直接用)都是可直接用MUL指令指令来实现来实现,而乘以而乘以28意味着左移意味着左移 8 位。由此可编写如下程序位。由此可编写如下程序:第43页,本讲稿共44页NMUL1:MOV A,R2 MOV B,R3 MUL AB;(R3)(R2)MOV R5,A ;积的低位送积的低位送R5 MOV R6,B ;积的高位送积的高位送R6 MOV A,R2 MOV B,R4 MUL AB ;(R4)(R2)ADD A,R6;(R3)(R2)的高位加)的高位加(R4)(R2)的低位的低位MOV A,B ADDC A,00H ;(R4)(R2)的高位加)的高位加Cy MOV R7,A ;结果送结果送R7 RET 第44页,本讲稿共44页