MOV F DADR,W
MOV WF FSR ;RAM 单元首地址
MOV F EE_DADR,W
BANKSEL PIE1 ;BANK1
BCF PIE1,EEIE ;关闭EE中断
BANKSEL EEADR ;BANK2
MOV WF EEADR ;将目标地址写入EEADR
EE_LOOP2:
BANKSEL PORTA ;BANK0
MOV F INDF,W
BANKSEL EEDATA ;BANK2
MOV WF EEDATA ;将源数据写入EEDATA
BANKSEL EECON1 ;BANK3
BCF EECON1,EEPGD ;指定 EEPROM 为操作对象
BSF EECON1,WREN ;写允许
BCF INTCON,GIE ;关闭中断
MOV LW 55H ;MICROChip
MOV WF EECON2 ;规
MOV LW 0XAA ;定
MOV WF EECON2 ;代码
BSF EECON1,WR ;开始写入
BCF EECON1,WREN ;写保护
BTFSC EECON1,WR ;写完了吗?
GOTO $-1
BANKSEL PORTA ;BANK0
INCF FSR,F ;写下一个数据
BANKSEL EEADR ;BANK2
INCF EEADR,F
BANKSEL PORTA ;BANK0
DECFSZ CNT,F ;所有字节的数据写完了吗?
GOTO NEXT1
BSF INTCON,GIE ;重新开总中断
RETURN
NEXT1:
GOTO EE_LOOP2
;********************************EE_READ***********************************
;本程序实现从内部连续的EEPROM单元传送多字节数据到内部RAM。
;入口参数:原操作数在EEPROM中的首地址放在EE_DADR中,目标RAM的首地址放在DADR中,
; 字节数放在CNT中。
;出口参数:相关数据已在指定的连续RAM单元中
;占用资源:W,STATUS,FSR,内部EEPROM模块,一重堆栈。
;***************************************************************************
EE_READ:
BANKSEL PORTA ;BANK0
MOV F DADR,W
MOV WF FSR ;目标RAM的地址
MOV F EE_DADR,W
BANKSEL EEADR ;BANK2
MOV WF EEADR ;地址
EE_READ1:
BANKSEL EECON1 ;BANK3
BCF EECON1,EEPGD ;指定 EEPROM 为操作对象
BSF EECON1,RD ;开始读取
BANKSEL EEDATA ;BANK2
MOV F EEDATA,W
BANKSEL PORTA ;BANK0
MOV WF INDF ;依次取出连续的数据
INCF FSR,F
BANKSEL EEADR ;BANK2
INCF EEADR,F
BANKSEL PORTA ;BANK0
DECFSZ CNT,F ;判断所有字节的数据是否取完
GOTO EE_READ1
RETURN
;***************************************************************************
ORG 0x2100
DE 00H,0AH,00H,00H,00H,00H
END
上一页 [1] [2] [3] [4] [5]
本文关键字:暂无联系方式PIC单片机,单片机-工控设备 - PIC单片机