第六章汇编语言程序设计课件.ppt

上传人:牧羊曲112 文档编号:2111240 上传时间:2023-01-12 格式:PPT 页数:103 大小:340.39KB
返回 下载 相关 举报
第六章汇编语言程序设计课件.ppt_第1页
第1页 / 共103页
第六章汇编语言程序设计课件.ppt_第2页
第2页 / 共103页
第六章汇编语言程序设计课件.ppt_第3页
第3页 / 共103页
第六章汇编语言程序设计课件.ppt_第4页
第4页 / 共103页
第六章汇编语言程序设计课件.ppt_第5页
第5页 / 共103页
点击查看更多>>
资源描述

《第六章汇编语言程序设计课件.ppt》由会员分享,可在线阅读,更多相关《第六章汇编语言程序设计课件.ppt(103页珍藏版)》请在三一办公上搜索。

1、汇编语言程序设计,第 六 章,汇编语言第 六 章,PIC单片机指令系统和其它单片机一样,是较为低级的语言系统,是一套控制和指挥CPU工作的编码,即机器语言。单片机只能识别和执行由二进制数组成的机器语言,然而,这样一种二进制代码的机器语言是很难为人们直接理解和分析。,PIC单片机指令系统和其它单片机一样,是较为低级的语言系统,为了能较好表达人们的设计思路,便于记忆和使用,人们在低级语言之上设计出一种新的符号语言,即汇编语言。这一章主要介绍MPASM汇编语言。MPASM是支持Microchip公司全系列产品的通用汇编程序。,为了能较好表达人们的设计思路,便于记忆和使用,人们在低级语,编写完源程序后

2、,必须要使用MPASM汇编环境对其汇编,生成机器码文件和列表文件后,方可进行调试和机器码的烧写工作。,编写完源程序后,必须要使用MPASM汇编环境对其汇编,生成,6.1 汇编语言指令格式,汇编语言程序包括一系列可执行的语句,它告诉汇编程序要执行什么操作,这一系列的语句通常称为源代码。汇编语言源代码语法规定如下:标号 操作码(指令助记符)操作数 注释,6.1 汇编语言指令格式汇编语言程序包括一系列可执行的语,标号 操作码(指令助记符)操作数 注释这4部分中,只有操作码是必须存在的,它主要决定了指令的操作性质,而其他部分是指令语句的重要补充和说明,有时可以省略。如果前3项都存在,那么它们之间至少留

3、有一个或一个以上空格。,标号 操作码(指令助记符)操作数 注释,PIC汇编源程序原则上既可以大写字母书写,也可以小写字母书写,还可以大小写字母混合书写。,PIC汇编源程序原则上既可以大写字母书写,也可以小写字母书,一、标号(label)标号表示一条汇编指令实际开始的存储器地址,即用符号名称作为程序块的引导标志。这使得程序设计者能够用名字引用一条指令,而无须对指令的地址进行跟踪和解释。,一、标号(label),标号位于指令助记符前面,它一般是用于表示指令所在的地址,例如表示主程序或子程序的起始地址、转移语句的入口地址等。,标号位于指令助记符前面,它一般是用于表示指令所在的地址,例,必须用字母或下

4、划线_开始,最多32个字符,包括大小写英文字母、09和特殊符号及空格、制表符、换行符。标号不能与指令助记符、专用寄存器名、汇编语言保留字、伪指令同名。标号不能出现二义性。标号可以单独成一行,但必须顶格书写,结束不用冒号。,必须用字母或下划线_开始,最多32个字符,包括大小写英文字,二、操作码即指令助记符,26个字符组成。它可以表示一条机器指令、宏调用指令或伪指令。操作码决定着指令的操作类型和操作性质,是汇编语言语句中的核心要素,每一条汇编指令都不可缺少,而其它三部分有些指令可以缺省。,二、操作码,操作码所对应的指令助记符,其中的符号大小写可以混用,而不会影响操作码的含意,这一点和标号、操作数符

