PIC8位单片机汇编语言常用指令的识读

合集下载

PIC单片机汇编编程规范

PIC单片机汇编编程规范

PIC单片机汇编编程规范1000字
PIC单片机汇编编程规范
1.注释:注释应该在指令上面且不应该超过一行。

可以使用“;”或“#”来注释指令或者是数据。

注释应该清晰明了,简短明了,并且应该遵循英文语法规则。

2.代码布局:代码应该分成模块或者函数,每个模块或函数应该有一个标签或标识符以及该模块或函数的注释。

代码应该根据它们的功能分组。

3.变量命名:变量应该有一个清晰的名称,并且应该遵循英文命名规则,例如,变量名不应该包含特殊字符或空格。

变量名称应该有一些含义,并且应该简短明了。

4.缩进:代码的缩进非常重要,可以增加代码的可读性。

应该使用适当的缩进来表示代码层次结构。

5.默认数据类型:可以使用“C”作为默认的数据类型,例如:DAT 0xC0 ;定义一个BYTE类型变量。

6.标签:标签应该有一个清晰明了的名称,并且应该简短明了。

标签应该在对应代码的上方,使用适当的缩进。

7.空格:应该在运算符的两侧加上空格,例如,“ADDWF F, W”而不是“ADDWFF,W”。

8.注释:应该在指令上方加上注释,并且注释应该简短明了。

9.代码格式:代码应该有适当的空格和缩进,应该使用换行符来分割不同的代码块。

10.常量定义:常量定义应该有适当的注释,并且应该使用适当的缩进。

总之,遵循上述规范可以使汇编代码更加清晰易懂,在编写和调试时也更加方便。

PIC指令集中文介绍

PIC指令集中文介绍

编译信息的输出显示级别有三种,分别是 0、1 和 2。

级别 0 代表显示所有信息,包括各种错误、警告和提示信息,如图 3-14 所示某些信息单独设定显示或关闭。

每个信息都有一个识别标号,见图 3-14 中信息项“[]”中的数字,打开或关闭某类信息只需在 errorlev
errorlevel 0, -302, -305 ;显示所有信息,但不需要302 和 305 这两类提示信息
errorlevel 1, +305 ;显示错误和警告信息,但同时还要关注 305类的提示信息
,分别是 0、1 和 2。

级别 0 代表显示所有信息,包括各种错误、警告和提示信息,如图 3-14 所示;级别 1 代表显示错误和警告信息,忽略提示信息;个信息都有一个识别标号,见图 3-14 中信息项“[]”中的数字,打开或关闭某类信息只需在 errorlevel 伪指令中引用信息识别标号,并在其前面用“+”或“-”
有信息,但不需要302 和 305 这两类提示信息
警告信息,但同时还要关注 305类的提示信息
示错误和警告信息,忽略提示信息;级别 3代表只显示错误信息而忽略警告和提示信息。

在任何一个大的级别上还可以对信息识别标号,并在其前面用“+”或“-”号,即代表打开或关闭这一类信息,例如:。

常用PIC系列8位单片机芯片引脚符号的功能

常用PIC系列8位单片机芯片引脚符号的功能

常用PIC系列8位单片机芯片引脚符号的功能常用PIC系列8位单片机芯片引脚符号的功能类别:单片机/DSP一、关于I/O口符号PIC单片机系列封装引脚最少的是8引脚(如PIC12C5XX和PIC12C6XX),多的可达84引脚(如PIC17C76X),其中I/O(输入/输出)口线按PIC单片机产品型号不同,其口线数量也不相同。

8脚封装的I/O 口线是6根线,而84脚封装的I/O线多达66根线。

这些口线符号分别按英文字母顺序排列编号,简称A口、B口、C口、D口、E口、F口……,每个口是8位的,但不一定占满8位。

这些口在封装引脚图的标注上均在各口之前加有R 符号。

例如B口标注为RB0、RB1、RB2……RB7;E口为RE0、RE1……RE7;G口为RG1、RG2……;而对8脚封装的单片机共有6根I/O口线,其引脚图的标注与上略有不同而是GP0~GP5。

上述的各口线都是可独立编程的双向I/O口线。

二、引脚的复用功能和符号单片机的信号引脚是单片机外特性的体现,在硬件上用户只能使用引脚,通过引脚的连接组建单片机系统。

PIC8位单片机系列和MCS-51系列单片机一样,其引脚除电源VDD、VSS为单一功能外,其余的信号引脚常是多个功能,即引脚的复用功能。

常见的引脚符号和主要功能如下:1MCLR/Vpp 清除(复位)输入/编程电压输入。

其中MCLR为低电平时,对芯片复位。

该脚上的电压不能超过VDD,否则会进入测试方法。

Vpp代表编程电压。

2OSC1/CLKIN 振荡器晶体/外部时钟输入端。

3OSC2/CLKOUT 振荡器晶体输出端,在晶体振荡方式接晶体,在RC方式输出OSC1频率的1/4信号CLKOUT。

4TOCK1TMRO计数器输入端,如不用,为了减少功能应接地或接VDD。

5TICK1TMR1时钟输入端。

6TIOSI TMR1的振荡输入端。

7TIOSOTMR1的振荡输出端。

8RD、WR、CS 分别代表并行口读信号、写信号和片选控制线。

高手讲解PIC单片机:从管脚到指令,一看就懂

高手讲解PIC单片机:从管脚到指令,一看就懂

高手讲解PIC单片机:从管脚到指令,一看就懂展开全文这个8条腿的小螃蟹就是我们的第一顿饭,只要把它吃下去,以后的大餐就好办了。

第1、8条腿接电源 +5V 和地线。

头两条腿是螃蟹钳子,好吃的很。

现在剩下了 6 条腿第2、3条腿使用时外接一个晶振的东西我们接一个 4 MHz的。

第4条腿是复位脚,是一个信号输入脚。

单片机正常运行时接高电平。

