要做一个报警功能的东东,要求可以通过遥控来改变遥控内容。由于对系统的稳定性要求很高,所以用了看门狗。
可是看门狗复位会引起所有寄存器重置,恢复到默认状态。遥控要改变的内容也被复位了,所以只能借助EEPROM来存储报警标志了。
我用的是MPLAB X IDE +XC8 编译器,XC8在语法上跟PICC有点不一样
EEPROM操作有两种方法,在该存储空间中定义命名变量,或者使用块访问程序来读取或写入EEPROM。
1. EEPROM 对象
__eeprom限定符可用于指示应将变量定位到EEPROM中。
例 __eeprom int serialNos[4]
将int 类型数组serialNos[]放到EEPROM中,注意,在XC8中int长度是16bit,而在其他MCU中,比如PC,int数值大小跟系统有关。
2. EEPROM初始化
对于那些支持对其EEPROM数据区域进行外部编程的器件,可以使用__EEPROM_DATA()宏将初始值放入可用于编程的HEX文件。
例:#include __EEPROM_DATA(0,1,2,3,4,5,6,7);
该宏有8个参数,代表8个数据值,每个值为1BYTE。未使用的值用指定为零,否则编译器会报错。
每次使用时,__EEPROM_DATA将从EEPROM地址零开始写入,自动递增8。
若想使用更多的数据,可通过多次调用该宏来定义所需数量的EEPROM数据。最好将该宏放在所有函数定义之外。
该宏不能在运行时写入EEPROM里,而是编程烧写的时候装入EEPROM中的。
使用__EEPROMSIZE来表示可用的EEPROM字节数。
3 . 访问函数
可以调用库函数来读取和写入EEPROM。
void eeprom_write(unsigned char addr, unsigned char value);
unsigned char eeprom_read(unsigned char addr);
使用这些函数时,会自动测试,并等待对EEPROM的所有并发写操作完成,再去执行所需的操作。
4. 访问宏
宏版本跟访问函数不同,宏用法如下。
EEPROM_READ(address)
EEPROM_WRITE(address, value)
EEPROM_READ宏会返回读取的字节。
在低档和中档器件中,如PIC8 PIC16 PIC18系列中,宏函数读取不会等EEPROM写操作完成,使用时应查询标志。
再使用宏版本访问时,最好将中断关闭。
例 : xc.h
while (WR)
continue;
value=EEPROM_READ(address);
关键字:PIC XC8 EEPROM操作
引用地址:
PIC XC8 EEPROM操作
推荐阅读最新更新时间:2024-11-08 15:57
【PIC32MZ】Timer定时器
PIC32MZ有多达9组Timer,但是并非任何时候都能同时使用,主要是在使用32位计数器时的问题。 Timer的2、4、6、8定时器支持16位和32位,但是在使用32位,占用的ID并非自身,而是下一个。以Timer4为例,在system_interrupt中可以看到,若是使用16位模式,显示为Timer4,而使用32位时,其使用的是Timer5。如果同时使用Timer4的32位和Timer5,生成代码时,则会出现冲突提示。 还有就是设置系统频率时需要注意,若是要求较短间隔(us),最好使用32位模式,因为分频后的频率数值若是超过计数器长度,则无法正常使用,并且没有提示,你会看到定时器没有起作用。 以下使用timer4
[单片机]
基于PIC16F876A单片机的轨道压力测试仪的实现
轨道电路是信号联锁的室外重要设备,起着保证行车和调车作业安全的作用。它能监督检查某一固定区段内的线路(包括站线)是否有列车运行、调车作业或车辆占用的情况,并能显示该区段内的钢轨是否完整。它是以钢轨为导线,轨缝间用接续线连续起来,一端接电源,另一端连接受电器,通过轨道电流来工作。 轨道电路能否正常工作直接影响到列车的安全行驶,因此,对轨道电路的检测尤为重要,目前市场上的检测设备还很少,而且普遍存在功耗大,价格昂贵,体积大等不足。为此,本文通过对轨道电路分析研究,设计一种高精度的压力测试仪器来模拟火车对轨道的压力,从而验证轨道电路的性能。 系统的组成及其工作原理 本系统以PIC16F876A单片机为核心,通过软件编程实现其对数据处
[单片机]
基于PIC12F675的人体探测器的设计与应用
引 言 现在,很多实验室出于保密性、安全性等原因考虑,常常将实验室从内到外隔成多个小实验室,当相关人员都在聚精会神地工作时,可能出现外面实验室门敞开而实验室内没人的情况,这可能导致不可预料的后果。为避免上述问题,需要在类似场合安装能检测人员进出的探测器,当有人进门或者出门时候能够发出不同的语音信号,以提示相关人员。 现在用于检测人员进出的探测器主要采用热释红外传感器。人体能够发射10μm左右的红外线,热释红外传感器就是靠接收这种红外线而进行工作的。这种探测器功耗小,隐蔽性好,价格低廉,但也具有以下缺点:①不能判断人员流动方向;②探测器穿透力差,人体的红外辐射容易被遮挡,不易被探头接收;③探测器容易受热源
[单片机]
PIC单片机编程风格和格式简介
首先我们来看一段程序: Tittle ‘Input.asm’ ;标题 ;这是一个简单的输入实验 include COUNT EQU 20H ;定义20H寄存器名为COUNT ORG 0 ;程序区将从0000H开始装载 GOTO START ORG 4 ;中断入口 GOTO INTEN ;中断发生时跳转到INTEN ORG 10 ;START将从第10行开始 START …… MAIN …… GOTO MAIN INTSEVER …… RETFIE ;中断返回 END ;程序结束伪指
[单片机]
基于PIC单片机的同步电动机新型智能励磁控制系统设计
1 引言 同步电动机运行稳定性和可靠性对工业生产有重要的影响。单片机用于同步电动机励磁控制由于软件丰富,能使励磁装置结构简化、功能增多且易于实现复杂的控制规律,同时还具有参数整定灵活,使用维护方便和故障自诊断功能。目前,国内许多基于单片机的同步电动机励磁控制系统与传统的模拟励磁控制系统相比性能有很大的提高,但因为采用的单片机内部资源较少使得单片机外围电路复杂,其内部控制程序采用查表的方法,这样影响了整个励磁控制系统的精度、快速性和稳定性。PIC16F877单片机内部资源丰富,广泛应用于工业控制领域。我们研制了基于PIC16F877单片机的同步电动机新型智能励磁控制系统,控制程序可以实时计算,利用内部的捕捉单元可以很容易实现自动投
[单片机]
PIC单片机复位系统模块介绍
PIC16F87X系列单片机的复位功能设计得比较完善,根据引起 单片机 内部复位的条件和原因,可以将PIC单片机复位系统分为五个模块进行介绍: 1.上电复位 每次单片机加电时,上电复位电路都要对电源电压VDD的上升过程进行检测,当VDD值上升到规定值1.6~1.8V时,就产生一个有效的复位信号,需经过72ms加1024个时钟周期的延时,才会使单片机复位。 2.人工复位(单片机在执行程序期间) 无论是单片机在按预先设定的正常顺序运行程序,还是出现单片机进入不可预知的某一个死循环,都必须认为单片机在执行程序。单片机在执行程序期间,只要在人工复位端MCLR加入一个低电平信号,就会令其复位。 3.人工复位
[单片机]
PIC单片机对数字温度传感器的控制设计
#include #define uchar unsigned char #define uint unsigned int #define DQ RC1 #define DQ_HIGH() TRISC1=1 #define DQ_LOW() TRISC1=0;DQ=0 __CONFIG(0x3B31); const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f}; const uchar table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd, 0x87,0xff,0xef}; uint te mper; uc
[单片机]
PIC单片机的4×4行列式键盘工作原理
PIC单片机的4×4行列式键盘工作原理: (1)单片机系统键盘原理 行列式键盘的接法比独立式键盘的接法复杂,编程实现上也会比较复杂。但是,在占用相同的I/O端口的情况下,行列式键盘的接法会比独立式接法允许的按键数量多,其原理图如图1所示。 图1 4×4行列式键盘的原理图 实际的工程中,可能会使用PIC16C5X这种通用的可编程的键盘、显示接口器件,使用PIC16C5X单片器件就能够完成键盘输入和显示控制两种功能。 行列式键盘的工作方式是先用列线发送扫描字,然后读取行线的状态,查看是否有按键按下。键盘部分提供一种扫描的工作方式,可以和具有64个按键的矩阵键盘相连接,能对键盘不断扫描、自动消抖、自动识别按
[工业控制]