5、号变量的表达方式有本质区别。指令助记符不能顶格书写,当前面没有标号时,必须至少保留一个空格。,操作码所对应的指令助记符,其中的符号大小写可以混用,而不会,三、操作数在PIC汇编语言语句中,操作数的形式和内容最为丰富,它是指令助记符操作的对象,一般以数据或地址的形式出现,也可以用符号变量所表示的数据或地址。操作数与操作码之间至少要用一个空格分开,若是有两个操作数,中间用逗号(半角)分开。,三、操作数,以A、B、C、D、E和F开头的数,前面应加0作为引导。操作数可以是常数、已用伪指令赋值的符号和表达式。MPASM编辑环境默认进制为十六进制,也可按用户需要重新设置。,以A、B、C、D、E和F开头的数

6、,前面应加0作为引导。,操作数部分的符号变量必须区分大小写。重视d参数的应用,目标地址为:F(d=1);W(d=0)。,操作数部分的符号变量必须区分大小写。,操作数的三种类型常数可以是下面几种类型之一:二进制数 B10010011 八进制数 O112 十进制数 D99 十六进制数 H6A 或 0 x6A 默认是十六进制,操作数的三种类型,符号是各种用EQU伪指令定义过的字符串系列或者宏定义等。例:ACC EQU 0 x26;定义ACC为一寄存器,对应于RAM地址为0 x26CLRF ACC;寄存器清0,符号是各种用EQU伪指令定义过的字符串系列或者宏定义等。,表达式是用各种运算符将运算对象连接

7、起来的式子,可以用括号改变优先级。MPASM使用的运算符有:算术运算符:、(余)关系运算符:、=、=、!关系运算的结果是1和0两种状态,分别表示真和假。,表达式是用各种运算符将运算对象连接起来的式子,可以用括号改,逻辑运算符:!(逻辑非)、(逻辑与)、(逻辑或)位运算符:(位右移)、(位左移)、(位非)、(位或)、(位与)、(位异或)赋值运算符:作为被赋值对象,一般是用VARIABLE伪指令定义的变量。,逻辑运算符:!(逻辑非)、(逻辑与)、(逻辑或),复合赋值运算符:、=、复合赋值运算符是执行相应的运算功能,再执行赋值功能。其中执行运算功能时,被赋值对象也参与。,复合赋值运算符:、=、,其它

8、:$、()、HIGH、LOW$为当前程序计数器PC的值;HIGH返回操作对象的高字节;LOW返回操作对象的低字节。,其它:$、()、HIGH、LOW,四、注释注释是最后一部分,是很有用的。主要是便于阅读、分析、修改和程序的调试。注释内容可与源程序一起保存和打印,但汇编时将被系统忽略,对程序的执行不起作用。,四、注释,注释部分是对源程序进行说明的,与前一个部分之间至少用一个空格分开,由分号;(半角)开始,可以紧跟指令,也可独立一行或多行书写。注释内容可以英文书写,也可以用中文书写。,注释部分是对源程序进行说明的,与前一个部分之间至少用一个空,6.2 系统伪指令,伪指令是设计汇编语言程序的一个重要

9、组成部分,是汇编程序完成特定操作的一种指示。可以认为是一种汇编命令,而不是将要翻译成机器语言的汇编语言指令。,6.2 系统伪指令伪指令是设计汇编语言程序的一个重要组成,MPASM的伪指令可以分为数据、列表、条件和宏四类。分别用于控制程序存储器的分配定位和数据名称的定义、列表文件的格式、汇编的过程和路径、宏定义的运行和数据定位等。,MPASM的伪指令可以分为数据、列表、条件和宏四类。,伪指令就是“假”指令的意思,它不是单片机指令系统中的真实指令。其格式也由4部分组成,每部分之间至少要有一个空格分隔。符号名 伪指令助记符 操作数;注释,伪指令就是“假”指令的意思,它不是单片机指令系统中的真实指,其