当有一个低电平脉冲输入到这个脚时单片机就复位。

所谓复位就是单片机内部所有的工作部件统统回到规定的状态,程序也复位到头一句上开始逐条运行。

例如,你设计的一个报警锁定的LED红灯亮后,当需要解除报警时,用一个按钮给这个脚瞬时接地一下,相当于给它一个夫脉冲,系统就复位了,led灯就熄灭了,程序从头开始。

以上5个脚,几乎所有单片机都有,包括世界上最复杂的,和世界比较简单的单片机-----PIC12CE519轮到第几条腿啦?奥,是第5条腿,这条叫单片机的 I/O 脚。

就是输入输出脚。

你可通过程序动态地控制它作为输入或输出,作为输出时可以程序控制它的输出电平为高1或低0。

所以,他的工作状态有四种:输入0,输入1,输出0,输出1,剩下的两条腿和第5脚功能一个样。

上边我们已经把8条腿消化掉了,其实我们要弄明白的也就3只腿,我们再简单一些,先整明白两条腿,即GP0,GP1.这两条腿低级一点的用法,可以控制继电器,LED灯,高级一些的用法可以进行I2C总线,RS232总线的通信,作为扩展输入可以模拟出来A/D转换器(6--7bit),可以测量一个电阻的粗略值。

作为输出也可以直接推动扬声器奏出音乐。

这是后话暂且不提。

现在要控制使用这两只腿,我这个三脚猫功夫的说书的不得不讲一下软件了,要想讲明白软件又不得不涉及到单片机的内部结构。

那位说啦,你可别提这软件和结构了,以前俺就是让它们打败的,现在听到这个心里就打鼓。

嘿嘿,不要紧,果真如你所说,那你就不妨跟着我再失败一次,反正吗多一次失败又不纳税,嘿嘿。

PIC单片机指令系统和汇编语言程序设计

PIC单片机指令系统和汇编语言程序设计

PIC单片机指令系统和汇编语言程序设计PIC(Peripheral Interface Controller)单片机是一种微控制器,它由微芯科技公司推出,广泛应用于嵌入式系统中。

PIC单片机的指令系统是它的核心,它定义了单片机可以执行的操作和命令。

汇编语言程序设计是使用汇编语言编写的PIC单片机程序的过程。

PIC单片机的指令系统包含了多个指令,每个指令都对应着一条特定的操作。

这些操作可以是算术运算、逻辑运算、数据传输、位操作等。

指令系统的设计考虑了单片机的资源限制,以使其能够在有限的资源条件下完成各种任务。

汇编语言是一种低级语言,它与机器语言相似,但更具可读性。

在PIC单片机编程中,汇编语言常用于编写程序。

汇编语言程序设计包括了以下几个方面:1.汇编语言的语法:汇编语言有自己的语法规则,包括指令的书写方式、注释的使用、标号的定义等。

了解汇编语言的语法对于编写正确的程序至关重要。

2.寄存器的使用:PIC单片机有多个寄存器用于存储数据和指令。

在汇编语言程序中,需要了解不同寄存器的功能和使用方法,以便正确地读写数据。

3.指令的编写:编写汇编语言程序需要了解不同指令的功能、操作数的使用和指令的影响。

不同的指令可以实现不同的操作,如加法、逻辑运算、数据传输等。

4.程序的逻辑结构:汇编语言程序需要按照一定的逻辑结构编写,包括初始化程序、主循环、中断处理等。

了解如何组织程序结构对于编写清晰、可读性强的程序至关重要。

5.调试和优化:在编写汇编语言程序时,常常需要进行调试和优化,以确保程序能够正确地运行。

了解如何使用调试工具和优化技巧对于提高程序的效率和稳定性至关重要。

总之,PIC单片机的指令系统和汇编语言程序设计是使用PIC单片机进行编程的基础。

掌握了这些知识,可以编写高效、可靠的PIC单片机程序,实现各种嵌入式系统的功能。

PIC8位单片机汇编语言常用指令

PIC8位单片机汇编语言常用指令

PIC8 位单片机汇编语言常用指令
各大类单片机的指令系统是没有通用性的,它是由单片机生产厂家规定的,所以用户必须遵循厂家规定的标准,才能达到应用单片机的目的。

PIC 8 位单片机共有三个级别,有相对应的指令集。

基本级PIC 系列芯片共有指令33 条,每条指令是12 位字长;中级PIC 系列芯片共有指令35 条,每条指令是14 位字长;高级PIC 系列芯片共有指令58 条,每条指令是16 位字长。

其指令向下兼容。

在这里笔者介绍PIC 8 位单片机汇编语言指令的组成及指令中符号的功能,以供初学者阅读相关书籍和资料时快速入门。

一、PIC 单片机汇编语言指令格式
PIC 系列微控制器汇编语言指令与MCS-51 系列单片机汇编语言一样,每条汇编语言指令由4 个部分组成,其书写格式如下:
标号操作码助记符操作数1,操作数2;注释
指令格式说明如下:指令的4 个部分之间由空格作隔离符,空格可以是1 格或多格,以保证交叉汇编时,PC 机能识别指令。

1 标号与MCS-51 系列单片机功能相同,标号代表指令的符号地址。

在。

PIC8位单片机汇编语言常用指令的识读(中)

PIC8位单片机汇编语言常用指令的识读(中)

PIC8位单片机汇编语言常用指令的识读(中)三、面向字节、常数与控制操作的指令1?传送立即数至工作寄存器W指令指令格式:MOVLW k;k表示常数、立即数和标号说明:MOVLW是Move Literal to w的缩写实例:MOVL 0x1E;常数30送W2?I/O口控制寄存器TRIS设置指令指令格式;TRIS f说明;TRIS f是Load TRIS Register的缩写。

其功能是把工作寄存器W的内容送入I/O口控制寄存器f。

当W=0时,置对应I/O口为输出;W=1,置I/O口为输入。

