PIC单片机中的bank和PC问题

2020-02-12来源: eefocus关键字:PIC单片机  bank  PC问题

简介:PIC单片机的bank和PC的问题往往在我们进行查表时和BANK设置时很容易出错。下面小编就大家来着重来介绍下面这俩点。希望能对大家有所帮助。


1、 BANK设置错误:

先来看一段程序:

include

PORTDB EQU 20H

……

START

movlw b‘11110000’

movwf PORTDB

clrf TRISD

MAIN

bcf STATUS,C

rlf PORTDB,1

btfsc STATUS,C

bsf PORTDB,0

movf PORTDB,W

movwf PORTD

call DELAY

goto MAIN

……

上面的是一个将D口的发光二极管循环点亮的小程序,实际运行发现并不能达到点亮的效果。通过设置断点和观察变量的手段发现,单片机在执行“clrf TRISD”这一语句后,TRISD寄存器的值为0FFH,而PORTD的值被清成了0。这是因为未设置BANK的缘故,此时BANK=0,而TRISD寄存器却是位于BAKN1的。因此,在该语句前要加上一句“bsf STATUS,RP0”,使BANK=1。


经过改动,运行后发现程序仍然不正常。同样使用设置断点和观察变量的手段来分析程序,发现同样由于BANK设置的错误,单片机并未对位于BANK0的PORTD、 PORTDB操作。因此,在该语句前要加上一句“bcf STATUS,RP0”,使BANK=0。经过这样的调整后,程序运行正常了。


实际上,这样的错误很容易发生,在编写比较复杂的需要常常切换BANK的程序时更是如此。建议初学者在写程序时在有可能的情况下,在每次对BANK0以外的寄存器操作完成后都将BANK切换回BANK0。这样做虽然会麻烦一些,但会减少错误的发生,使调试更为简单一些。


2、 PC操作错误:

在进行查表操作时需要对PCL进行操作,这项操作也比较容易出错。举个例子来说:

……

00CA bcf PCLATH,0

00CB movf RTCCSIG,W

00CC addwf PCL,1

00CD goto main

00CE goto RtccS1

00CF goto RtccS2

00D0 goto Rtccs3

00D1 goto Rtccs4

……

0130 bsf PCLATH,0

0131 movf RTCCSIG1,W

0132 addwf PCL,1

0133 goto SetHour

0134 goto SetMins

……

上面的程序是高奇ICD教学实验套件的演示程序CLKTEST.ASM编译完成之后的List文件中的一段,前面的4位数据是16进制数,代表了该程序行在单片机内程序存储器的装载位置。其中00CA句和0130句保证了执行“addwf PCL,1”语句后PC能跳转到正确的位置,感兴趣的朋友可以将这两句屏蔽后看一下结果。


在PIC16F877单片机中PCLATH寄存器是一个低5位有效的寄存器,单片机在执行“addwf PCL,1”语句时,会将PCLATH和PCL寄存器的值(PCLATH:PCL)一起送入程序计数器PC。以上面的程序0132H句为例,此时PCL=32H如果此时PCLATH=00H,RTCCSIG1=1则执行完该句后PC=PCLATH:PCL=0033H,这样在下一个指令周期到来时就发生了错误。本来该执行第0134H句的,却变成了执行第0034H句。同样的,我们能够知道第00CAH句的作用。避免发生这样错误的方法是:在调试程序的时候调出List文件,特别关注一下有这类操作的语句,再根据实际的情况来决定PCLATH的值。

关键字:PIC单片机  bank  PC问题 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic487969.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:PIC单片机程序基本结构框架
下一篇:PIC单片机编程格式和风格

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

PIC单片机振荡电路中怎样选择晶体?
PIRX 注: X可以是1 2 3 4.。。。不同型号的单片机数目不同INTCON 中断控制寄存器讲解:1开启或关闭 全体的中断功能(GIE)2开启或关闭全体外设的中断功能(PEIE)外设就是在外设中断允许/标志寄存器里面所写的设备。3开启一些中断事件。PIEX 与 PIRX 是相互对应的如:当把PIE1的TMR1IE设置为1 定时器timr1将开启中断。等到TMR1定时器溢出后,则会在PIR1的TMRIF将为1,并且执行中断程序。实例讲解:我们把上一讲的《PIC单片机之定时器》中的实例修改成中断方式 实现 每隔 50MS亮起LED,每隔50MS灭掉LED。/*开发环境MPLAB X IDE 芯片型号PIC
发表于 2020-02-08
PIC单片机程序设计需要注意的一些问题及看法
一、区分指令的大小写编写PIC单片机的源程序,除了源程序的开始处需要严格的列表指令外,还须注意源程序中字母符号的大小写规则,否则在PC机上汇编程序时不会成功。在源程序中都会使用伪指令INCLUDE。这条指令将列表中指定的单片机文件(在MPLAB中)渎入源程序作为源程序的一部分,所以凡是MPLAB中有关该单片机已有的寄存器在源程序中无须再用赋值指令(EQU)赋值,这就使所建立的源程序大为简化。此外,由于有了伪指令INCLUDE,所以根据MPLAB软件中的格式,在源程序中的操作数凡是涉及MPLAB已规定的寄存器名称的,其字母一律只能大写,不能小写。其余操作码、符号字母可任意大小写,但0x中的X应小写。否则汇编不会成功。鉴于上述原因
发表于 2020-02-08
关于PIC单片机之探讨低功耗
1、睡眠(sleep)睡眠方式是我们最常用的一种方式来降低功耗,但睡眠期间单片机不能做任何的事情。对于那些没事情就睡着,有事情就做一下的情况睡眠无疑是功耗最低的处理方式。比如:睡眠+ I/O电平变化中断唤醒当按键没按下时,单片机睡眠,当按键按下后,执行相应的工作。睡眠+数据接收中断唤醒这样单片机就可以再没有接收到数据时候进入睡眠状态,接收到数据的时候就唤醒然后处理数据。当然首先单片机要有相关的外设比如SPI ,I2C,USART,等这些支持这些通讯的模块。睡眠+看门狗唤醒这个可以用在需要定时唤醒做事情的场合2、降低时钟频率如果即想功耗低,又想单片机在能低功耗的情况下工作。这无疑是个最好的选择。PIC单片机 比如PIC
发表于 2020-02-08
PIC单片机A/D转换数据存储以及串口效率
PIC 单片机A/D 转换后的数据通常需要占用两个8 位宽的RAM 单元, 而PIC 单片机的存储单元有限,因此造成了单片机的存储单元不能被有效利用, 同时通过串口向上位机传送数据时也需要花费较多的时间。为此提出一种数据打包的方法, 使得相同的数据量占用较少的存储空间, 并可提高传输效率。引言在由单片机和PC 机构成的检测系统中, 通常会由多个单片机采集数据并将经过A/D 转换的数据通过串口送往上位PC 机进行数据处理。PIC 单片机A/D 转换后的结果大多是8 位或10 位的, 8 位的A/D转换不涉及该问题。以10 位的数据为例, 在单片机内进行存储时需要占用2 个8 位的字节, 低8 位和高2位分别存储在2 个字节中
发表于 2020-02-07
PIC单片机各功能模块介绍
PIC16F616是一款14引脚、8位的CMOS单片机.采用精简指令集,仅有35条指令,由于采用了数据总线和指令总线分离的哈佛总线结构,使得除少量指令不是单周期之外,大部分的指令都是单周期指令.这样有利于提高单片机的运行速度和执行效率.PIC16F616这款单片机供电电压可以在2V到5.5V之间,内部集成了一个RC振荡器,频率可以配置成8MHZ或者4MHZ,也可以用外部晶振 提供时钟.内部集成有AD转换、比较器等硬件模块,还具有上电复位、欠压复位、看门狗、代码保护等功能.三个定时器、PWM发生器等可以由用户编程.下面 电工之家介绍关于PIC单片机的这些模块和功能.1.存储器PIC16F616分为程序存储其和数据存储器,程序存储器
发表于 2020-02-07
PIC单片机入门必看基础知识
PIC单片机的特点及与51系列单片机的区别:这里仅以使用广泛的中低档PIC16/PIC12/10系列为例说明。PIC系列单片机采用哈佛总线结构,程序空间总线和数据总线分开,地址长度也不一样,也同样不在一个连续的空间,程序为单字结构,一句程序占用一个程序字长,这与51不一样,51系列则采用冯.诺依曼结构,程序空间和数据空间共用一组8BIT的总线,程序空间和数据空间共用一个连续的地址空间;程序为多字节结构,根据不同指令及数据每句程序有不同的长度,这种结构有可能在程序跑飞的时候让系统把数据当做指令执行。PIC系列单片机使用精简指令集,总共不超过35条指令,采用预取指令的做法使绝大多数指令只要一个指令时钟周期,51则采用复杂指令集,需要
发表于 2020-02-07
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多每日新闻
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved