PIC单片机:读-修改-写问题及解决方案

发布者:EnchantedDream最新更新时间:2011-05-07 关键字:PIC单片机  读-修改-写 手机看文章 扫描二维码
随时随地手机看文章

  何谓读-修改-写,导致的问题及其解决之道:

  只要PICmicro的命令,所处理的FILE (暂存器,内存,和I/O的统称),其最终的值,和命令处理前的值有关,那么,这种命令便是所谓的读-修改-写命令。因为这类命令的操作,可以再细分为三个小步骤,即是读(READ),修改(MODIFY),接著才是写(WRITE)。

  如:ADDWF,DECF,IORWF,XORWF,BSF,BCF,‥‥等等皆是。

  在使用这类命令的时候,如果所处理的FILE是I/O, 就必须要特别小心。因为,假设任务电压为5V;而您在PORTB的8支脚,没有串接电阻,分别接了8颗二极管(也许是LED)到地。如果,您在先前下了"BSF PORTB,0"这条命令,使得PORTB第0脚上的LED亮了。当您再运行了”BSF PORTB,1"这条命令后,虽然PORTB第1脚上的LED亮了,但是,PORTB第0脚上的LED却会熄掉。原因是因为,运行”BSF PORTB,1”时,会先将整个PORTB的值往回读,而它读到的PORTB第0脚,却是相当於低电位(被二极管拉为0.7V)。当它再把整个PORTB的值写出去的时候,PORTB第0脚就被写成低电位,自然灯就熄了。

  解决之道是:串电阻,或者不要直接对I/O作读-修改-写命令。

  另外还有一类要注意的状况是:如当您将”BSF PORTB,0”和”BSF PORTB,1”两条命令连在一起,没有空运行时,纵使您没有上一段所述线路设计不良之状况,有时候您也会发现PORTB, 0的高电位也会不见了。导致这个现象的原因是:因为也许您这两支脚的外面接了长导线,有相当大的电容、电感性会阻止电位的变化;而且,PIC命令运行是在最后1/4周期时”写出”,而在第一个1/4周期时”读入”,PORTB,0还来不及升至高电位,便被下一个命令读回去了。

  解决之道是:通常在两道命令间插入个NOP命令就可以了。

关键字:PIC单片机  读-修改-写 引用地址:PIC单片机:读-修改-写问题及解决方案

上一篇:PIC16F946使用LCD的技巧
下一篇:PIC单片机循环程序实例

推荐阅读最新更新时间:2024-03-16 12:35

基于PIC18Fxx的永磁无刷直流电动机控制系统的开发
引言 嵌入式系统是指以应用为中心,以计算机技术为基础,软、硬件可裁剪,适应应用系统对功能、体积、成本、可靠性、功耗严格要求的专用计算机系统。嵌入式系统是面向应用的,系统的硬件选型和软件开发模式都必须根据具体的应用确定。 永磁无刷直流电动机是电机控制研究领域的热点之一,这与其自身固有的技术优势密切相关:以电子换相取代了有刷直流电动机的机械换相。从根本上革除了普通有刷直流电动机由于电刷换相带来的火花、噪音、高故障率等一系列问题,同时又使系统的性能能够与普通有刷直流电动机相媲美,因此得到了广泛的应用。永磁无刷直流电动机的电子换相离不开电机的转子位置信号,传统的方法是采用霍尔器件或其他位置传感器检测位置信号,这使得系统的维护和制造都不
[单片机]
基于PIC18Fxx的永磁无刷直流电动机控制系统的开发
PIC单片机软件异步串行口实现技巧
  在用单片机开发各种嵌入式应用系统时,异步串行通信是经常要用到的一种通信模式,很多应用中还要求实现多路异步串行通信。大家平时熟悉的各种厂家的单片机,绝大部分片上只提供一个硬件UART模块,利用它可以方便实现一路串行通讯。PIC系列单片机也不例外,在其丰富的产品家族成员中,除高端系列(PIC17/18)一些型号片上带有两路硬件UART模块外,其它大部分型号片上只有一路UART,一些低端廉价的PIC单片机甚至还不带硬件 UART。为了提高系统的性能价格比,就要求设计工程师用软件增加实现一路或多路异步串行通信。很多工程师对用软件实现的UART在可靠性和效率方面持怀疑态度,其实关键问题是看软件采用何种方式来实现可靠的UART功能。   在