实例:MOVLW 0x00 ;把00H送入WTRIS RA ;置PIC RA口为输出MOVLW 0xFF ;把FFH送入WTRIS RB ;置PIC RB口为输入说明:这是PIC汇编语言中常用的几条指令,即设置某个I/O口(这里是RA口和RB口)为输入或输出的语句。

可见,识读指令时,一应充分理解语句格式的功能,二应前后联系阅读。

3?W寄存器内容送寄存器f(W内容保持不变)指令指令格式:MOVWF f说明:MOVWF是Move W to f的缩写实例:MOVLW 0x0B;送0BH送WMOVWF 6 ;送W内容到RB口说明:第一条指令0x0B(常数11)送工作寄存器W,第二条指令,把W内容常数11送到寄存器F6中,查表F6即为RB口,所以PORT_ B(B口)=0BH=D114?寄存器f传送指令指令格式:MOVF f,d说明:MOVF是Move f的缩写。

F代表PIC中的某个寄存器。

指令中的d规定:d=0时,f内容送W;d=1时,f内容送寄存器。

实例:MOVF 6,0 ;RB口内容送WMOVWF 8;RB口内容送f8说明:第一条指令中的6代表寄存器f=6,查寄存器表f=6为RB口;0代表d=0,代表选择的目标为寄存器W。

第二条指令中的8代表寄存器f=8。

所以两条指令结果是把RB口的内容送f8。

至于f8内容是多少?还应在汇编语言开始时附加指令,这里从略。

PIC汇编语言指令

PIC汇编语言指令

PIC 8位单片机共有三个级别,有相对应的指令集。

基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC系列芯片共有指令58条,每条指令是16位字长。

其指令向下兼容。

一、PIC汇编语言指令格式PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下:标号操作码助记符操作数1,操作数2;注释指令格式说明如下:指令的4个部分之间由空格作隔离符,空格可以是1格或多格,以保证交叉汇编时,PC机能识别指令。

1标号与MCS-51系列单片机功能相同,标号代表指令的符号地址。

在程序汇编时,已赋以指令存储器地址的具体数值。

汇编语言中采用符号地址(即标号)是便于查看、修改,尤其是便于指令转移地址的表示。

标号是指令格式中的可选项,只有在被其它语句引用时才需派上标号。

在无标号的情况下,指令助记符前面必须保留一个或一个以上的空格再写指令助记符。

指令助记符不能占用标号的位置,否则该助记符会被汇编程序作标号误处理。

书写标号时,规定第一字符必须是字母或半角下划线“—”,它后面可以跟英文和数字字符、冒号(:)制符表等,并可任意组合。

再有标号不能用操作码助记符和寄存器的代号表示。

标号也可以单独占一行。

2操作码助记符该字段是指令的必选项。

该项可以是指令助记符,也可以由伪指令及宏命令组成,其作用是在交叉汇编时,“指令操作码助记符”与“操作码表”进行逐一比较,找出其相应的机器码一一代之。

3操作数由操作数的数据值或以符号表示的数据或地址值组成。

若操作数有两个,则两个操作数之间用逗号(,)分开。

当操作数是常数时,常数可以是二进制、八进制、十进制或十六进制数。

还可以是被定义过的标号、字符串和ASCⅡ码等。

具体表示时,规定在二进制数前冠以字母“B”,例如B;八进制数前冠以字母“O”,例如O257;十进制数前冠以字母“D”,例如D122;十六进制数前冠以“H”,例如H2F。

PIC8位单片机汇编语言常用指令的识读

PIC8位单片机汇编语言常用指令的识读

PIC8位单片机汇编语言常用指令的识读各大类单片机的指令系统是没有通用性的,它是由单片机生产厂家规定的,所以用户必须遵循厂家规定的标准,才能达到应用单片机的目的。

PIC 8位单片机共有三个级别,有相对应的指令集。

基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC系列芯片共有指令58条,每条指令是16位字长。

其指令向下兼容。

在这里笔者介绍PIC 8位单片机汇编语言指令的组成及指令中符号的功能,以供初学者阅读相关书籍和资料时快速入门。

一、PIC汇编语言指令格式PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下:标号操作码助记符操作数1,操作数2;注释指令格式说明如下:指令的4个部分之间由空格作隔离符,空格可以是1格或多格,以保证交叉汇编时,PC机能识别指令。

1 标号与MCS-51系列单片机功能相同,标号代表指令的符号地址。

在程序汇编时,已赋以指令存储器地址的具体数值。

汇编语言中采用符号地址(即标号)是便于查看、修改,尤其是便于指令转移地址的表示。

标号是指令格式中的可选项,只有在被其它语句引用时才需派上标号。

在无标号的情况下,指令助记符前面必须保留一个或一个以上的空格再写指令助记符。

指令助记符不能占用标号的位置,否则该助记符会被汇编程序作标号误处理。

书写标号时,规定第一字符必须是字母或半角下划线“—”,它后面可以跟英文和数字字符、冒号(:)制符表等,并可任意组合。

再有标号不能用操作码助记符和寄存器的代号表示。

标号也可以单独占一行。

2 操作码助记符该字段是指令的必选项。

该项可以是指令助记符,也可以由伪指令及宏命令组成,其作用是在交叉汇编时,“指令操作码助记符”与“操作码表”进行逐一比较,找出其相应的机器码一一代之。

3 操作数由操作数的数据值或以符号表示的数据或地址值组成。

PIC常用指令

PIC常用指令

GOTO LOOP ;否!循环回去
RETURN ;返回
9.位置1指令:BCF
【格式】 BCF F,B
【功能】位清0
【说明】
(1)BCF是Bit Clear F的缩写;
(2)符号B是表示片内某个8位数据寄存器F的位号(或位地址);
【实例】 INCF PORTC,1 ;将PORTC加1
2.寄存器减1指令:DECF
【格式】 DECF F,d
【功能】寄存器F减1
【说明】
(1)DECF是Decrement F的缩写;
(2)d=0时,结果存入W;d=1时,结果存入F。
【实例】 ENCODER EQU 0X21
(3)不影响状态位
【实例】 MOVLW 0x1E ;常数30送W
14.子程序调用指令:CALL
【格式】 CALL K
【功能】子程序调用
【说明】
(1)CALL是CALL subroutine的缩写;
(2)K为立即地址;
(3)不影响状态位。
【实例】
【实例】 MOVLW 0xOF ;送OFH到W
MOVWF PORTB ;W内容写入B口
NOP ;空操作
MOVF PORTB,W ;读操作
PIC汇编语言常用伪指令
1.符号名赋值伪指令:EQU
CALL DELAY ;PORTB的第0位是1则直接执行该句,调用延时子程序
13.常数传送指令:MOVLW
【格式】 MOVLW K
【功能】常数传送
【说明】(1)MOVLW是Move literal to W的缩写;
(2)将8位立即数传送到W寄存器,k表示常数、立即数和标号;

PIC8位单片机共有三个级别有相对应的指令集。基本级

PIC8位单片机共有三个级别有相对应的指令集。基本级

PIC 8位单片机共有三个级别,有相对应的指令集。

基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC系列芯片共有指令58条,每条指令是16位字长。

其指令向下兼容。

一、PIC汇编语言指令格式PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下:标号操作码助记符操作数1,操作数2;注释指令格式说明如下:指令的4个部分之间由空格作隔离符,空格可以是1格或多格,以保证交叉汇编时,PC机能识别指令。

标号与MCS-51系列单片机功能相同,标号代表指令的符号地址。

在程序汇编时,已赋以指令存储器地址的具体数值。

汇编语言中采用符号地址(即标号)是便于查看、修改,尤其是便于指令转移地址的表示。

标号是指令格式中的可选项,只有在被其它语句引用时才需派上标号。

在无标号的情况下,指令助记符前面必须保留一个或一个以上的空格再写指令助记符。

指令助记符不能占用标号的位置,否则该助记符会被汇编程序作标号误处理。

书写标号时,规定第一字符必须是字母或半角下划线“—”,它后面可以跟英文和数字字符、冒号(:)制符表等,并可任意组合。

再有标号不能用操作码助记符和寄存器的代号表示。

标号也可以单独占一行。

操作码助记符该字段是指令的必选项。

该项可以是指令助记符,也可以由伪指令及宏命令组成,其作用是在交叉汇编时,“指令操作码助记符”与“操作码表”进行逐一比较,找出其相应的机器码一一代之。

操作数由操作数的数据值或以符号表示的数据或地址值组成。

若操作数有两个,则两个操作数之间用逗号(,)分开。

当操作数是常数时,常数可以是二进制、八进制、十进制或十六进制数。

还可以是被定义过的标号、字符串和ASCⅡ码等。

具体表示时,规定在二进制数前冠以字母“B”,例如B10011100;八进制数前冠以字母“O”,例如O257;十进制数前冠以字母“D”,例如D122;十六进制数前冠以“H”,例如H2F。

常用PIC系列8位单片机芯片引脚符号的功能

常用PIC系列8位单片机芯片引脚符号的功能

常用PIC系列8位单片机芯片引脚符号的功能笔者读了本版有关PIC 8位单片机的产品性能和相应的封装引脚介绍后,认为对初学者而言还需了解各引脚符号的意义,才能进一步学习和使用它。

笔者为此作相关的说明,以便和初学者共同提高。

一、关于I/O口符号 PIC单片机系列封装引脚最少的是8引脚(如PIC12C5XX和PIC12C6XX),多的可达84引脚(如PIC17C76X),其中I/O(输入/输出)口线按PIC单片机产品型号不同,其口线数量也不相同。

8脚封装的I/O口线是6根线,而84脚封装的I/O线多达66根线。

这些口线符号分别按英文字母顺序排列编号,简称A口、B口、C口、D 口、E口、F口……,每个口是8位的,但不一定占满8位。

这些口在封装引脚图的标注上均在各口之前加有R符号。

例如B口标注为RB0、RB1、RB2……RB7;E口为RE0、RE1……RE7;G口为RG1、RG2……;而对8脚封装的单片机共有6根I/O口线,其引脚图的标注与上略有不同而是GP0~GP5。

上述的各口线都是可独立编程的双向I/O口线。

二、引脚的复用功能和符号单片机的信号引脚是单片机外特性的体现,在硬件上用户只能使用引脚,通过引脚的连接组建单片机系统。

PIC 8位单片机系列和MCS-51系列单片机一样,其引脚除电源VDD、VSS为单一功能外,其余的信号引脚常是多个功能,即引脚的复用功能。

常见的引脚符号和主要功能如下:1��MCLR/Vpp 清除(复位)输入/编程电压输入。

其中MCLR为低电平时,对芯片复位。

该脚上的电压不能超过VDD,否则会进入测试方法。

Vpp代表编程电压。

2��OSC1/CLKIN 振荡器晶体/外部时钟输入端。

3��OSC2/CLKOUT 振荡器晶体输出端,在晶体振荡方式接晶体,在RC方式输出OSC1频率的1/4信号CLKOUT。

4��TOCK1 TMRO计数器输入端,如不用,为了减少功能应接地或接VDD。

5��TICK1 TMR1时钟输入端。

PIC8位单片机基础知识

PIC8位单片机基础知识

PIC8位单片机基础知识1. PIC8位单片机的基本组成PIC系列8位单片机为适应各种不同的用途,有多种型号可供选用。

但是,尽管PIC单片机有不同的档次和型号,但其最基本的组成则大同小异。

因此,在这里先从型号PIC16F84的单片机入手,讨论其基本组成。

PIC16F84是双列直插式(DIP )塑料封装,最大时钟频率可达4MHz。

现为Microchip公司的独家产品,关于其具体技术指标,可查阅该公司的产品手册,或在网址 上查找。

PIC16F84单片机的引脚排列可参阅本期本版的16F8X系列简介一文。

本文的附图是该器件的主要组成部分。

PIC16F84虽然体积不大,但仍然是一个完整的计算机,它有一个中央处理器(CPU)、程序存储器(ROM)、数据寄存器(RAM)和两个输入/输出口(I/O口)。

和其它品种的单片机一样,CPU是此单片机的“首脑”,它从程序存储器中读取和执行指令。

在取指和执行时,还可同时对数据寄存器进行取数(前已介绍PIC16F84采用哈佛结构)。

由附图可明显看出,程序存储器和数据存储器各有一条总线与CPU相连。

有些CPU将CPU内部的寄存器与其外部的RAM是分开管理的,但PIC单片机不是这样,它的通用数据RAM也归为寄存器,称为File寄存器。

在PC16F84中,有68个字节的通用RAM,其地址为0CH~4FH。

除了通用数据寄存器外,还有一些专用寄存器,其中最常用的工作寄存器为“W寄存器”。

CPU将工作数据存放在W寄存器中。

寄存器W的作用与其它单片机中的“累加器A”相似。

此外,还有几个专用寄存器,它们分别以某种方式控制PIC 的运作。

PIC16F84的程序存储器是由Flash(闪速)EPROM构成,它可用电来记录和擦除,而在断电时,仍可保留其内容。

PIC单片机有些型号的程序存储器用的是EPROM,需要用紫外线来擦除;还有一些型号是一次性可编程(OTP)的产品(一经编程便不能再擦除)。

PIC16F84有两个输入/输出口,即A口和B口。

汇编语言各种指令的解释与用法

汇编语言各种指令的解释与用法

【算术指令】
一、加法指令 12、加法指令 ADD (addition) 指令的汇编格式�add dst,src 指令的基本功能�(dst)<-(src)+(dst) 指令支持的寻址方式�他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况 外�源操作数和目地操作数必须有一个寄存器寻址方式。 指令对标志位的影响�SF=1 加法结果为负数�符号位为 1� SF=0 加法结果为正数�符号位为 0� ZF=1 加法结果为零 ZF=0 加法结果不为零 CF=1 最高有效位向高位有进位 CF=0 最高有效位向高位无进位 OF=1 两个同符号数相加�正数+正数或负数+负数��结果符号与其相反。 OF=0 两个不同符号数相加�或同符号数相加�结果符号与其相同。 13、带进为加法指令 ADC (add with carry) 指令的汇编格式�ADD dst,src 指令的基本功能�(dst)<-(src)+(dst)+CF 指令支持的寻址方式�他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况 外�源操作数和目地操作数必须有一个寄存器寻址方式。 指令对标志位的影响�SF=1 加法结果为负数 SF=0 加法结果为正数 ZF=1 加法结果为零 ZF=0 加法结果不为零 CF=1 最高有效位向高位有进位 CF=0 最低有效位相高位无进位 OF=1 两个同符号数相加�结果符号与其相反� OF=0 两个同符号数相加�或同符号相加�结果符号与其相同 14、加 1 指令 INC (increament) 指令的汇编格式�INC opr 指令的基本功能�(opr)<-(opr) 指令支持的寻址方式 可以使用除立即数方式外的任何寻址方式 指令对标志位的影响�SF=1 加法结果为负数 SF=0 加法结果为正数 ZF=1 加法结果为零 ZF=0 加法结果不为零 OF=1 两个同符号数相加�结果符号与其相反� OF=0 两个同符号数相加�或同符号相加�结果符号与其相同。 二、减法指令 15、减法指令 SUB (subtract) 指令的汇编格式�SUB dst,src 指令的基本功能�(dst)<-(dst)-(src) 指令支持的寻址方式�他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况

PIC8位单片机的汇编语言

PIC8位单片机的汇编语言

PIC 8位单片机的汇编语言要单片机完成一项基本任务,必须将任务分解成一些具体步骤,再要求它去逐项执行每个步骤,还要对它下命令。

该命令在单片机术语中称为“指令”(Inetruction)。

完成一项任务所需的所有指令的有序集合就称为“程序”(Programm)。

这些指令要预先一条一条顺序地放到单片机的程序存贮器中,单片机在运行时,片中的CPU从程序存贮器中逐条有序取出指令,执行指令,并将有关指令执行完毕,即可完成既定任务。

不同种类的单片机有不同的一套命令(即所谓“指令系统”)。

PIC单片机其指令系统与51系列的完全不同。

PIC16F84单片机有30余条指令构成的指令系统。

每条指令由14位(bit)构成,这些位是二进制码的0和1,如果要使16F84单片机端口B的B 0位输出高电平,以点亮一只发光二极管LED,而B口的其余各位仍保持低电平,则需要使单片机执行下列各条指令(机器码): 11000000000000 00000001100110 11000000000001 00000010000110 10100000000100早先的技术人员就是用这样的二进制码来编写程序的。

上列程序,看起来像天书,很费解,但它完全能指挥单片机的运作。

因为单片机实际上是一种复杂的数字逻辑电路。

我们都知道,要数字电路运作,必须相应输入高、低电平,对正逻辑而言,高电平为1,低电平为0。

上述指令顺序在不同的数位上出现的0和1,经译码后,即可完成各种不同的运作,逐步完成单片机所要执行的任务,如点亮一个LED。

上述各条指令的写法,虽然是完全面向单片机,是用来直接指示单片机该如何运作的。

因此,这种由0、1组成的指令称为机器语言。

实际上,这种由二进码构成的指令集不但难读懂,而且用来编程也有困难。

因为程序往往不是从头到尾顺序执行,有时还需中途转移到其它单元执行一段程序后再返回来。

而指令是一条一条顺序存放在存贮器各个单元内的。

因此,如果要转移,需指明具体转到哪个单元,即要写出该单元的地址。

PIC8位单片机汇编语言常用指令的识读(下)

PIC8位单片机汇编语言常用指令的识读(下)

PIC8位单片机汇编语言常用指令的识读(下)本文关于指令的注释将与前述指令中的略有不同。

前述指令注释时是对指令具体完成的功能给以说明,这种注释方法对初学者确实易于接受和理解,但是实际应用中的PIC产品汇编语言的注释通常是以程序要做什么(或指令的作用)而不是说指令的直接功能。

鉴于上述原因,下述的指令注释将改变过去的注释方法,用程序应起的作用作注释。

10 寄程器半字节交换指令指令格式:SW APF f,d说明:SW APF是Swap f的合写。

符号f、d的意义与前述的相同。

该条指令的功能是寄存器f的高4位与低4位交换,即指令执行前,若寄存器f的8位状态为D7、D6、D5、D4、D3、D2、D1、D0,执行后的8位状态变为D3、D2、D1、D0、D7、D6、D5、D4,其结果存入W(d=0)或f(d=1)中。

实例:中断现场保护是中断技术中重要部分。

由于PIC16C××指令系统中没有进栈PUSH 和出栈POP指令,所以只能用其它指令来实现。

因为在主程序中常常用到工作寄存器W和状态寄存器STATUS,所以中断现场保护常要保护寄存器W和STATUS。

下面是对PIC16C7×系列芯片中断现场保护的实例程序。

MOVWF W_TEMP ;将W内容存入到临时寄存器W_TEMP中SWAPF STATUS,W;交换STA TUS与W内容MOVWF STATUS_TEMP ;将STATUS的内容存入到临…时寄存器STATUS_TEMP中中断服务程序…SWAPF STATUS_TEMP,W;交换STA TUS_TEMP与W的内容MOVWF STATUS;STATUS复原成原来的状态SWAPF W_TEMP,F;交换内容SWAPF W_TEMP,W;W复原成原来的状态说明:上述程序中各条指令的注释基本上都是以程序应达到的目的而注释的,对每条指令的功能几乎未涉及。

这是初学者应特别注意的。

11 子程序调用指令(Subroutine Call)指令格式:CALL k;k为立即地址说明:子程序调用,不同型号芯片的实现方法不尽相同,其共同点是首先将返回地址((PC)+1)压栈保护,再转入所调用的子程序入口地址执行(与MCS-51指令功能相似)。

汇编语言常用指令大全解释

汇编语言常用指令大全解释

汇编语言常用指令大全解释汇编语言常用指令大全解释常用汇编指令:MOV指令为双操作数指令,两个操作数中必须有一个是寄存器.MOV DST , SRC // Byte / Word执行操作: dst = src1.目的数可以是通用寄存器, 存储单元和段寄存器(但不允许用CS段寄存器).2.立即数不能直接送段寄存器3.不允许在两个存储单元直接传送数据4.不允许在两个段寄存器间直接传送信息PUSH入栈指令及POP出栈指令: 堆栈操作是以"后进先出"的方式进行数据操作.PUSH SRC //Word入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器.入栈时高位字节先入栈,低位字节后入栈.POP DST //Word出栈操作数除不允许用立即数和CS段寄存器外, 可以为通用寄存器,段寄存器和存储器.执行POP SS指令后,堆栈区在存储区的位置要改变.执行POP SP 指令后,栈顶的位置要改变.XCHG(eXCHanG)交换指令: 将两操作数值交换.XCHG OPR1, OPR2 //Byte/Word执行操作: Tmp=OPR1 OPR1=OPR2 OPR2=Tmp1.必须有一个操作数是在寄存器中2.不能与段寄存器交换数据3.存储器与存储器之间不能交换数据.XLAT(TRANSLATE)换码指令: 把一种代码转换为另一种代码.XLAT (OPR 可选) //Byte执行操作: AL=(BX+AL)指令执行时只使用预先已存入BX中的表格首地址,执行后,AL中内容则是所要转换的代码.LEA(Load Effective Address) 有效地址传送寄存器指令LEA REG , SRC //指令把源操作数SRC的有效地址送到指定的寄存器中.执行操作: REG = EAsrc注: SRC只能是各种寻址方式的存储器操作数,REG只能是16位寄存器MOV BX , OFFSET OPER_ONE 等价于LEA BX , OPER_ONEMOV SP , [BX] //将BX间接寻址的相继的二个存储单元的内容送入SP中LEA SP , [BX] //将BX的内容作为存储器有效地址送入SP中LDS(Load DS with pointer)指针送寄存器和DS指令LDS REG , SRC //常指定SI寄存器。

PIC汇编指令集概述

PIC汇编指令集概述

PIC汇编指令集概述2010-8-4 16:23:39PIC单片机(Peripheral Interface Controller)是一种用来开发的去控制外围设备的集成电路(IC),翻译为外设接口控制器。

PIC 意思确实有点奇怪,不知道的话第一个P肯定翻译为Programable(可编程)的。

目前我接触的基本都是8位的CPU,包括AVR,PIC等系列,之前我写的程序都是以C语言去写的,也从未出现过什么问题,虽然很多人说道C语言的BUG问题,我一直都不是很在意,就目前为止我从未遇到过这种问题,用AVR-GCC写的时候也曾经出现过问题,也怀疑过C语言和编译器,最终事实证明是错的,一直都是我们没有注意的语法问题的造成的。

接触PIC后我开始用起了他的汇编,原因无它,只是大家都在用汇编。

这是发表的第二篇文章,处女篇给了梦梦哈,首先介绍一下PIC的单片机,PIC单片机是基于哈弗结构的精简指令集(RISC)的单片机,没啥说的,很多单片机都是的。

