欢迎光临MCUWAY! 本站网名:单片机之路  永久域名:www.mcuway.com

设为首页

加入收藏

电子基础 初学MCU 单片机类型 MCU程序 MCU应用 设计软件 测控电路 技术论坛
 您现在的位置: 单片机之路 >> 单片机程序 >> 单片机源码 >> 文章正文

读写PIC16F877单片机內部EEPROM的程序

LIST  P=16f877
  #INCLUDE <P16f877.INC>
;
;- RAM LOCATIONS------
;
; Reserve RAM location 0x70 for ICD
;
Data_EE_Addr  equ  0X71
Data_EE_Data  equ  0X72

;--------VECTORS------------

 org  0x0
  nop
 goto  START

;-------PROGRAM--------------

 org  0X20
START
 call  INIT
;
;---- Test the WRITE EEPROM Routine ----
;
  movlw 0x0
  movwf Data_EE_Addr
  movlw '0'    ; Load a ASCII code "0" to W
  movwf Data_EE_Data
EE_Write
  call WRITE_EEPROM
  incf Data_EE_Data,F ; 0x30+ N
  incf Data_EE_Addr,F ; Point to next EEPROM Address
  btfss Data_EE_Addr,5 ; Write 32 bytes ?
  goto EE_Write
;
;---- Test the READ EEPROM Routine ----
;
  movlw 0x20  ; Get back EEPROM data to RAM with start addr at 0x20
  movwf FSR
;  
  movlw 0x0  ; Point to EEPROM start address at 0x00
  movwf Data_EE_Addr
EE_Read
  call READ_EEPROM ; Read EEPROM data with curent address to W registre
  movwf INDF  ; move W --> RAM
;
  incf FSR,F
  incf Data_EE_Addr,F ; Point to next EEPROM Address
  btfss Data_EE_Addr,6 ; Read 32 bytes ?
  goto EE_Read
;
 GOTO  $
;
;------ INTERNAL EEPROM READ ------
;
READ_EEPROM
  banksel EEADR
  movf Data_EE_Addr,W  ; Load EEPROM Address into Pointer
  movwf EEADR
;
;   bcf INTCON,GIE
  banksel EECON1
  bcf EECON1,EEPGD
  bsf EECON1,RD
;
  banksel EEDATA
  movf EEDATA,W
;  bsf INTCON,GIE
;
  banksel PORTA
  return

;----INTERNAL EEPROM WRITE-----
;
WRITE_EEPROM
  banksel EEADR  
  movf Data_EE_Addr,W  ; Load EEPROM Address & Data into Register
  movwf EEADR
  movf Data_EE_Data,W
  movwf EEDATA
;  
  banksel EECON1
  bcf EECON1,EEPGD  ; Selected Data EEPROM for Writing
  bsf EECON1,WREN  ; Enable write function

;  bcf INTCON,GIE  ; Disable Interrupt

  movlw 0x55   ; Write Sequence control
  movwf EECON2 
  movlw 0xAA
  movwf EECON2 
   
  bsf EECON1,WR  ; Start EEPROM write operation
;
;  bsf INTCON,GIE  ; Enable Interrupt (If used interrupt )
  bcf EECON1,WREN  ; Disable write EEPROM
;
  btfsc EECON1,WR  ; Waiting for writing completed (4mS)
  goto $-1   ; During write period, must hold both EEADR & EEDATA until complete
;
  banksel PORTA
  return  
;
;---------INITIAL----------------
INIT
 BCF PIR2,EEIF
  banksel PIE2
 BCF PIE2,EEIE
 RETURN
;--------------------------------
 END

普通文章28课:单片机音乐汇编程序设计
普通文章27课:单片机的一些基本概念
普通文章26课:单片机矩阵式键盘接口技术
普通文章51单片机教程(从原理开始基于汇编)
普通文章1课:单片机概述
普通文章2课:8051单片机引脚介绍
普通文章3课:单片机存储器结构结构分析
普通文章4课:第一个单片机小程序
普通文章5课:单片机延时程序分析
普通文章6课:单片机并行口结构
普通文章7课:单片机的特殊功能寄存器
普通文章8课:单片机寻址方式与指令系统
普通文章9课:单片机数据传递类指令
普通文章10课:单片机数据传送类指令
普通文章11课:单片机算术运算指令
普通文章12课:单片机逻辑运算类指令
普通文章13课:单片机逻辑与或异或指令祥解
普通文章14课:单片机条件转移指令
普通文章15课:单片机位操作指令
普通文章16课:单片机定时器与计数器
普通文章17课:单片机定时器/计数器的方式控制
普通文章18课:单片机的中断系统
普通文章19课:单片机定时器、中断试验
普通文章20课:单片机定时/计数器实验
普通文章21课:单片机串行口介绍

  • 上一篇文章:
  • 下一篇文章:
  • 更多精彩内容>>>

    普通文章电流单位
    普通文章功率单位
    普通文章什么是达林顿管?
    普通文章晶闸管的作用与原理

    学习单片机的必经之路——单片机之路,永久域名:www.mcuway.com