让我们来从PIC的指令结构上来分析一下为什么PIC中要有BANK和PAGE的设置吧。先来看一下为什么PIC中要把RAM区划分多个BANK。
仔细观察PIC汇编语言指令的格式,一条完整的汇编语言指令语句通常是这样的:标号 操作码助记符 操作数1,操作数2;注释。其中,主体部分是‘操作码助记符 操作数1,操作数2’。
例如:
指令:MOVF 33,1
操作码助记符:MOVF ;
操作数1:33 ;
操作数2:1 ;
而在程序被编译时指令语句的主体部分会被转换为代码的形式,通常是:指令代码 操作数2 操作数1。
例如在指令位数为14位的中档PIC单片机中:
指令:MOVF 33,1
转换后代码:00 1000 1 011 0011
其中指令代码为:00 1000(MOVF f,d=00 1000 dfff ffff);
操作数2:1 (d = 1);
操作数1:011 0011 (f = 33H) ;
可以看到,由于指令代码占用了6位,再加上操作数2占用的1位,分配给操作数1的只有7位了。也就是说操作数1最大只能是‘111 1111’(7FH),因此‘MOVF’直接的寻址范围只能是00H~7FH之间。其它的对寄存器操作的指令情况基本相同,因此指令位数为14位的PIC 单片机将每125个(00H~7FH,80H~FFH……依此类推)寄存器划分为一个BANK,并且将STATUS寄存器的RP1、RP0为定为BANK 设置位。在编写程序时,要对某个寄存器进行操作就首先要对BANK的设置位进行设置,从而切换到该寄存器所在的BANK。
例如PIC16F877的EECON1寄存器(地址18CH)就要通过设置BANK的形式来寻址了,这时寻址的地址数据是这样组成的‘BANK值+操作数1’,其中‘BANK值’=‘RP1 RP0’。
举个例子来说:
指令:BSF EECON1,1 ;
指令转换后代码:0101 001 000 1100 ;
这时如果‘BANK值’=3,寻址的地址数据就会是‘11 +000 1110’(18CH);而此时如果BANK值为0,则寻址的地址数据就会是‘00 +000 1110’(0CH),这样就出现了错误。
用同样的方法我们可以分析PIC的PAGE的设置。举个例子,PIC16C5X的一个页面是512条指令。它的‘GOTO’指令是这样的:‘101 k kkkk kkkk’(‘GOTO’指令没有操作数2)。我们看到该指令的操作数1最大只能是‘1 1111 1111’(1FFH),因此在指令位数为12位的PIC16C5X 芯片中‘GOTO’指令只能在512条指令(000H~1FFH,200H~3FFH,……)的范围内直接跳转。同样的理由,PIC16C5X的 ‘CALL’指令(‘1011 kkkk kkkk’)只能调用256条指令(000H~0FFH,200H~2FFH,……)范围内的子程序,因此在进行PIC16C5X的编程时要将供调用子程序的入口放在前半页面。
而在指令位数为14位的PIC16F87X单片机中‘GOTO’指令代码是‘101 kkk kkkk kkkk’,而‘CALL’的指令代码是‘100 kkk kkkk kkkk’,它们的寻址范围都是‘111 1111 1111’(3FFH)。因此在PIC16F87X单片机中,一个页面长度就是3FFH=2048条指令(2K)。而且在使用中,使用‘CALL’指令时就不需要将子程序入口放在上半页面了。
关键字:PIC单片机 Page Bank
引用地址:
PIC单片机的Page和Bank
推荐阅读最新更新时间:2024-03-16 15:19
PIC单片机红外遥控编码与解码的问题分析
一般常用的红外遥控器编码规则都差不多,基本上都同6221原理一样 PIC单片机接收时: 如果用54,57这类片子做的话有一定的难度(假如要做成实时控制的;比如说你还要驱动显示,驱动步进电机,在加上几个按键)原因就是这类片子没有中断 例程如下(用来解6221;分频比为256) RF: BTFSC PORTB,2;;B2口用做接收口 GOTO RF1 BTFSS DOWNBIT;;检测下降沿标制 CLRF RTCCOUNT BSF DOWNBIT;制下降沿标制 BTFSS UPBIT;;检测上升沿标制 RETLW 0 BTFSC IDBIT;;检测码头标制 GOTO RF3 MOVLW 2AH SUBWF RTCCOU
[单片机]
PIC单片机软件平台----MPLAB IDE和MPLAB X IDE
这里主要是针对PIC18单片机开发平台,当然对于16位或32位单片机的开发平台是一样的,只是编译器不一样。PIC18单片机有两个开发平台,一个是MPLAB IDE,对应的编译器为MPLAB C Compiler for PIC18 MCUs.exe;一个是MPLAB X IDE,对应的编译器为xc8-v2.00-full-install-windows-installer.exe。 下载链接如下: https://download.csdn.net/download/euxnijuoh/10889265
[单片机]
ICL7135与PIC 单片机在温度变送器中的应用
引言 在智能仪表设计中,经常用到 A/D 转换器。在常用的 A/D 转换中,7135 应用最为广泛, 它具有 41/2 位 A/D 转换精度,抗干扰能力强,价格低廉,主要用于检测参数的测量显示, 在智能仪器仪表中,常利用其 A/D 转换特性,与单片机串行连接,通过简单的人机界面实现 对A/D 转换数据的智能控制。本文以 PIC 单片机与 ICL7135 的实际工程应用为例,介绍一款智能温度控制仪表在温度变送器中的应用。 1 PIC 单片机 PIC 系列 8 位 CMOS 单片机具有独特的 RISC 结构,数据总线和指令总线分离的哈佛总线(Harvard)结构,使指令具有单字长的特性,且允许指令码的位数可多于 8
[单片机]
基于PIC单片机花样彩灯控制器程序设计
1.带进位位(C)的寄存器f内容左移循环指令 格式: RLF f.d 其中d=1,结果→f;d→0,结果→w,功能如下图所示。 2.带进位位(C)的寄存器f内容右移循环指令 格式:RRFf.dd的取值同上,功能如下图所示。 利用循环指令和多种送数和延时循环程序,设计PIC单片机的花样彩灯控制器,是最容易和最简单的事例。 鉴于花样彩灯的软件设计简单,这里例举的花样彩灯控制器的源程序,自定义文件名为PIC07.ASM,其源程序清单如下: 说明: (1)上述花样彩灯的源程序约80余条,用PIC16F84A单片机B口上的LED作模拟显示,产生不同花样共5种的LED闪亮。 (2)若要将该花样彩灯制成产品
[单片机]
PIC单片机开发工具
MPLAB简介 MPLAB 集成开发环境(IDE)是一个综合的编辑器、项目管理器和设计平台, 提供以下功能:使用内置的编辑器创建和编辑源代码、 汇编、编译和链接源代码, 通过使用内置的软件模拟器观察程序流程,或者使用在线仿真器或在线调试器以实时方式观察程序流程来调试可执行逻辑, 用软件模拟器或仿真器进行时序测量, 查看Watch 窗口中的变量, 使用器件编程器将固件烧写入器件。软件可以从Microchip公司的官方网站免费下载,使用时重点注意几个菜单项:在线调试,电源选项,芯片型号选择,单片机配置位的设置。 编译器MC18 MPLAB C18是适用于PIC18系列单片机独立而优化的ANSIC 编译器。此编译器是Microch
[单片机]
PIC单片机C语言程序设计(14)
十五、Pic单片机的A/D转换 在电子技术中,传感器是一种很重要的器件,传感器的种类也有多种,如温度传感器、光敏传感器、压力传感器……,其特点是能把非电量,如温度、光度、压力等转换成相关的电量(电流或电压)。这些电量都是模拟量,可用Pic 单片机的A/D 转换,将上述的模拟量转换成数字量,再将数字量进行各种处理,如LED、LCD 显示。 Pic16F87X 系列单片机, 具有A/D 转换的功能。Pic16F876/873 芯片为28 引脚, 有5 个模拟输入端的10 位A/D 转换(5 通道);Pic16F877 为40 引脚,有8 个模拟输入端的10位A/D 转换(8 通道)。Pic16F876/873 芯片的模拟
[单片机]
PIC单片机虚拟串行通信设计
1.实例目的: 本实例完全建立在计算机软件的基础上,利用PROTEUS软件构建一个单片机系统,利用VB编写一个计算机控制软件和单片机系统串行通信,计算机上的控制软件可以发送一个值在0——999之间的数,在单片机系统上显示出来,单片机系统上也可输入一个相同值域的数并在计算机控制软件上显示出来。本实例主要是为了展示虚拟串行通信的仿真。 2.系统配置 本实例虽然简单,但是要想看到想要的仿真结果,建立虚拟的串口连接是必不可少的。要想仿真串行通信,必须要把单片机系统上的串行口与计算机上的串行口连接,这样他们之间才能传输数据,但由于是仿真,实际没有相连接,所以需要创建一对虚拟串行口并使他们相连,这里我使用的是这个软件Virtual Ser
[单片机]
基于PIC单片机的轨道压力测试仪的实现
轨道电路是信号联锁的室外重要设备,起着保证行车和调车作业安全的作用。它能监督检查某一固定区段内的线路(包括站线)是否有列车运行、调车作业或车辆占用的情况,并能显示该区段内的钢轨是否完整。它是以钢轨为导线,轨缝间用接续线连续起来,一端接电源,另一端连接受电器,通过轨道电流来工作。 轨道电路能否正常工作直接影响到列车的安全行驶,因此,对轨道电路的检测尤为重要,目前市场上的检测设备还很少,而且普遍存在功耗大,价格昂贵,体积大等不足。为此,本文通过对轨道电路分析研究,设计一种高精度的压力测试仪器来模拟火车对轨道的压力,从而验证轨道电路的性能。 系统的组成及其工作原理 本系统以PIC16F876A单片机为核心,通过软件
[单片机]