10、中的符号名通常是代表专用寄存器名、通用寄存器变量、常数名、标志位或控制位名、复位矢量或中断矢量的一个字符串。对符号名的要求类似于前面标号的要求,从一行中的第一列开始,不能单独一行。,其中的符号名通常是代表专用寄存器名、通用寄存器变量、常数名,伪指令是程序设计人员向汇编器发出的控制命令。MPASM汇编器有伪指令数十条,但最常用的有以下几条,可以满足一般编程的需要。,伪指令是程序设计人员向汇编器发出的控制命令。,(1)EQU(Equate)符号名赋值伪指令 格式:符号名 EQU nn说明:EQU伪指令几乎每一个程序中都用到,其操作含意是使EQU两端的值相等,即给符号名赋予一个特定值,或者说是给符号

11、名定义一个数值。,(1)EQU(Equate)符号名赋值伪指令,一般在PIC的程序设计中,原则上每次遇到新的符号参数,都必须在前面补充定义符号名的初始数值或存储器地址。在PIC16F877中,nn的有效位是8位,可以用多种进制的数值表示,也可以采用符号变量或表达式表示,但所用到的符号变量必须在引用前被定义过。,一般在PIC的程序设计中,原则上每次遇到新的符号参数,都必,一个符号名一旦由EQU赋值,其值就固定下来了,不能再被重新赋值。在符号名定义和引用过程中,必须保证大小写属性的一致性,不能混合使用。例如:“ABC EQU 20H”在引用符号变量ABC时,用Abc、aBC或ABc与ABC是不一样

12、的,在汇编时均会出现出错信息。,一个符号名一旦由EQU赋值,其值就固定下来了,不能再被重新,实际上对于伪指令:ABC EQU 20H,其中ABC既可以认为是符号变量,因为ABC代表20H地址;又可以认为是符号常量,因为ABC可以代表符号常量20H。所以对于一个定义的符号量,应结合引用的指令进行分析才能真正确定符号量的类型。,实际上对于伪指令:ABC EQU 20H,其中ABC,(2)ORG 程序起始地址定义伪指令 格式:ORG nnnn说明:用于指定该伪指令后面的源程序机器代码存放的起始地址,也就是经汇编后生成的机器码目标程序或数据块在单片机程序存储器中的起始存放地址。nnnn是一个13位长的

13、地址参数。,(2)ORG 程序起始地址定义伪指令,(3)END 程序结束伪指令 格式:END说明;该伪指令通知MPASM汇编器结束对源程序的汇编,必须有且只能有1个END指令,放在整个源程序的末尾。,(3)END 程序结束伪指令,(4)LIST 列表选项伪指令格式:LIST 可选项,可选项,说明:用于设置各种汇编参数来控制汇编过程,或对列表文件进行格式化。该指令所有参数只能在一行内完成,其中参数的数值都用十进制数设置。,(4)LIST 列表选项伪指令,最常用的2种P=例如:LIST P=16F877或P=16F874等。R=例如:R=DEC(十进制);R=HEX(十六进制);R=BIN(二进制

14、)等。默认为十六进制。,最常用的2种,(5)INCLUDE 调入外部程序文件伪指令格式:INCLUDE“文件名”说明:用来告知汇编器,将一个预先编写好的外部程序文件包含进来,作为本源程序的一部分,这样可以减少重复劳动,提高编程效率。,(5)INCLUDE 调入外部程序文件伪指令,调入的外部文件,通常是PIC单片机的通用定义文件,其中定义了单片机的复位矢量、专用寄存器的地址以及控制位和状态位的位地址等。如:INCLUDE“P16F877.INC”,这个伪指令语句一般放在系统程序的首行。,调入的外部文件,通常是PIC单片机的通用定义文件,其中定义,(6)SET 对标号赋值伪指令格式:标号 SET

15、表达式说明:其功能相当于EQU伪指令,与其不同的一点是在一个源程序中,用EQU赋值的标号不能再重新赋值,但是用SET赋值的标号可以重新赋值。,(6)SET 对标号赋值伪指令,(7)进制定义伪指令:RADIX格式:RADIX 说明:RADIX伪指令用于设置在MPLAB-IDE集成开发环境中采用的进制方式,如定义十进制、八进制和十六进制等参数,MPLAB-IDE集成开发系统缺省为十六进制。,(7)进制定义伪指令:RADIX,例如:RADIX DEC;定义为十进制 RADIX HEX;定义为十六进制 RADIX OCT;定义为八进制,例如:,(8)BANKISEL 产生间接体(BANK)选择码格式:

16、BANKISEL 说明:在生成目标文件时使用,链接器根据它生成相应的体选择码,以便间接寻址访问以标识的地址。,(8)BANKISEL 产生间接体(BANK),必须预先定义,链接器将生成相应的体选择代码,即STATUS寄存器的IRP位将会填入相应的0或1。即根据的情况,决定是否加入:BCF STATUS,IRPBSF STATUS,IRP,必须预先定义,链接器将生成相应的体选择代码,即ST,(9)BANKSEL 产生体(BANK)选择码格式:BANKSEL 说明:在生成目标文件时使用,链接器根据它生成相应的体选择码。必须预先定义,链接器将生成相应的体选择代码,即STATUS寄存器的RP1、RP0

17、位将会填入相应的0或1。,(9)BANKSEL 产生体(BANK),实际上,在用MPASM汇编源程序时,MPASM根据所在的体及RP0:RP1的取值,决定是否插入下列指令:BCF STATUS,RP0BSF STATUS,RP0BCF STATUS,RP1BSF STATUS,RP1,实际上,在用MPASM汇编源程序时,MPASM根据,(10)PAGESEL 产生页选择码格式:PAGESEL 说明:在生成目标文件时使用,通知链接器根据所在的页面生成页选择代码,以便选到指定的页面上,必须预先定义。,(10)PAGESEL 产生页选择码,链接器将相应生成BCF PCLATH,4BSF PCLATH

18、,4BCF PCLATH,3BSF PCLATH,3用以修改PCLATH。,链接器将相应生成,例:PAGESEL GotoDest GOTO GotoDest.PAGESEL CallDest CALL CallDest.,例:PAGESEL GotoDest,6.3 存储器选择方式,有两个概念:1、数据存储器的体选择,四个体2、程序存储器的页选择,四个页面,6.3 存储器选择方式有两个概念:,6.3.1数据存储器体选方式,PIC16F877的数据存储器是一个具有512字节的存储器,其中只有19字节是无效存储单元。为了能完全选择512字节内的数据,需要9根地址线。根据9根地址线的组合方式不同,

19、形成2中寻址方式,即直接寻址和间接寻址。,6.3.1数据存储器体选方式PIC16F877的数据存储器,根据直接寻址和间接寻址操作码携带的地址信息情况,一般把512字节(包括无效地址)的数据存储器分成4个“体(BANK)”,根据直接寻址和间接寻址操作码携带的地址信息情况,一般把51,在访问数据存储器的某个单元之前,必需根据该单元的地址,对STATUS中的RP1、RP0或IRP进行预置或确认已位于所希望的体内。在系统复位时,RP1、RP0和IRP均为0,即系统默认为体0。,在访问数据存储器的某个单元之前,必需根据该单元的地址,对S,例2:,ABC EQU 20H ORG 0100H BANKSEL

20、 ABC MOVLW 00H MOVWF ABC,例2:ABC EQU 20H,四个体的最后16个单元体0:070H07FH体1:0F0H0FFH体2:170H17FH体3:1F0H1FFH存在集中映射现象,在使用前不必设置体选择码。,四个体的最后16个单元,6.3.2 程序存储器页选方式,PIC16F877单片机的程序存储器(Flash)是一个具有空间为8K14位的存储器,其中14位为单元字节长度。为了能完全选择8K的程序存储器,需要合成13根地址选择线。,6.3.2 程序存储器页选方式PIC16F877单片机的,程序存储器指令语句的选择,主要有以下6种途径:复位地址0000H,这是无条件的

