PIC单片机原理及应用(第五章).ppt

上传人:1595****071 文档编号:71843059 上传时间:2023-02-06 格式:PPT 页数:61 大小:208.50KB
返回 下载 相关 举报
PIC单片机原理及应用(第五章).ppt_第1页
第1页 / 共61页
PIC单片机原理及应用(第五章).ppt_第2页
第2页 / 共61页
点击查看更多>>
资源描述

《PIC单片机原理及应用(第五章).ppt》由会员分享,可在线阅读,更多相关《PIC单片机原理及应用(第五章).ppt(61页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 PICPIC单单片片机机指指令令系系统统和和其其它它单单片片机机一一样样,是是较较为为低低级级的的语语言言系系统统,是是一一套套控控制制和和指指挥挥CPUCPU工作的编码,即机器语言。工作的编码,即机器语言。单单片片机机只只能能识识别别和和执执行行由由二二进进制制数数组组成成的的机机器器语语言言,然然而而,这这样样一一种种二二进进制制代代码码的的机机器器语言是很难为人们直接理解和分析。语言是很难为人们直接理解和分析。为为了了能能较较好好表表达达人人们们的的设设计计思思路路,便便于于记记忆忆和和使使用用,人人们们在在低低级级语语言言之之上上设设计计出出一一种种新新的符号语言,即的符号语言,即汇

2、编语言汇编语言。汇编语言是机器语言的符号表达。汇编语言是机器语言的符号表达。第第6 6章章 汇编语言程序设计汇编语言程序设计 根根据据指指令令的的功功能能和和作作用用,只只有有操操作作码码是是必必须须存存在在的的,它它主主要要决决定定了了指指令令的的操操作作性性质质。而而其其它它部部分分是是指指令令语语句句的的重重要要补补充充和和说说明明,有有时可以缺省。时可以缺省。6.1 6.1 汇编语言指令格式汇编语言指令格式 标标号号位位于于指指令令助助记记符符前前面面,它它一一般般是是用用于于表表示示指指令令所所在在的的地地址址,例例如如表表示示主主程程序序或或子程序的起始地址、转移语句的入口地址等。

3、子程序的起始地址、转移语句的入口地址等。在在程程序序汇汇编编时时,将将该该指指令令机机器器码码所所在在程程序存储器中的地址赋值给标号。序存储器中的地址赋值给标号。1.1.标号标号 标标号号并并不不是是指指令令的的必必须须部部分分,只只有有那那些些欲欲被被其其他他语语句句引引用用的的指指令令之之前前,才才必必须须附附加加标标号号。标标号号不不一一定定和和语语句句同同行行,可可以以单单独独在在语语句句上上方作为一行使用。方作为一行使用。标标号号最最多多可可以以由由3232个个字字母母、数数字字和和其其它它一一些些字字符符组组成成,但但第第一一个个字字符符必必须须是是字字母母或或下下划划线线。标标号

4、号不不能能用用系系统统保保留留字字,即即系系统统禁禁用用指指令令助助记记符符、寄寄存存器器名名、标标志志符符等等作作为为标标号号,如:如:ADDADD、PCLATHPCLATH等。等。使用标号的要点是:使用标号的要点是:一一个个标标号号只只能能表表示示一一个个地地址址,不不允允许许多多个个地地址用一个标号重复定义。址用一个标号重复定义。标标号号的的定定义义和和引引用用必必须须一一致致,其其中中的的大大小小写写可以混写但必须相同。可以混写但必须相同。标号必须顶格书写标号必须顶格书写,结束不用冒号。,结束不用冒号。操操作作码码决决定定着着指指令令的的操操作作类类型型和和操操作作性性质质,是是汇汇编

5、编语语言言语语句句中中的的核核心心要要素素,每每一一条条汇汇编编指指令令都都不不可可缺缺少少,而而其其它它三三部部分分有有些些指令可以缺省。指令可以缺省。2.2.操作码操作码 操操作作码码所所对对应应的的指指令令助助记记符符,其其中中的的符符号号大大小小写写可可以以混混写写,而而不不会会影影响响操操作作码码的的含含意意,这这一一点点和和标标号号、操操作作数数符符号号变变量量的的表表达达方方式式是有本质区别。是有本质区别。指指令令助助记记符符不不能能顶顶格格书书写写,当当前前面面没没有有标标号号时,必须至少保留一个空格。时,必须至少保留一个空格。操操作作码码核核心心助助记记符符部部分分比比较较简

6、简单单,初初学学者者必必须熟悉复合助记符部分的功能。须熟悉复合助记符部分的功能。有关操作码(指令助记符)的要点是:有关操作码(指令助记符)的要点是:在在PICPIC汇汇编编语语言言语语句句中中,操操作作数数的的形形式式和和内内容容最最为为丰丰富富,它它是是指指令令助助记记符符操操作作的的对对象象,一一般般以以数数据据或或地地址址的的形形式式出出现现,也也可可以以用符号变量所表示的数据或地址。用符号变量所表示的数据或地址。3.3.操作数操作数 使用操作数的要点是:使用操作数的要点是:若操作数有二项,中间用若操作数有二项,中间用逗号(半角)逗号(半角)分开。分开。以以A A、B B、C C、D D

7、、E E、F F开开头头的的数数,前前面面应应加加0 0作作为引导。为引导。MPASMMPASM编编辑辑环环境境默默认认进进制制为为十十六六进进制制,也也可可按按用户需要进行重新设置。用户需要进行重新设置。操作数部分的符号变量必须区分大小写。操作数部分的符号变量必须区分大小写。重重视视d d参参数数的的应应用用,目目标标地地址址为为:F F(d=1d=1);W W(d=0d=0)。)。各种进制各种进制168168的表示形式的表示形式 注注释释内内容容用用分分号号引引出出,是是汇汇编编语语言言语语句句功功能能的的一一种种补补充充说说明明,主主要要是是便便于于人人们们阅阅读读、分析、修改和调试程序

