预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10
亲,该文档总共36页,到这已经超出免费预览范围,如果喜欢就直接下载吧~
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第五章MPLAB集成开发系统5.1MPLAB—IDE软件工具5.2创建源程序5.2.1创建项目5.2.2建立源程序文件第六章汇编语言程序设计1标号标号代表指令的符号地址。在程序汇编时,已赋以指令在存储器的具体地址数值。汇编语言中采用符号地址(即标号)是便于查看、修改,尤其是便于指令转移地址的表示。标号是指令格式中的可选项,只有在被其它语句引用时才需派上标号。在无标号的情况下,指令助记符前面必须保留一个或一个以上的空格再写指令助记符。指令助记符不能占用标号的位置,否则该助记符会被汇编程序作标号误处理。书写标号时,规定第一字符必须是字母或半角下划线“—”,它后面可以跟英文和数字字符、冒号(:)等,并可任意组合。再有标号不能用操作码助记符和寄存器的代号表示。标号也可以单独占一行。2操作码助记符该字段是指令的必选项。该项可以是指令助记符,也可以由伪指令及宏命令组成,其作用是在交叉汇编时,“指令操作码助记符”与“操作码表”进行逐一比较,找出其相应的机器码一一代之。3操作数由操作数的数据值或以符号表示的数据或地址值组成。若操作数有两个,则两个操作数之间用逗号(,)分开。当操作数是常数时,常数可以是二进制、八进制、十进制或十六进制数。还可以是被定义过的标号、字符串和ASCⅡ码等。具体表示时,规定在二进制数前冠以字母“B”,例如B’10011100’;八进制数前冠以字母“O”,例如O’257’;十进制数前冠以字母“D”,例如D’122’;十六进制数前冠以“H”,例如H’2F’。在这里PIC8位单片机默认进制是十六进制,在十六进制数之前加上0x,如H’2F’可以写成0x2F。4注释用来对程序作些说明,便于人们阅读程序。注释开始之前用分号(;)与其它部分相隔。当汇编程序检测到分号时,其后面的字符不再处理。值得注意:在用到子程序时应说明程序的入口条件、出口条件以及该程序应完成的功能和作用。6.2PIC汇编语言的伪指令最常用的伪指令介绍(1)INCLODE功能:读入外部源文件格式:INCLUDE<文件名>说明:用于把指定文件读入源程序中作为源程序代码的一部分。文件名必须用双引号或尖括号给出,如果被指定文件非当前工作目录下,则需要指令完整的路径。INCLUDE"PIC16F877A.INC"(2)EQU功能:对标号赋值格式:<标号>EQU<表达式>说明:使EQU两端的8位值相等,即给标号赋予一个特定值或者说是给标号定义一个数值。R0EQU24H;R0~7工作寄存器R1EQU25H;R2EQU26HR3EQU27H(3)#DEFINE功能:定义文本替换标号格式:#DEFINE<名字>[<字符串>]说明:用于定义文本替换标号,在汇编时把源代码中的<名字>替换成<字符串>。#DEFINESCKRC,3;SPI串口时钟线#DEFINESDIRC,4;SPI串口数据输入#DEFINESDORC,5;SPI串口数据输出STATUSEQU03H;状态寄存器#DEFINECSTATUS,0;进位位#DEFINEDCSTATUS,1;辅助进位位#DEFINEZSTATUS,2;零标志#DEFINEPDSTATUS,3;上电标志#DEFINETOSTATUS,4;WDT溢出标志#DEFINERP0STATUS,5;寄存器体选位#DEFINERP1STATUS,6;寄存器体选位#DEFINEIRPSTATUS,7;寄存器体选位(4)ORG功能:存放程序单元的起始地址格式:[标号]ORG<表达式>说明:用于指定该伪指令后面的源程序存放的起始地址,也就是汇编后的机器码目标程序在单片机的程序存储器中开始存放的首地址。ORG0x004(5)END功能:程序结束伪指令格式:END说明:这条伪指令通知汇编器MPASM结束对源程序(.ASM)的汇编,即使在后面还有语句,也将不予继续汇编。6.3.1数据传送程序的设计用直接寻址方式分别向4个存储区的0xB0、0x30、ox130、0x1B0传送数据。;选择存储区0,直接寻址单元0xB0实际对应到0x30单元CLRFSTATUSMOVLW0xF0MOVWF0x30MOVLW0x0FMOVWF0xB0选择存储区1,直接寻址单元0x30实际对应到0xB0单元BSFSTATUS,RP0MOVLW0xF1MOWWF0x30MOVLW0x1FMOVWF0xB06.3.2算术逻辑运算程序的设计1.加、减法运算:例:双字节减法(R0R1)-(R2R3)→(R0R1)MOVFR3,WSUBWFR1,FBTFSSCDECFR0,FMOVFR2,WADDWFR0,WW两为压缩BCD码加1子程序: