历史上的今天
今天是:2024年10月16日(星期三)
2019年10月16日 | PIC单片机的EEPROM读写实例及说明
2019-10-16 来源:eefocus
; PIC单片机的EEPROM读写实例及说明
;****************************************************************************
; This is a program to test the function of reading&writting for EEPROM.
; You can observe the value of register(30H--?) buy changing "VALU" and "WRC_".
; Notice that:it must be { ADDR+WRC_<=0ffh } !
;****************************************************************************
include "p16f877.inc"
ADDR EQU 20H ;写入地址寄存器
VALU EQU 21H ;写入值
REC_ EQU 22H ;读计数
WRC_ EQU 24H ;写计数
org 0
goto main
main
bcf STATUS,RP1
bcf STATUS,RP0 ;bank0
movlw 10h
movwf ADDR ;写入EEPROM初始值
movlw 90h
movwf VALU ;初始写入值
movlw 30h
movwf FSR ;间址,读出值初始存放地址
movlw 0Fh
movwf WRC_ ;写入次数
movwf REC_
;incf REC_ ;读出次数
wri_ ;写子程序
bsf STATUS,RP1
bsf STATUS,RP0 ;bank3
btfsc EECON1,WR
goto $-1
bcf STATUS,RP0
bcf STATUS,RP1 ;bank0
movf ADDR,W
bsf STATUS,RP1 ;bank2
movwf EEADR
bcf STATUS,RP1 ;bank0
movf VALU,W
bsf STATUS,RP1 ;bank2
movwf EEDATA
bsf STATUS,RP0 ;bank3
bcf EECON1,EEPGD ;to data memory
bsf EECON1,WREN
bcf INTCON,GIE
movlw 55h
movwf EECON2
movlw 0aah
movwf EECON2
bsf EECON1,WR
bcf STATUS,RP0
bcf STATUS,RP1 ;bank0
incf ADDR,1
decf VALU,1
decfsz WRC_ ;all write,to read_
goto wri_
read_ ;读子程序
bcf STATUS,RP1
bcf STATUS,RP0 ;bank0
decf ADDR ;next value
bsf STATUS,RP1 ;bank2
movwf EEADR
bsf STATUS,RP0 ;bank3
EEw&r.asm程序说明:
1、 本程序是对PIC16F877单片机的EEPROM数据区进行读写的演示程序;
2、 wri_为写入数据子程序,该子程序从ADDR寄存器确定的地址开始对EEPROM数据区写入(范例从10H开始),每进行一次写操作将使ADDR值加一;写入数据的初始值由VALU寄存器给定(范例值为90H),每进行一次写操作将使VALU值减一;写入规定个数(由WRC_寄存器给定,范例值为0FH)的数值后,结束写入,转至read_。
3、 read_为读出数据子程序,该子程序从ADDR寄存器当前值确定的地址开始对EEPROM数据区读出(当前值=ADDR+WRC_<=0FFH),每进行一次读操作将使ADDR值减一;读出数据后程序将把该数据存入通用寄存器中,开始存放的地址由FSR的值指定(范例为30H),每进行一次读操作将使FSR的值加一;读出规定个数(由寄存器REC_给定,范例值为0FH)的数值后,结束读出,回main。
上一篇:PIC16c54的I2C读写程序
史海拾趣
|
德州仪器达芬奇五年之路七宗罪,嵌入式处理器架构之争决战2012(三) 2008年,注定是不平凡的一年。 TI或许已经意识到了在中国这样一个神奇的土地上,有这样一个潜规则,那就是只有硬件是可以卖钱的,硬件上跑的所有东西你都要送我。于是TI开始做出这样一个决定,Linux内核维护从以MonvtaVista为主树转移到以自己维护 ...… 查看全部问答> |
|
某中断系统中,每抽取一个输入数据就要中断CPU一次,中断处理程序接收采样的数据, 并 将其保存在主存缓冲区内。该中断处理需要X秒。另一方面,缓冲区内每存储N个数据,主程序就将其取出进行处理,这种处理需要Y秒,因此该系统可以跟踪到每秒()次 ...… 查看全部问答> |
|
我编译一个工程,编译器提示我未找到\"xxx.h\",我用include还是提示我未找到。然后我在PB根目录下搜索\"xxx.h\"文件,把它拷贝到项目文件夹下。还是提示我未找到\"xxx.h\"。最后我把include改成include\"xxx.h\"就找到了。 #include 后面的包含的 ...… 查看全部问答> |
|
有没有用过at90can128系列处理器的。。。。 没用过这款芯片,所以很多比较简单的都搞不好 比如判断一个引脚的电平高低 啊啊啊啊 困惑啊 求指点~~~~~… 查看全部问答> |
|
DSP软件工程师 年薪16-19W 岗位职责: 1、负责McWiLL宽带无线接入系统物理层算法的验证及实现,包括基站和终端;2、负责SCDMA基站和终端产品物理层软件的开发及维护。任职要求:1、本科及以上学历,电子、通信等相关专业;2、熟悉数字 ...… 查看全部问答> |
|
MIT四大名师联手铸就,影响全球千万程序员的“算法圣经”!国内外千余所高校采用! 算法导论第二版(中文,高清)+经典答案https://download.eeworld.com.cn/detail/tiankai001/294506 在有关算法的书中,有一些叙述非常严谨,但不够全面;另 ...… 查看全部问答> |
|
刚刚开始接触fpga,用quartus11.1,报错: Error (199067): Quartus II software currently does not support the generation of timing analysis netlists for Cyclone IV E device family Error: Quartus II 64-Bit EDA Netlist Writer was uns ...… 查看全部问答> |
|
接上一个帖子https://bbs.eeworld.com.cn/thread-489163-1-1.html 上一个程序我们更改了python的main文件,其实可以用更简单快捷的方式完成,即通过串口编辑程序控制LED及其他。你说什么?不信,往下看 Python就是这么任性,把之前的代码在串口 ...… 查看全部问答> |




