新闻中心

EEPW首页>嵌入式系统>设计应用> PIC单片机内部EEPROM读写程序

PIC单片机内部EEPROM读写程序

作者: 时间:2016-11-29 来源:网络 收藏
;***********************************************
; 写数据子程序
;***********************************************
WR1 BSF STATUS,RP0;
BSF STATUS,RP1;体3
BTFSC EECON1,WR;判断是否在写数据
GOTO $-1;
BCF STATUS,RP0;
BCF STATUS,RP1;体0
MOVFW 60H;EEPROM目标地址
BCF STATUS,RP0
BSF STATUS,RP1;体2
MOVWF EEADR;EEPROM目标地址寄存器
BCF STATUS,RP0
BCF STATUS,RP1;体0
MOVFW 61H;需写入数据
BCF STATUS,RP0
BSF STATUS,RP1;体2
MOVWF EEDATA;EEPROM数据寄存器
BSF STATUS,RP0
BSF STATUS,RP1;体3
BCF EECON1,EEPGD;选择为EEPROM模式
BSF EECON1,WREN;允许使能
;***************************************************
; 写数据5指令序列PIC特定没有为什么不允许能改变
MOVLW 55H ;
MOVWF EECON2 ;55H送EECON2
MOVLW 0AAH;
MOVWF EECON2 ;AAH送EECON2
BSF EECON1,WR ;启动写操作
;
;**************************************************
BTFSC EECON1,WR;判断是否学完成
GOTO $-1;
BCF STATUS,RP0;恢复体0
BCF STATUS,RP1;
RETURN;
;**************************************************
; 读EEPROM数据子程序
;**************************************************
RD01 BCF STATUS,RP0;
BSF STATUS,RP1;体2
MOVLW 0;目标地址
MOVWF EEADR;目标地址寄存器
BSF STATUS,RP0;
BSF STATUS,RP0;体3
BCF EECON1,EEPGD;选择EEPROM模式
BSF EECON1,RD;启动读操作
BTFSC EECON1,RD;判断是否读取完
GOTO $-1;
BCF STATUS,RP0;
BSF STATUS,RP1;体2
MOVFW EEDATA;将数据存到W中
BCF STATUS,RP0;
BCF STATUS,RP1;体0
MOVWF 53H ;将读取数存到55H
RETURN
;********************************************************
; 定时中断程序
;********************************************************
ZD01 BCF INTCON,GIE;关总中断
BTFSS INTCON,T0IF;判断是否产生定时中断
GOTO ZD03;否跳出是继续执行
;***************************************************
; 保护现场
MOVWF W_TEMP;W备份到W_TEMP中
SWAPF STATUS,0;STATUS半字交换后送W
CLRF STATUS;选择体0为当前体备份
MOVWF STATUS_TEMP;将原来的STATUS送体0上的
MOVF PCLATH,0;PCLATH送W
MOVWF PCLATH_TEMP;W送备份寄存器中
CLRF PCLATH ;设置为0页
;***************************************************
BCF INTCON,T0IF
BSF STATUS,RP0;体1
BCF STATUS,RP1;
MOVLW 0;
MOVWF TRISC;RB口设为输出口
MOVWF TRISD;RD口设为输出口
BCF STATUS,RP0;体0
BCF STATUS,RP1;
MOVLW 0FFH;
MOVWF PORTC;RB口输出高电平
MOVLW 0
MOVWF PORTD;RD口输出低电平起清屏作用
MOVFW INDF;间接寻址显示数据
CALL Q1;查数据表
MOVWF PORTC;显示断码输出到RB口
INCF FSR,1;间接寻址地址加1
MOVFW 41H ;位码
MOVWF PORTD;位码输出到RD口
RLF 41H,0;处理C
RLF 41H,1;左移位码
DECFSZ 40H,1;判断是否显示完4位
GOTO ZD02;否则继续显示
MOVLW 4;显示位数
MOVWF 40H;
MOVLW B00000001;位码
MOVWF 41H;
MOVLW 50H;
MOVWF FSR ;间接寻址
ZD02 MOVLW 0FFH;
MOVFW TMR0;重装初值
;***************************************************
; 恢复现场
CLRF STATUS;恢复到体0
MOVF PCLATH_TEMP,0;开始恢复数据
MOVWF PCLATH;恢复PCLATH
SWAPF STATUS_TEMP,0
MOVWF STATUS;恢复STATUS
SWAPF W_TEMP,1;半字交换后放回
SWAPF W_TEMP,0;再半字交换后送W
;***************************************************
ZD03 BSF INTCON,GIE;开总中断
RETFIE ;中断返回
;********************************************
; 数据表
;********************************************
END
上一页 1 2 下一页

评论


技术专区