特殊的地方就是他的指令和存储器结构,一直有个问题到底是他的指令结构决定的他的存储器结构,还是存储器结构决定的指令结构?PIC8位机分为低中高三个档子,低档次的是PIC12系列的,指令是以12BIT结构编码的,对应的指令集有33条指令;中档的CPU是PIC16系列,指令集包含35条指令,并且是以14BIT的结构编码的;高档次的PIC18系列包含58条指令,每条指令是以16BIT结构编码的。

并且所有指令向下兼容。

PIC指令的语法和其他系列的一样,都是有以下几部分组成的:标号操作码助记符操作数1 操作数2 ;注释1。

关于标号,没啥说的,和其他单片机一样,它表示一个地址,标号也是可选的,不是所有的指令都需要的,只有在被其他语句引用时才需的,在没有标号的情况下,操作码助记符前必须保留一个或以上的空格再去写指令助记符,一般使用一个TAB,如果没有标号,而操作码助记符占用了标号的位置,汇编器会把指令助记符当做标号来处理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PIC8位单片机汇编语言常用指令的识读(上)各大类单片机的指令系统是没有通用性的,它是由单片机生产厂家规定的,所以用户必须遵循厂家规定的标准,才能达到应用单片机的目的。

PIC 8位单片机共有三个级别,有相对应的指令集。

基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC 系列芯片共有指令58条,每条指令是16位字长。

其指令向下兼容。

在这里笔者介绍PIC 8位单片机汇编语言指令的组成及指令中符号的功能,以供初学者阅读相关书籍和资料时快速入门。

一、PIC汇编语言指令格式PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下:标号操作码助记符操作数1,操作数2;注释指令格式说明如下:指令的4个部分之间由空格作隔离符,空格可以是1格或多格,以保证交叉汇编时,PC机能识别指令。

1 标号与MCS-51系列单片机功能相同,标号代表指令的符号地址。

在程序汇编时,已赋以指令存储器地址的具体数值。

汇编语言中采用符号地址(即标号)是便于查看、修改,尤其是便于指令转移地址的表示。

标号是指令格式中的可选项,只有在被其它语句引用时才需派上标号。

在无标号的情况下,指令助记符前面必须保留一个或一个以上的空格再写指令助记符。

指令助记符不能占用标号的位置,否则该助记符会被汇编程序作标号误处理。

书写标号时,规定第一字符必须是字母或半角下划线“—”,它后面可以跟英文和数字字符、冒号(:)制符表等,并可任意组合。

再有标号不能用操作码助记符和寄存器的代号表示。

标号也可以单独占一行。

2 操作码助记符该字段是指令的必选项。

该项可以是指令助记符,也可以由伪指令及宏命令组成,其作用是在交叉汇编时,“指令操作码助记符”与“操作码表”进行逐一比较,找出其相应的机器码一一代之。

3 操作数由操作数的数据值或以符号表示的数据或地址值组成。

若操作数有两个,则两个操作数之间用逗号(,)分开。

当操作数是常数时,常数可以是二进制、八进制、十进制或十六进制数。

还可以是被定义过的标号、字符串和ASCⅡ码等。

具体表示时,规定在二进制数前冠以字母“B”,例如B10011100;八进制数前冠以字母“O”,例如O257;十进制数前冠以字母“D”,例如D122;十六进制数前冠以“H”,例如H2F。

在这里PIC 8位单片机默认进制是十六进制,在十六进制数之前加上Ox,如H2F可以写成Ox2F。

指令的操作数项也是可选项。

PIC系列与MCS-51系列8位单片机一样,存在寻址方法,即操作数的来源或去向问题。

因PIC系列微控制器采用了精简指令集(RISC)结构体系,其寻址方式和指令都既少而又简单。

其寻址方式根据操作数来源的不同,可分为立即数寻址、直接寻址、寄存器间接寻址和位寻址四种。

所以PIC系列单片机指令中的操作数常常出现有关寄存器符号。

有关的寻址实例,均可在本文的后面找到。

4 注释用来对程序作些说明,便于人们阅读程序。

注释开始之前用分号(;)与其它部分相隔。

当汇编程序检测到分号时,其后面的字符不再处理。

值得注意:在用到子程序时应说明程序的入口条件、出口条件以及该程序应完成的功能和作用。

二、清零指令(共4条)1 寄存器清零指令实例:CLRW;寄存器W被清零说明:该条指令很简单,其中W为PIC单片机的工作寄存器,相当于MCS-51系列单片机中的累加器A,CLR是英语Clear的缩写字母。

2 看门狗定时器清零指令。

实例:CLRWDT;看门狗定时器清零(若已赋值,同时清预分频器)说明:WDT是英语Watchdog Timer的缩写字母。

CLR见上述说明。

注意该两条指令无操作数。

3 寄存器f清零指令。

指令格式:CLRF f实例:CLRF TMRO;对TMRO清零说明:在PIC系列8位单片机中,常用符号F(或f)代表片内的各种寄程器和F的序号地址。

F取值按PIC系列不同型号而不同,一般为Ox00~Ox1F/7F/FF。

TMRO代表定时器/计数器TMRO,所以CLRF对寄程器清零,采用了直接寻址方式直接给出要访问的寄存器TMRO。

4 位清零指令。

指令格式BCF f,b实例:BCF REG1,2;把寄存器REG1的D2位清零说明:BCF是英语Bit Clear F的缩写。

指令格式中的F,同上说明;符号b是表示PIC 片内某个8位数据寄存器F的位号(或位地址),所以b的取值为0~7或D0~D7。

实例中REG 是Register的缩写。

实例中的2代表指令格式中的b=2即寄存器REG1的D2位。

通过上述四条清零指令格式和实例,可以说明,学习PIC系列8位单片机的指令时应首先了解指令的助记符意义(功能),再有就是它的表达方式。

初学者没有必要死记指令,重要是理解和实践。

PIC8位单片机汇编语言常用指令的识读(中)三、面向字节、常数与控制操作的指令1 传送立即数至工作寄存器W指令指令格式:MOVLW k;k表示常数、立即数和标号说明:MOVLW是Move Literal to w的缩写实例:MOVL 0x1E;常数30送W2 I/O口控制寄存器TRIS设置指令指令格式;TRIS f说明;TRIS f是Load TRIS Register的缩写。

其功能是把工作寄存器W的内容送入I/O 口控制寄存器f。

当W=0时,置对应I/O口为输出;W=1,置I/O口为输入。

实例:MOVLW 0x00 ;把00H送入WTRIS RA ;置PIC RA口为输出MOVLW 0xFF ;把FFH送入WTRIS RB ;置PIC RB口为输入说明:这是PIC汇编语言中常用的几条指令,即设置某个I/O口(这里是RA口和RB口)为输入或输出的语句。

可见,识读指令时,一应充分理解语句格式的功能,二应前后联系阅读。

3 W寄存器内容送寄存器f(W内容保持不变)指令指令格式:MOVWF f说明:MOVWF是Move W to f的缩写实例:MOVLW 0x0B;送0BH送WMOVWF 6 ;送W内容到RB口说明:第一条指令0x0B(常数11)送工作寄存器W,第二条指令,把W内容常数11送到寄存器F6中,查表F6即为RB口,所以PORT_B(B口)=0BH=D114 寄存器f传送指令指令格式:MOVF f,d说明:MOVF是Move f的缩写。

F代表PIC中的某个寄存器。

指令中的d规定:d=0时,f内容送W;d=1时,f内容送寄存器。

实例:MOVF 6,0 ;RB口内容送WMOVWF 8;RB口内容送f8说明:第一条指令中的6代表寄存器f=6,查寄存器表f=6为RB口;0代表d=0,代表选择的目标为寄存器W。

第二条指令中的8代表寄存器f=8。

所以两条指令结果是把RB口的内容送f8。

至于f8内容是多少?还应在汇编语言开始时附加指令,这里从略。

5 空操作指令指令格式:NOP说明:NOP是英语No Operation的缩写。

NOP无操作数,所以称为空操作。

执行NOP 指令只使程序计数器PC加1,所以占用一个机器周期。

实例:MOVLW 0xOF;送OFH到WMOVWF PORT_B ;W内容写入B口NOP;空操作MOVF PORT_B,W ;读操作说明:该三条指令是一种对I/O口的B口连续操作的实例,其目的达到写入B口的内容要读出时,应保证写、读之间有个稳定时间,因此加入了空操作指令NOP。

6 无条件跳转指令指令格式:GOTO k说明:执行该条指令时,将指令转移到指定的地址(跳转)。

指令中的k,常与程序中的标号联系起来。

实例:见第9条指令中7 寄存器内容减1,结果为零的间跳指令指令格式:DECFSZ f,d说明:DECFSZ是英语Decrement f,Skip of not 0的缩写。

符号f,d代表的意义,前述已作说明。

该条指令是指寄存器的内容减1存入W(d=0)或f(d=1)中。

若指令执行结果减1不为零,指令顺序执行;为零时,就间跳下一条指令后再执行(等效顺序执行一条空指令NOP),实际指令中,当d=1时,该项常被略去。

8 寄存器内容加1,结果为零间跳指令指令格式:INCFSZ f,d说明:INCFSZ是英语Increment f,Skip of 0的缩写。

该条指令与上一条(7)指令差别仅在于“1”上,即执行这条指令时,寄存器f内容加1,若结果不为零,则指令顺序执行;为零则指令间跳执行。

执行这条指令的其它逻辑关系与上条相同。

9 子程序返回指令指令格式:RETLW k说明:RETLW是Return Literal to W的缩写。

该指令代表子程序返回,返回前先把8位立即数送W。

实例:PIC某个汇编语言的延时子程序(摘要):(1)BELY MOVLW 0xC5 ;送延时常数0C5H入W(2)MOVWF COUNT2;0C5H送入计数器2(3)CLRF COUNT1;对计数器1清零(4)LOOP INCFSZ COUNT1;计数器1加1计数器1加1结果不为零,跳转循环(5)GOTO LOOP;(6)DECTSZ CPUNT2 ;计数2减1计数器2减1结果不为零,跳转循环重复执行第4条指令(7)GOTO LOOP;(8)RETLW 0;子程序执行结束返回说明:程序中的注释已分别对每条指令的功能作了说明,补充说明1 当执行第(4)条加1指令结果为零时,就间跳转到执行第(6)条指令。

2 当执行第(6)条减1指令结果为零时,就间跳转到第(8)条子程序返回,整个延时指令才算完成。

3 计数器1或2代表PIC中某个寄存器,该寄存器由程序开始的伪指令赋值决定(关于伪指令今后将作专门介绍)。

PIC8位单片机汇编语言常用指令的识读(下)本文关于指令的注释将与前述指令中的略有不同。

前述指令注释时是对指令具体完成的功能给以说明,这种注释方法对初学者确实易于接受和理解,但是实际应用中的PIC产品汇编语言的注释通常是以程序要做什么(或指令的作用)而不是说指令的直接功能。

鉴于上述原因,下述的指令注释将改变过去的注释方法,用程序应起的作用作注释。

10 寄程器半字节交换指令指令格式:SWAPF f,d说明:SWAPF是Swap f的合写。

符号f、d的意义与前述的相同。

该条指令的功能是寄存器f的高4位与低4位交换,即指令执行前,若寄存器f的8位状态为D7、D6、D5、D4、D3、D2、D1、D0,执行后的8位状态变为D3、D2、D1、D0、D7、D6、D5、D4,其结果存入W(d=0)或f(d=1)中。

实例:中断现场保护是中断技术中重要部分。

由于PIC16C××指令系统中没有进栈PUSH 和出栈POP指令,所以只能用其它指令来实现。

因为在主程序中常常用到工作寄存器W和状态寄存器STATUS,所以中断现场保护常要保护寄存器W和STATUS。

相关文档
最新文档