8、。分析、修改和调试程序。4.4.注释注释 用用分分号号(半半角角)引引出出注注释释内内容容,可可以以紧紧跟跟指指令令之之后后,也也可可以以独独立立一一行行或或多多行行书书写写,但但每每一一行行均需由分号引出。均需由分号引出。注注释释内内容容可可以以英英文文书书写写,也也能能用用中中文文书书写写(来来源于文本编辑内容)。源于文本编辑内容)。使用注释的要点是:使用注释的要点是:各各种种单单片片机机的的汇汇编编程程序序除除了了指指令令系系统统语语句句(PIC16F877PIC16F877共共3535条条)以以外外,一一般般都都还还定定义义许许多多非非正正式式指指令令的的语语句句,即即伪伪指指令令。大

9、大多多数数伪伪指指令令汇汇编编时时并并不不产产生生机机器器码码,仅仅为为源源程程序序提供汇编控制信息提供汇编控制信息。6.2 6.2 系统伪指令系统伪指令 格式:格式:ORG nnnn 说说明明:ORG伪伪指指令令指指出出紧紧跟跟在在该该伪伪指指令令后后的的机机器器码码指指令令的的汇汇编编地地址址,即即经经汇汇编编后后生生成成的的机机器器码码目目标标程程序序或或数数据据块块在在单单片片机机程程序序存存储器中的储器中的起始存放地址起始存放地址。1.1.定位伪指令:定位伪指令:ORGORG(OriginOrigin)例题例题6-16-1以下三个程序段的含义是一样的。以下三个程序段的含义是一样的。;

10、程序段程序段1 1;ORGORG0008H0008H;常数常数0008H0008HSTARTSTARTMOVLWMOVLW00H00H;程序段程序段2 2;ABCABCEQUEQU0008H0008HORGORGABCABC;标识符标识符ABCABC即即0008H0008HSTARTSTARTMOVLWMOVLW00H00H;程序段程序段3 3;ABCABCEQUEQU0004H0004HORGORGABC+4ABC+4;代数表达式即代数表达式即0008H0008HSTARTSTARTMOVLWMOVLW00H00H 格式:符号名格式:符号名 EQU EQU nnnn 说说明明:EQUEQU伪

11、伪指指令令几几乎乎每每一一个个程程序序中中都都用用到到,其其操操作作含含意意是是使使EQUEQU两两端端的的值值相相等等。一一般般在在PICPIC的的程程序序设设计计中中,原原则则上上每每次次遇遇到到新新的的符符号号参参数数,都都必必须须在在前前面面定定义义符符号号名名的的初初始始数数值或存储器地址。值或存储器地址。符符号号名名一一旦旦被被EQUEQU赋赋值值,其其值值便便不不能能被被再再重重新新定定义义。这这里里的的符符号号名名,既既可可以以是是PICPIC中中的的特特殊殊功功能能寄寄存存器器、一一个个常常数数,或或者者是是表表示示一一个通用数据存储器地址个通用数据存储器地址。2.2.赋值伪