[单片机]
<font color='red'>PIC单片机</font>软件异步串行口实现技巧
PIC单片机开发中PICC编译环境的应用
PICC基本上符合ANSI标准,但是不支持函数的递归调用,其主要原因是PIC单片机特殊的堆栈结构。PIC单片机中的堆栈是硬件实现的,其深度已随芯片固定,无法实现需要大量堆栈操作的递归算法;另外在PIC单片机中实现软件堆栈的效率也不是很高。为此,PICC编译器采用一种“静态覆盖”技术,以实现对C语言函数中的局部变量分配固定的地址空间。经这样处理后产生出的机器代码效率很高。当代码量超过4KB后,C语言编译出的代码长度与全部用汇编代码实现的差别已经不是很大( 10%),当然前提是在整个C代码编写过程中需时时注意所编写语句的效率。   2 PICC中的变量   PICC中的变量类型和标准C语言一样,这里不再重复。为了使编译器产生最高效
[单片机]
PIC单片机学习方法
为了给前一段时间学习PIC16F616型单片机的一个总结和方便大家的交流,我写了这篇关于PIC单片机的学习心得,都是在看了手册和编程调试后用自己的语言组织的,其中有不足或者有疑问的地方希望大家能及时的给予纠正和批评,提出宝贵的意见. 2.PIC单片机的概述 PIC16F616是一款14引脚、8位的CMOS单片机.采用精简指令集,仅有35条指令,由于采用了数据总线和指令总线分离的哈佛总线结构,使得除少量指令不是单周期之外,大部分的指令都是单周期指令.这样有利于提高单片机的运行速度和执行效率. PIC16F616 这款单片机供电电压可以在2V到5.5V之间,内部集成了一个RC振荡器,频率可以配置成8MHZ或者4MHZ,也可以用外
[单片机]
基于PIC单片机的同步电动机新型智能励磁控制系统的设计
1 引言   同步电动机运行稳定性和可靠性对工业生产有重要的影响。单片机用于同步电动机励磁控制由于软件丰富,能使励磁装置结构简化、功能增多且易于实现复杂的控制规律,同时还具有参数整定灵活,使用维护方便和故障自诊断功能。目前,国内许多基于单片机的同步电动机励磁控制系统与传统的模拟励磁控制系统相比性能有很大的提高,但因为采用的单片机内部资源较少使得单片机外围电路复杂,其内部控制程序采用查表的方法,这样影响了整个励磁控制系统的精度、快速性和稳定性。PIC16F877单片机内部资源丰富,广泛应用于工业控制领域。我们研制了基于PIC16F877单片机的同步电动机新型智能励磁控制系统,控制程序可以实时计算,利用内部的捕捉单元可以很容易实
[单片机]
基于<font color='red'>PIC单片机</font>的同步电动机新型智能励磁控制系统的设计
PIC单片机LED流水灯程序
P IC 单片机 LED 流水灯程序 ;************************************************************* include p16f877.inc ;************************************************** __CONFIG 3F39H;设置配置位中振荡方式为XT,其它全部禁止或关闭 ;*---- MODESEL equ 20h MODESELB equ 21h Count equ 22h Count1 equ 23h Count2 equ 24h PORTDB equ 25h ;*----- org
[单片机]
基于PIC单片机自动太阳跟踪器的设计
  光伏发电能为人类提供可持续能源,并保护赖以生存的环境,但其发电效率低,发电成本相对较高仍然足制约其大规模应用的重要因素。在没有出现高效的光伏电池材料之前,研制具有实用价值太阳聚光器及自动跟踪系统以实现低成本,则是促进太阳能广泛应用的主要途径之一。一般双轴系统可提高发电量35%左右,单轴系统可提高20%左右,聚光型跟踪系统会更高。   国外在20世纪80年代就对太阳跟踪系统进行了研究,如美国、德国在单双轴自动跟踪、F1本在聚光菲立尔透镜跟踪、西班牙在2倍聚光反射跟踪等方面均开发出了相应的商品化自动太阳跟踪器。我国于20世纪90年代左右也对其进行了大量的研究,2006年10月在西藏羊八井安装了4套共计13.2 kW不同形式的单
[单片机]
基于<font color='red'>PIC单片机</font>自动太阳跟踪器的设计
基于ICL7135与PIC单片机的温度变送器
  对A/D 转换数据的智能控制。本文以 PIC 单片机与 ICL7135 的实际工程应用为例,介绍一款智能温度控制仪表在 温度变送器 中的应用。   1 PIC 单片机   PIC 系列 8 位 CMOS 单片机具有独特的 RISC 结构,数据总线和指令总线分离的哈佛总线(Harvard)结构,使指令具有单字长的特性,且允许指令码的位数可多于 8 位的数据位数, 这与传统的采用 CISC 结构的 8 位单片机相比,可以达到 2:1 的代码压缩,速度提高 4 倍。   PIC 有优越开发环境、彻底的保密性、PIC 以保密熔丝来保护代码,用户在烧入代码后熔断熔丝,别人再也无法读出,除非恢复熔丝、自带看门狗定时器,可以用来提
[单片机]
基于ICL7135与<font color='red'>PIC单片机</font>的温度变送器
热门资源推荐
热门放大器推荐
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved