何谓读-修改-写,导致的问题及其解决之道:
只要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何谓读-修改-写,导致的问题及其解决之道
推荐阅读最新更新时间:2024-03-16 15:23
基于PIC18F458与OSEK/VDX的电动助力转向系统设计方案
详细分析电动助力转向系统(eps)的原理及其工作流程,采用pic18f458单片机作为控制器,通过其增强型的PWM脉宽调制模块ECCP控制助力电机,实现eps系统的助力控制、回正控制、阻尼控制等方式。 应用软件采用OSEK OS嵌入式操作系统为平台,将eps系统进行多任务划分,通过优先级调度达到系统协调运行的目的。 随着电子技术和电机控制技术的发展,电动助力转向(Electronic Power Steering,eps)系统的研究取得了很大进步。目前,汽车电动助力转向已部分取代传统液压动力转向(Hydraulic Power Steering,HPS)。 经过20多年的发展,eps技术日趋完善,已经取得了相当大的
[汽车电子]
PIC单片机的时钟模式
任何一个单片机要工作都需要一个时钟使单片机按给定的时钟节拍一步一步的执行程序。对于这样一个时钟,在PIC单片机上有多种工作配置方式,比起传统的51系列单片机,其时钟模式得到了极大的丰富,然而这给初学者带来了一定的困难。 单片机标准时钟模式:用石英晶体或陶瓷振荡器产生工作时钟,如图1所示。 图1 PIC单片机晶体振荡原理图 与普通单片机相比,PIC晶体振荡模式的最大特点是内部振荡电路放大器的增益是可调的。如图1,Rf为增益调节电阻。主要原因是不同振荡频率的晶体,为保证其可靠振荡而所需的激励功率是完全不一样的。按常规,振荡器频率越低,其所需的激励功率越小。 如果振荡器输出给晶体的激励功率不符合晶体自身的工作特性要求,可能就会有
[单片机]
微芯PIC24F“GC”MCU满足更高的设计及成本需求
和数字电路的设计相比,模拟电路的设计往往会复杂的多。如何尽可能的降低产品设计的复杂性也是很多模拟器件提供商试图攻克的难关。Microchip Technology Inc.(美国微芯科技公司)公司通过其智能模拟集成技术帮助工程师调试噪音和通信,可以简化产品设计,实现数据的完整性。和分立式的产品设计相比,智能模拟技术优势明显:具有更快的数据路径,可以减少噪声;针对不同的应用,工程师不需要重新进行设计,通过软件就可以更改模拟参数、控制数据链的连接;简化电路板设计并缩小电路板尺寸,从而可以使用户实现更低的设计成本和更快速的上市的时间。
Microchip刚刚推出的全新单片机(MCU)系列PIC24FJ128GC010就是一款集成了一
[单片机]
PIC单片机的应用技巧介绍
1 ICD2作为程序烧写的使用 1.1 ICD2简介 MPLAB ICD2在线调试器是一款低价位的PIC开发工具。它利用Flash工艺芯片的程序区自读写功能来实现仿真器调试功能;使用的软件平台是Microchip的MPLAB IDE(集成开发环境软件包),兼容Windows NT、Windows 2000和Windlows XP等操作系统。其通信接口方式可以是USB(最高可达2Mb/s)或RS-232串行接口方式;工作电压范围为2.O~5.5V,可支持最低2.0V的低压调试。 MPLABICD2可以支持大部分Flash工艺的芯片。它不仅可以用作调试器,同时还可以作为开发型的烧写器使用。 1.2 ICD2作为烧写器时的配置
[单片机]
PIC单片机振荡电路中怎样选择晶体?
什么是中断程序呢? 形象的生活比喻就比如你现在这在看我的文章,突然你的朋友喊你一起去烤地瓜,这时候你就中断了看文章和朋友烤地瓜去了,烤完地瓜之后你又回来看文章。烤地瓜这件事就好比中断程序,他中断了你看文章这件事。在程序方面来说 当CPU在执行一个程序的时候,突然产生了中断事件CPU就去执行中断程序了,当执行完成后CPU又回来执行原先的程序。 中断事件 什么是中断事件,就是引起中断的事件。对于单片机来说这些事件是多种多样的。比如 说一个按键按下,一定的时间到了,一串数据发送完毕,或接收完一个数据。 讲到中断不得不讲讲和中断相对的 查询。其实不管是按键按下 还是 时间到,还是数据发送完毕,这些事实上都可以用查询的方式办
[单片机]
PIC16C72A在汽车电子智能仪表中的应用
1 设计思想 本设计采用 PIC16C72A单片微型计算机作为仪表的核心,汽车原有传感器无需更换,传感器的输出信号通过信号调理电路后送人CPU,经CPU处理后的信号采用时分技术通过VFD显示器显示出来。实时显示车速、发动机转速、水温、油位、总里程、子里程等车况参数,并对信息进行复杂处理从而为司机提供平均车速、经济油耗、剩余油量能跑里程数等有用信息,同时,还能对瞬时行车信息进行记录存储,实现“黑匣子”功能;对异常情况实现语音报警提示,且为今后功能扩展预留通讯接口。与传统汽车仪表相比,该仪表具有功能丰富、可靠性高、精度高、可视性好、通用性强、且有储存功能、无机械磨损、使用寿命长等优点。 2 硬件结构 轿车用汽车电
[单片机]
基于AT89S52与PIC16F877A的在线编程控制系统的设计
l 引 言 通常进行单片机的实验或开发时,传统的并行编程方法中,编程器是必不可少的。仿真、调试完的程序需要借助编程器烧到单片机内部或外接的程序存储器中。在开发过程中,程序每改动一次就要拔下电路板上的芯片,编程后再插上。随着计算机技术的发展,许多公司推出了带有片内FLASH存储器的MCU,FLASH存储器具有电可擦除、无需后备电源保护数据、可在线编程等特点。在线编程目前有两种实现方法:在线系统编程(ISP)和在线应用编程(IAP)。ISP一般是通过单片机专用的串行编程接口对单片机内部的FLASH存储器进行编程,例如AT-MEL公司的单片机AT89S52就提供了一个SPI串行接口对内部程序存储器编程(ISP)。 在线编程(ISP)
[单片机]