12、指令:赋值伪指令:EQUEQU(EquateEquate)实际上对于伪指令:实际上对于伪指令:ABC EQUABC EQU 20H20H,其其中中ABCABC既既可可以以认认为为是是符符号号变变量量,因因为为ABCABC可可以以代代表表20H20H地地址址;又又可可以以认认为为是是符符号号常常量量,因因为为ABCABC可以代表立即数可以代表立即数20H20H。所所以以对对于于一一个个定定义义的的符符号号量量,应应结结合合引引用用的指令的指令进行分析才能真正确定符号量的类型。进行分析才能真正确定符号量的类型。分析分析 ABC EQUABC EQU 20H 20H【例例题题6-26-2】正正确确区

13、区别别符符号号变变量量和和符符号号常常量量之之间的关系。间的关系。ABCABCEQU 20HEQU 20H ;定义符号量定义符号量ABCABC ORG 0000HORG 0000H NOPNOPMOVLW 77HMOVLW 77HMOVWF 20HMOVWF 20HMOVLW 88HMOVLW 88HMOVF ABC,0MOVF ABC,0;ABCABC为符号变量为符号变量MOVLW ABC MOVLW ABC ;ABCABC为符号常量为符号常量NOPNOP END END 在在符符号号名名定定义义和和引引用用过过程程中中,必必须须保保证证大小写属性的一致大小写属性的一致,注意不能混合使用。,

14、注意不能混合使用。如果有定义:如果有定义:ABC EQUABC EQU 20H20H 在在引引用用符符号号名名ABCABC时时,不不能能改改变变其其大大小小写写的的属属性性,即即AbcAbc、aBCaBC或或ABcABc与与ABCABC是是不不一一样样的,在汇编时均会发生出错信息。的,在汇编时均会发生出错信息。格式:格式:ENDEND 说说明明:ENDEND伪伪指指令令表表示示汇汇编编语语言言源源程程序序(*.ASM.ASM)的的结结束束,MPASMMPASM汇汇编编器器汇汇编编时时遇遇到到ENDEND就就认认为为程程序序已已结结束束,对对其其后后的的程程序序段段不不再再进行汇编。进行汇编。3

15、.3.程序结束伪指令:程序结束伪指令:ENDEND 格式:格式:LIST LIST 可选项,可选项,可选项,可选项,说说明明:LISTLIST伪伪指指令令用用于于设设置置各各种种汇汇编编参参数数,以以便便控控制制整整个个汇汇编编过过程程或或对对打打印印输输出出的的列列表表文文件进行格式化。件进行格式化。1 1)P P 例如:例如:P P16F87716F877 2 2)R R 例如:例如:R RDECDEC(十进制);十进制);R RHEXHEX(十六进制);十六进制);R RBINBIN(二进制);二进制);默认为十六进制。默认为十六进制。4.4.列表选项伪指令:列表选项伪指令:LISTLI

16、ST 格式:格式:INCLUDE“INCLUDE“文件名文件名”说说明明:INCLUDEINCLUDE伪伪指指令令的的主主要要功功能能是是将将外外部部预预先先编编写写好好的的指指定定文文件件纳纳入入本本源源程程序序的的汇汇编编内内容容,这这样样可可以以减减少少重重复复劳劳动动,提提高高编编程程效率。效率。如如:P16F877.INCP16F877.INC为为PIC16F877PIC16F877单单片片机机的的复复位位矢矢量量、专专用用寄寄存存器器的的地地址址及及其其控控制制位位和和状状态态位位的的位位地地址址的的原原始始定定义义,有有些些参参考考书书把把P16F877.INCP16F877.I

17、NC称为称为PIC16F877PIC16F877的头文件的头文件。5.5.外调程序伪指令:外调程序伪指令:INCLUDEINCLUDE 6.6.定义数据伪指令定义数据伪指令DBDBDBDB(DWDWDWDW、DEDEDEDE、DATADATADATADATA)表达式表达式表达式表达式,表达式表达式表达式表达式,例题例题例题例题6-36-36-36-3 ORGORGORGORG 0000H0000H0000H0000H NOPNOPNOPNOP ORGORGORGORG 0100H0100H0100H0100H DBDBDBDB45H,67H,89H,0ABH,0CDH,0EFH45H,67H,

18、89H,0ABH,0CDH,0EFH45H,67H,89H,0ABH,0CDH,0EFH45H,67H,89H,0ABH,0CDH,0EFH;定义定义定义定义6 6 6 6个字节数据个字节数据个字节数据个字节数据 ORGORGORGORG 0200H0200H0200H0200H DBDBDBDB4567H,89ABH,0CDEFH4567H,89ABH,0CDEFH4567H,89ABH,0CDEFH4567H,89ABH,0CDEFH;定义定义定义定义6 6 6 6个字节数据个字节数据个字节数据个字节数据 ORGORGORGORG 0300H0300H0300H0300H DBDBDBDB

19、A,B,C,D,E,F,GA,B,C,D,E,F,GA,B,C,D,E,F,GA,B,C,D,E,F,G;定义定义定义定义6 6 6 6个字符数据个字符数据个字符数据个字符数据 ORGORGORGORG 0400H0400H0400H0400H DBDBDBDBABCDEFGABCDEFGABCDEFGABCDEFG;定义定义定义定义1 1 1 1个字符串数据个字符串数据个字符串数据个字符串数据 ENDENDENDEND注:注:注:注:建议使用建议使用建议使用建议使用DEDEDEDE定义数据定义数据定义数据定义数据,可以定义,可以定义,可以定义,可以定义单字节数据单字节数据单字节数据单字节数据

20、、单字节字单字节字单字节字单字节字符符符符和和和和字符串字符串字符串字符串。格式:格式:RADIX RADIX 说说明明:RADIXRADIX伪伪指指令令用用于于设设置置在在MPLAB-MPLAB-ICDICD集集成成开开发发环环境境中中采采用用的的进进制制方方式式,如如定定义义十十进进制制、八八进进制制和和十十六六进进制制等等参参数数,MPLAB-MPLAB-ICDICD集成开发系统缺省为十六进制。集成开发系统缺省为十六进制。例如:例如:RADIX DEC RADIX DEC ;定义为十进制定义为十进制 RADIX HEX RADIX HEX ;定义为十六进制定义为十六进制 RADIX OC

21、T RADIX OCT ;定义为八进制定义为八进制7.7.进制定义伪指令:进制定义伪指令:RADIXRADIX 8.8.体选伪指令体选伪指令 BANKSELBANKSEL BANKSEL ABC BANKSEL ABC MOVLW 00H MOVLW 00H MOVWF ABC MOVWF ABC9.9.页选伪指令页选伪指令 PAGESELPAGESEL PAGESEL DEL10MS PAGESEL DEL10MS CALL DEL10MS CALL DEL10MS6.3 6.3 存储器选择方式存储器选择方式1.1.数据存储器体选方式数据存储器体选方式直接寻址访问数据存储器直接寻址访问数据存

22、储器7+27+2模式模式间接寻址访问数据存储器间接寻址访问数据存储器8+18+1模式模式 在在直直接接寻寻址址中中,体体选选码码来来自自状状态态寄寄存存器器STATUSSTATUS的的RP1RP1和和RPORPO位位,体体内内的的单单元元地地址址直直接接来来自自指指令令机机器器码码。而而在在间间接接寻寻址址中中,体体选选码码由由STATUSSTATUS的的IRPIRP位和位和FSRFSR寄存器的寄存器的BIT7BIT7组成。组成。直接寻址直接寻址/间接寻址方式的示意图间接寻址方式的示意图 2.2.程序存储器页选方式程序存储器页选方式6 6种途径种途径(1 1)复位地址)复位地址0000H000

23、0H;(2 2)中断地址)中断地址0004H0004H;(3 3)指令寄存器;)指令寄存器;(4 4)执行以)执行以PCLPCL为目的地址的指令;为目的地址的指令;(5 5)转移指令方式,)转移指令方式,GOTOGOTO指令;指令;(6 6)调用子程序方式,)调用子程序方式,CALLCALL指令。指令。(1 1)、()、(2 2)、()、(3 3)PCPC自动形成;自动形成;(4 4)、()、(5 5)、()、(6 6)PCPC需要装载。需要装载。例题例题6-46-4LISTLIST P=16F877P=16F877;PAGESEL;PAGESELINCLUDEP16F877.INCINCLU

24、DEP16F877.INC;COUNTERCOUNTEREQUEQU30H30H;查表偏移量查表偏移量ORGORG0000H0000HNOPNOPMOVLWMOVLW20H20H;数据存储器起始地址数据存储器起始地址MOVWFMOVWFFSRFSRCLRFCLRFCOUNTERCOUNTER;查表偏移量置查表偏移量置0 0LOOPLOOP MOVFMOVFCOUNTER,WCOUNTER,WCALLCALLCHABIAOCHABIAO;调用查表子程序调用查表子程序MOVWFMOVWFINDFINDF;送入数据存储器送入数据存储器INCFINCFCOUNTERCOUNTER;指向下一偏移量指向下

25、一偏移量INCFINCFFSRFSR;指向下一数据存储器指向下一数据存储器BTFSSBTFSSCOUNTER,4COUNTER,4;是否已取是否已取1616个数据个数据GOTOGOTOLOOPLOOP;否,继续否,继续GOTOGOTO$;是,停止是,停止查表子程序查表子程序;CHABIAOCHABIAOADDWFADDWFPCL,FPCL,F;增加偏移量增加偏移量RETLWRETLW00H00H;第第0 0个数据个数据RETLWRETLW01H01H;第第1 1个数据个数据RETLWRETLW02H02H;第第2 2个数据个数据RETLWRETLW03H03H;第第3 3个数据个数据RETLW

26、RETLW04H04H;第第4 4个数据个数据RETLWRETLW05H05H;第第5 5个数据个数据RETLWRETLW06H06H;第第6 6个数据个数据RETLWRETLW07H07H;第第7 7个数据个数据RETLWRETLW08H08H;第第8 8个数据个数据RETLWRETLW09H09H;第第9 9个数据个数据RETLWRETLW0AH0AH;第第1010个数据个数据RETLWRETLW0BH0BH;第第1111个数据个数据RETLWRETLW0CH0CH;第第1212个数据个数据RETLWRETLW0DH0DH;第第1313个数据个数据RETLWRETLW0EH0EH;第第14

27、14个数据个数据RETLWRETLW0FH0FH;第第1515个数据个数据;ENDEND 在在程程序序设设计计中中,除除主主程程序序以以外外还还有有一一部部分分很很重重要要的的内内容容就就是是关关于于子子程程序序的的设设计计,它它是是为完成特定的目的而构成的复合程序为完成特定的目的而构成的复合程序。6.4 6.4 常用子程序的设计常用子程序的设计 转转移移和和循循环环程程序序,主主要要是是通通过过跳跳转转、判判断和位测试断和位测试指令来构成的。指令来构成的。1.1.跳转指令跳转指令 GOTOGOTO;2.2.判断指令判断指令 INCFSZINCFSZ、DECFSZDECFSZ;3.3.位测试指

28、令位测试指令 BTFSSBTFSS、BTFSCBTFSC。6.4.1 6.4.1 跳转和循环子程序跳转和循环子程序 【例例题题6-56-5】假假定定执执行行某某个个显显示示功功能能100100次次后后结结束束工工作作,显示子程序为显示子程序为XSHXSH。ORGORG 0000H 0000HMOVLWMOVLW D101D101MOVWFMOVWF 20H20HLOOPLOOP DECFSZDECFSZ20H,F20H,FGOTOGOTORRTRRTGOTOGOTOPPYPPYRRTRRT PAGESELPAGESELXSHXSHCALLCALLXSHXSHPAGESELPAGESELLOOP

29、LOOPGOTOGOTOLOOPLOOPPPYPPY ENDEND【例例题题6-66-6】比比较较两两个个数数据据寄寄存存器器20H20H和和30H30H内内容容的大小,将较大的数送入的大小,将较大的数送入40H40H中。中。MOVFMOVF30H,W30H,WSUBWFSUBWF 20H,W20H,WBTFSCBTFSC STATUSSTATUSGOTOGOTOL20HL20HMOVFMOVF30H,W30H,WMOVWFMOVWF 40H40HGOTOGOTOPOPPOPL20HL20H MOVFMOVF20H,W20H,WMOVWFMOVWF 40H40HPOPPOP ENDEND 单单

30、片片机机的的延延时时程程序序,在在程程序序设设计计中中具具有有很很重重要要的的地地位位。延延时时的的设设计计,一一般般可可以以通通过过两两种种方式:方式:硬件延时和软件延时硬件延时和软件延时。所所谓谓硬硬件件延延时时,就就是是由由单单片片机机系系统统的的定定时时器器实实现现;而而软软件件延延时时,是是通通过过循循环环程程序序实实现现。一一般般来来说说,前前者者适适用用于于精精确确定定量量延延时时,而而后后者者常用于初略定性延时。常用于初略定性延时。6.4.2 6.4.2 软件延时子程序软件延时子程序 【例题例题6-76-7】简单循环的软件延时子程序。简单循环的软件延时子程序。;软件延时子程序软