21、选择方向,直接给出13根地址选择线;中断地址0004H,这也是无条件的选择方向,直接给出13根地址选择线;,程序存储器指令语句的选择,主要有以下6种途径:,指令寄存器,是在每一个指令的执行周期自动加1而形成当前程序的执行方向;执行以PCL为目标地址的算术逻辑类指令;转移指令方式,即GOTO语句;,指令寄存器,是在每一个指令的执行周期自动加1而形成当前程序,调用子程序方式,即CALL语句以及相应的返回语句(RETRUN、RETFIE和RETLW)。以上6种情况中,目标地址的构建方式是完全不同的,主要可以分为以下3种方式:,调用子程序方式,即CALL语句以及相应的返回语句(RETR,完全地址形成方

22、式。这种形成方式对应前3种情况,可以完全给出程序存储器所需的13位地址,无须设计者进行设置。即:复位地址0000H、中断地址0004H 指令寄存器,完全地址形成方式。,运算地址形成方式。第(4)种情况比较特殊,当执行完以PCL为目标地址的算术逻辑类指令后,将可能改变下一条指令的方向。此时,下一条指令13位地址的构成是以PCL的运算结果为低8位,而高5位将由寄存器PCLATH40装载。,运算地址形成方式。,1、当执行以PCL为目标的写操作指令时,PC的低8位来自算术逻辑单元ALU,PC的高5位来自PCLATH的低5位。,1、当执行以PCL为目标的写操作指令时,PC的低8位来自算术,PIC16F8

23、77单片机程序指针计数器PC的装载之一,xxxPCLATH寄存器有效的13位程序存储器地址PCL5位,转移地址形成方式。后2种情况是在其指令机器码中操作数应携带13位目标地址,但由于PIC16F877单片机指令系统的机器码宽度只有14位,CALL和GOTO语句对应的指令操作码占3位,留给目标地址仅有11位。,转移地址形成方式。,而11位地址寻址范围是2K,即表示在2K程序存储器范围内进行跳转和调用子程序,不会出现什么问题。当跳转的范围超出2K程序存储器空间时,就不得不寻求其他附加寻址条件。因此,将8K程序存储器以2K为单位进行分页,共分成4页。,而11位地址寻址范围是2K,即表示在2K程序存储

24、器范围内进,程序存储器的分页,页0 地址范围0000H07FFH页1 地址范围0800H0FFFH页2 地址范围1000H17FFH页3 地址范围1800H1FFFH特殊功能寄存器PCLATH的Bit4、Bit3为程序存储器页面选择位。,程序存储器的分页页0 地址范围0000H07FFH,2、当执行跳转指令GOTO或调用子程序指令CALL时,PC的低11位来自指令码中直接携带的11位地址,高2位由PCLATH3-4提供。,2、当执行跳转指令GOTO或调用子程序指令CALL时,PC的,PIC16F877单片机程序指针计数器PC的装载之二,有效的13位程序存储器地址OP CODEkkkk14-位

25、c,从以上分析可以看出,跳转到程序存储器的某一个单元,不论采用哪一种方式,首先必须根据该单元的所在地址,对PCLATH寄存器中的PCLATH04进行预置。这是一件烦琐的工作,因此PIC汇编系统也给出了一个额外的伪指令语句,即页选指令PAGESEL。这样就不需记忆和分析所跳转单元的页面区域。,从以上分析可以看出,跳转到程序存储器的某一个单元,不论采用,例3:,ORG 0100H;PAGE0PAGESEL ABCGOTO ABCORG 1000H;PAGE2ABCMOVLW 00HMOVWF 20H,例3:ORG 0100H;PAGE0,6.4 常用子程序的设计,在程序设计中,除主程序以外,还有一

26、部分很重要的内容就是关于子程序的设计。子程序是为完成特定的目的而构成的复合程序。PIC程序设计同其他单片机一样,子程序的形式较多,但比较有代表性的主要有:,6.4 常用子程序的设计在程序设计中,除主程序以外,还有,跳转和循环子程序;软件延时子程序;数据查表子程序;分支功能跳转子程序;常用数学运算子程序等。,跳转和循环子程序;,6.4.1 跳转和循环子程序,跳转和循环子程序主要由跳转、判断和位测试指令来构成。1、跳转指令CALL 调用子程序指令GOTO 无条件转移,6.4.1 跳转和循环子程序跳转和循环子程序主要由跳转、,两条指令的特点是附带的操作数为跳转方向的低11位绝对地址,所以在使用时要注

27、意跳转地址的页面选择。一旦确定目标地址已超出2KB的范围,必须要预先设置PCLATH34或者安排PAGESEL伪指令。,两条指令的特点是附带的操作数为跳转方向的低11位绝对地址,,2、判断指令判断功能主要适用于增量和减量的操作;数据存储器的每个单元都可以作为增量或减量的操作对象;作为增量或减量的操作对象一旦发现为0时,产生间跳。,2、判断指令,由判断指令产生的跳转是相对地址的间跳,即跳过下一条指令。而留给操作单元结果不为0时,书写指令的空间只有一条,一般在此设计一条跳转指令。,由判断指令产生的跳转是相对地址的间跳,即跳过下一条指令。,例6-5,假定执行某个显示功能100次后结束工作,显示子程序

28、为XSH。程序如下:ORG 0000HMOVLWD101;取常数101MOVWF20H,例6-5假定执行某个显示功能100次后结束工作,显示子程序,LOOPDECFSZ 20H,F;20H单元减一,为0间跳GOTORRT;未到100次,跳转显示GOTOPPY;100次结束RRT PAGESEL XSH;定位页面到显示子程序XSH,LOOPDECFSZ 20H,F,CALL XSH;调用显示子程序XSHPAGESEL LOOP;重新定位页面到LOOP,即第0页 GOTO LOOP;返回继续执行减1操作 PPY END,CALL,在本例中,跳转入口地址RRT和PPY是不会超出第0页2K的范围,所以

29、无须改变页面的选择。而要求显示子程序XSH,在程序中没有给出,可能会超出第0页的范围,所以必须通过设置以保证跳转的正确性。同样,XSH可能为非0页范围,一旦进入这个页面后再执行第0页范围内的跳转,而且必须重新设置返回到第0页。,在本例中,跳转入口地址RRT和PPY是不会超出第0页2K的,3、位测试指令主要用于数据存储器单元位的测试操作。数据存储器中每一个单元都可以作为位测试指令的操作对象,可以测试给定单元是否为0或为1而产生间跳。,3、位测试指令,例6-6,比较2个数据寄存器20H,30H内容的大小,将较大的数送入40H 中。解析:PIC没有现成的比较指令。要比较2个寄存器内容的大小,必须借助

30、于W寄存器进行减法操作,然后根据Z标志和C标志进行条件判断。,例6-6比较2个数据寄存器20H,30H内容的大小,将较大,MOVF 30H,W;30H内容送入WSUBWF 20H,W;(20H)与W相减后送入WBTFSC STATUS,C;判断是否借位GOTO L20;无借位,(20H)(30H)MOVF 30H,W;(20H)(30H),MOVF 30H,W;30H内容送入W,MOVWF 40H;较大的数送入40HGOTO POPL20 MOVF 20H,W;(20H)(30H)MOVWF 40H;较大的数送入40HPOP END;子程序结束,MOVWF 40H;较大的数送入40H,6.4.

31、2 软件延时子程序,在程序设计中,单片机的延时程序很重要。延时的设计,一般可以通过2种方式:硬件延时和软件延时。硬件延时精确,是由单片机系统的定时器实现;软件延时用于粗略延时,是通过循环程序实现。根据时间长短的要求有单循环、双循环、三循环。,6.4.2 软件延时子程序在程序设计中,单片机的延时程,例题6-8,请编写10ms软件延时子程序。解析:在键盘监控管理程序中,为了防止接触点的弹跳和振动,必须要用到一个接近10ms的延时子程序。该程序采用双循环结构来实现,循环参数分别为0DH和0FFH。,例题6-8请编写10ms软件延时子程序。,按键去抖处理,按键实际就是一种常用的按钮开关,平时键的两个触

32、点处于断开状态,按键被按下时,两个触点闭合。由于键盘上的按键都是利用机械触点来实现键的闭合和释放。由于弹性作用的影响,机械触点在闭合及断开瞬间均有抖动过程,从而使键输入电压信号也出现抖动。,按键去抖处理按键实际就是一种常用的按钮开关,平时键的两个触,键输入波形,稳定时间,键输入波形稳定时间抖动时间抖动时间,如上图所示,抖动时间t1与t3的长短与机械特性有关,一般为510ms。按键的稳定闭合时间t2由操作人员的按键动作所确定,一般为几百毫秒至几秒。为了保证系统对按键的一次闭合仅作一次键输入处理,必须消抖处理。,如上图所示,抖动时间t1与t3的长短与机械特性有关,一般为,一般可以用硬件或软件的办法

33、来消抖,具体有如下方式:1、双稳态消抖电路2、滤波消抖电路3、软件消抖,一般可以用硬件或软件的办法来消抖,具体有如下方式:,软件消抖,所谓软件消抖,就是在第一次检测到有键按下时先不动作,延时一段时间(一般为10ms),再次检测按键的状态,如果仍保持闭合状态,则确认的确有键按下。当检测到按键释放后,也要给5ms10ms的延时,待后沿抖动消失后才能转入按键的处理程序。,软件消抖所谓软件消抖,就是在第一次检测到有键按下时先不动作,程序流程框图,程序流程框图,ORG 1000HDEL10MSMOVLW0DH;外循环常数 MOVWF20H;外循环寄存器LOOP1MOVLW0FFH;内循环常数MOVWF2

34、0H;内循环寄存器LOOP2 DECFSZ21H;内循环寄存器 递减GOTO LOOP2;继续内循环DECFSZ20H;外循环寄存器递减GOTO LOOP1;继续外循环RETURN,ORG 1000H,6.4.3 数据查表子程序,数据查表子程序在某些特殊场合是非常有用的,如LED七段数码显示器。LED七段数码显示器由8个发光二极管组成显示字段,根据内部发光二极管的连接形式不同,LED有共阴极和共阳极两种。,6.4.3 数据查表子程序数据查表子程序在某些特殊场合,为了显示数字或符号,要为LED显示器提供代码,因为这些代码与要显示的字形相对应,因此称之为字形码。LED七段数码显示器符号及引脚配置如

35、下图所示:,为了显示数字或符号,要为LED显示器提供代码,因为这些代码,LED七段数码显示器符号及引脚配置,LED七段数码显示器符号及引脚配置gafdcbe10,LED发光二极管显示字段码,共阴极,阴极接地,每段阳极接高电平,即逻辑“1”点亮,LED发光二极管显示字段码begafdcbcdefggafd,LED七段数码显示器共有8个发光二极管,需要一个8位端口去控制,因此提供给LED的字形码也是8位的。假设LED七段数码显示器各字段与控制端口位的对应关系如下表:,LED七段数码显示器共有8个发光二极管,需要一个8位端口去,控制端口位D7D6D5D4D3D2D1D0字段名dpgfed,共阴极LED七段数码显示器字形代码表,共阴极LED七段数码显示器字形代码表字形显示编码字形显示编码,共阳极LED七段数码显示器字形代码表,字形显示编码字形显示编码0C0H990H1F9HA88H2A,例6-11,将RC端口与8个LED 发光二极管相连,按照如下表所列的跑马灯流动显示,间隔时间1S。请编写相应的软件程序。,例6-11将RC端口与8个LED 发光二极管相连,,序号显示内容16进制序号显示内容16进制0000000000,显示规律如图,如此循环往复,RC0,RC1,RC2,RC3,RC6,RC4,RC5,RC7,显示规律如图如此循环往复RC0RC1RC2RC3RC6RC4,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号