31、件延时子程序DELAYDELAY;COUNTERCOUNTEREQUEQU20H20HORGORG1000H1000HDELAYDELAYMOVLWMOVLW 0FFH0FFHMOVWFMOVWF COUNTERCOUNTERLOOPLOOPDECFSZDECFSZCOUNTERCOUNTERGOTOGOTOLOOPLOOPRETURNRETURN【例题例题6-86-8】请编写请编写10MS10MS软件延时子程序。软件延时子程序。ORGORG0000H0000HDEL10MSDEL10MSMOVLWMOVLW 0DH0DHMOVWFMOVWF 20H20HLOOP1LOOP1MOVLWMOVL

32、W 0FFH0FFHMOVWFMOVWF 21H21HLOOP2LOOP2DECFSZDECFSZ21H21HGOTOGOTOLOOP2LOOP2DECFSZDECFSZ20H20HGOTOGOTOLOOP1LOOP1RETURNRETURN【例题例题6-96-9】请编写请编写1S1S软件延时子程序。软件延时子程序。;1s;1s软件延时子程序软件延时子程序DELAY1SDELAY1SDELAY1SDELAY1SMOVLWMOVLW 06H06HMOVWFMOVWF 20H20HLOOP1LOOP1MOVLWMOVLW 0EBH0EBHMOVWFMOVWF 21H21HLOOP2LOOP2MOV

33、LWMOVLW 0ECH0ECHMOVWFMOVWF 22H22HLOOP3LOOP3DECFSZDECFSZ22H22HGOTOGOTOLOOP3LOOP3DECFSZDECFSZ21H21HGOTOGOTOLOOP2LOOP2DECFSZDECFSZ20H20HGOTOGOTOLOOP1LOOP1RETURNRETURN 数数据据查查表表子子程程序序在在某某些些特特殊殊场场合合是是非非常常有有用用的的,如如共共阴阴极极LEDLED八八段段显显示示器器以以及及其其它它具具有有固固定定显显示示模模式式的的场场合合,需需根根据据其其显显示示数数值去查找对应参考数据库编码输出。值去查找对应参考数据

34、库编码输出。6.4.3 6.4.3 数据查表子程序数据查表子程序 【例例题题6-106-10】将将RCRC端端口口与与共共阴阴极极LEDLED八八段段显显示示器器相相连连,从从0 09 9循循环环显显示示,间间隔隔时时间间为为1 1秒秒,请请编编写相应的软件程序。写相应的软件程序。八段显示数值(八段显示数值(0-90-9)编码)编码 PICPIC单片机架构单片机架构单片机架构单片机架构PCPC相对寻址相对寻址相对寻址相对寻址 查表实例查表实例查表实例查表实例MOVLWMOVLWHIGH DECODEHIGH DECODEMOVWFMOVWFPCLATHPCLATHMOVF MOVF DISPL

35、AYVALUE,WDISPLAYVALUE,WCALLCALLDECODEDECODEMOVWFMOVWFPORTBPORTBGOTOGOTOCONTINUECONTINUEDECODEDECODEADDWFADDWFPCL,FPCL,FRETLWRETLWB00111111;DECODE 0B00111111;DECODE 0RETLWRETLWB00000110;DECODE 1B00000110;DECODE 1RETLWRETLWB01011011;DECODE 2B01011011;DECODE 2RETLWRETLWB01001111;DECODE 3B01001111;DECOD

36、E 3RETLWRETLWB01100110;DECODE 4B01100110;DECODE 4RETLWRETLWB01101101;DECODE 5B01101101;DECODE 5RETLWRETLWB01111101;DECODE 6B01111101;DECODE 6RETLWRETLWB00000111;DECODE 7B00000111;DECODE 7RETLWRETLWB01111111;DECODE 8B01111111;DECODE 8RETLWRETLWB01101111;DECODE 9B01101111;DECODE 9CONTINUECONTINUEb be

37、eg ga af fd dc cRB0RB1RB2RB3RB4RB5RB6bcdefgW W W W 寄存器寄存器寄存器寄存器I/O BI/O BI/O BI/O B口口口口g ga af fd dc cb be e【例例题题6-116-11】将将RCRC端端口口与与八八个个LEDLED显显示示器器相相连连,请请按按照照表表6-46-4即即跑跑马马灯灯流流动动显显示示方方式式,间间隔隔时时间间为为1 1秒秒,请请编编写相应的软件程序。写相应的软件程序。ABCABCEQUEQU20H20HTRISCTRISC EQUEQU03H03HPORTCPORTC EQUEQU87H87HSTATUSST

38、ATUSEQUEQU07H07H;主程序主程序ORGORG0000H0000HNOPNOPBSFBSFSTATUS,RP0STATUS,RP0MOVLWMOVLW00H00HMOVWFMOVWFTRISCTRISCBCFBCFSTATUS,RP0STATUS,RP0MAINMAINMOVLWMOVLW00H00HMOVWFMOVWFABCABCMOVLWMOVLW00H00HMOVWFMOVWFPORTCPORTCSTSTMOVFMOVFABC,WABC,WCALLCALLSHUZHSHUZHMOVWFMOVWFPORTCPORTCCALLCALLDELAY1SDELAY1SINCFINCFA

39、BC,FABC,FBTFSSBTFSSABC,4ABC,4GOTOGOTOSTSTGOTOGOTOMAINMAIN;查表子程序查表子程序SHUZHSHUZHADDWFADDWFPCL,FPCL,FRETLWRETLW00H00HRETLWRETLW01H01HRETLWRETLW03H03HRETLWRETLW07H07HRETLWRETLW0FH0FHRETLWRETLW1FH1FHRETLWRETLW3FH3FHRETLWRETLW7FH7FHRETLWRETLW0FFH0FFHRETLWRETLW0FEH0FEHRETLWRETLW0FCH0FCHRETLWRETLW0F8H0F8HRE

40、TLWRETLW0F0H0F0HRETLWRETLW0E0H0E0HRETLWRETLW0C0H0C0HRETLWRETLW080H080HDELAY1SDELAY1S;1s;1s延时子程序延时子程序ENDEND 在在PICPIC指指令令系系统统中中并并没没有有类类似似的的语语句句,但但如如果果借借助助于于PICPIC单单片片机机指指令令的的特特殊殊功功能能,同同样样可以轻松地构成分支跳转。可以轻松地构成分支跳转。分分支支跳跳转转实实际际上上是是多多条条件件判判断断指指令令,条条件件本本身身是是一一个个整整数数或或事事件件,而而跳跳转转出出口口应应该该是是整整数数的的信信息息返返回回或或事事件

41、件功功能能内内容容的的具具体体表表现。现。在在程程序序形形式式上上,分分支支功功能能跳跳转转子子程程序序与与数数据据查查表表子子程程序序的的结结构构类类似似,只只是是它它是是用用GOTOGOTO语句替代了语句替代了RETLWRETLW语句。语句。6.4.4 6.4.4 分支功能跳转子程序分支功能跳转子程序 假定假定W W为某个按键的输入值为某个按键的输入值JIANGN ADDWF PCLJIANGN ADDWF PCL,F F ;确定相对偏移量确定相对偏移量GOTO PKEY0GOTO PKEY0 ;执行执行PKEY0PKEY0键盘定义功能键盘定义功能GOTO PKEY1GOTO PKEY1

42、;执行执行PKEY1PKEY1键盘定义功能键盘定义功能GOTO PKEY2GOTO PKEY2 ;执行执行PKEY2PKEY2键盘定义功能键盘定义功能 .GOTO GOTO PKEYN PKEYN ;执行执行PKEYNPKEYN键盘定义功能键盘定义功能 例题例题6-136-13编写编写N N个键盘功能选择子程序。个键盘功能选择子程序。ORGORG1000H1000HPAGESELPAGESELKEYKEYCALLCALLKEYKEYPAGESELPAGESELJIANGNJIANGNCALLCALLJIANGNJIANGN;根据键入情况,确定相应键功能子程序根据键入情况,确定相应键功能子程序;

43、JIANGNJIANGNADDWFADDWFPCL,FPCL,FGOTOGOTOPKEY0PKEY0GOTOGOTOPKEY1PKEY1GOTOGOTOPKEY2PKEY2GOTOGOTOPKEYN-1PKEYN-1 本本节节给给出出一一些些常常用用的的数数学学运运算算类类子子程程序序,主主要要有有加加、减减、乘乘、除除等等子子程程序序,还还有有为为外外扩扩系系统统设设计计中中的的数数码码显显示示所所需需的的BCDBCD码码和和二二进进制数据的互换子程序。制数据的互换子程序。均均涉涉及及入入口口条条件件及及出出口口条条件件,在在调调用用时时务务必必加加以以注注意意。一一般般入入口口条条件件是是

44、指指参参与与操操作作的的相相关关源源数数据据,用用S1S1、S2S2(sourcesource)等等表表示示,而而操操作作结结果果用用R1R1、R2R2(resultresult)等等表表示示。高高低低8 8位位数数据据分分别别用用H H、L L表表示示,另另外外用用Z Z表表示示中中8 8位数据。位数据。6.4.5 6.4.5 常用数学运算类子程序常用数学运算类子程序 可可 以以 将将 这这 些些 固固 定定 变变 量量 参参 数数 定定 义义 在在PIC16F877PIC16F877的的头头文文件件内内,并并且且单单元元定定义义位位于于映映射射区区域域70H70H7FH7FH,这这样样就就

45、可可以以不不受受程程序序所所在在页页面的影响。面的影响。例题例题6-146-14将两个无符号将两个无符号1616位数相加,编写双精度运算程序。位数相加,编写双精度运算程序。INCLUDEP16F877.INCINCLUDEP16F877.INCS1HS1HEQUEQU50H50HS1LS1LEQUEQU51H51HS2HS2HEQUEQU52H52HS2LS2LEQUEQU53H53HR1HR1HEQUEQU54H54HR1LR1LEQUEQU55H55HORGORG0000H0000HNOPNOPMOVLWMOVLW12H12HMOVWFMOVWFS1HS1HMOVLWMOVLW34H34H

46、MOVWFMOVWFS1LS1LMOVLWMOVLW56H56HMOVWFMOVWFS2HS2HMOVLWMOVLW78H78HMOVWFMOVWFS2LS2LCALLCALLADDXYADDXYGOTOGOTO$;加法子程序加法子程序;ADDXYADDXY MOVFMOVFS1L,WS1L,WADDWFADDWFS2LS2LBTFSCBTFSCSTATUS,CSTATUS,CINCFINCFS2HS2HMOVFMOVFS1H,WS1H,WADDWFADDWFS2HS2HMOVFMOVFS2H,WS2H,WMOVWFMOVWFR1HR1HMOVFMOVFS2L,WS2L,WMOVWFMOVWF

47、R1LR1LRETLWRETLW00H00HENDEND 例题例题6-156-15将两个无符号将两个无符号1616位数相减,编写双精度运算程序。位数相减,编写双精度运算程序。INCLUDEP16F877.INCINCLUDEP16F877.INCS1HS1HEQUEQU50H50HS1LS1LEQUEQU51H51HS2HS2HEQUEQU52H52HS2LS2LEQUEQU53H53HR1HR1HEQUEQU54H54HR1LR1LEQUEQU55H55HORGORG0000H0000HNOPNOPMOVLWMOVLW56H56HMOVWFMOVWFS1HS1HMOVLWMOVLW78H78

48、HMOVWFMOVWFS1LS1LMOVLWMOVLW12H12HMOVWFMOVWFS2HS2HMOVLWMOVLW34H34HMOVWFMOVWFS2LS2LCALLCALLSUBXYSUBXYGOTOGOTO$SUBXYSUBXYCOMFCOMFS2LS2LINCFINCFS2LS2LBTFSCBTFSCSTATUS,ZSTATUS,ZDECFDECFS2HS2HCOMFCOMFS2HS2H;加法程序加法程序;MOVFMOVFS2L,WS2L,WADDWFADDWFS1LS1LBTFSCBTFSCSTATUS,CSTATUS,CINCFINCFS1HS1HMOVFMOVFS2H,WS2H

49、,WADDWFADDWFS1HS1HMOVFMOVFS1H,WS1H,WMOVWFMOVWFR1HR1H;此处和例题;此处和例题1414一样,是不是应该一样,是不是应该是是R2R2?MOVFMOVFS1L,WS1L,WMOVWFMOVWFR1LR1L;此处和例题;此处和例题1414一样,是不是应该一样,是不是应该是是R2R2?RETLWRETLW00H00HENDEND;本实验结果:(本实验结果:(R1H:R1LR1H:R1L)=4444H=4444H;例题例题6-166-16将两个无符号将两个无符号1616位数相乘,编写双精度运算程序。位数相乘,编写双精度运算程序。INCLUDEP16F87

50、7.INCINCLUDEP16F877.INCS1HS1HEQUEQU50H50HS1LS1LEQUEQU51H51HS2HS2HEQUEQU52H52HS2LS2LEQUEQU53H53HR1HR1HEQUEQU54H54HR1LR1LEQUEQU55H55HR2HR2HEQUEQU56H56HR2LR2LEQUEQU57H57HP1HP1HEQUEQU58H58HP1LP1LEQUEQU59H59HCOUNTCOUNTEQUEQU5AH5AHORGORG0000H0000HNOPNOPMOVLWMOVLW12H12HMOVWFMOVWFS1HS1HMOVLWMOVLW34H34HMOVWF

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com