您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机PIC单片机内部EEPROM读写子程序 正文
PIC单片机内部EEPROM读写子程序

PIC单片机内部EEPROM读写子程序

点击数:7428 次   录入时间:03-04 11:36:41   整理:http://www.55dianzi.com   PIC单片机
实战《内部EEPROM读写实验》
;本实战的目的是让大家熟悉PIC16F87X内部EEPROM的读写方法
;项目实现的功能:对于地址为00H-3FH的64个EEPROM数据存储单元,
;分别将数据0-63依次烧写进去,然后再循环读出,显示在8只LED发光二极管上
;PIC 单片机 学习网  陈学乾  http://www.55dianzi.com  
;程序文件名“MCD-EMP1.ASM”
;程序清单如下:
;************************************
STATUS   EQU 3H       ;定义状态寄存器地址
RP0      EQU 5H       ;定义页选位RP0的位地址
RP1      EQU 6H       ;定义页选位RP1的位地址
Z        EQU 2H       ;定义0状态位的位地址
PORTC    EQU 7H       ;定义RC口数据寄存器地址
TRISC    EQU 87H      ;定义RC口方向控制寄存器地址
EECON1   EQU 18CH     ;定义写控制寄存器1的地址
EECON2   EQU 18DH     ;定义写控制寄存器2的地址
EEDATA   EQU 10CH     ;定义读/写数据寄存器地址
EEADR    EQU 10DH     ;定义读/写地址寄存器地址
RD       EQU  0       ;定义读启动控制位位地址
WR       EQU  1       ;定义写启动控制位位地址
WREN     EQU  2       ;定义写使能控制位位地址
EEPGD    EQU  7       ;定义访问目标选择控制位位址
F        EQU  1       ;定义目标寄存器为RAM的指示符
W        EQU  0       ;定义目标寄存器为W的指示符
ADDR     EQU  70H     ;定义地址变量
DATA1    EQU  71H     ;定义数据变量
;*************************************
    ORG     0000H        ;
    NOP                  ;放置一条ICD必须的空操作指令
    GOTO    MAIN         ;
    ORG     0008H        ;
MAIN
    BCF     STATUS,RP1   ;选体1为当前体
    BSF     STATUS,RP0   ;
    MOVLW   00H          ;设定RC全部为输出
    MOVWF   TRISC        ;
    BSF     STATUS,RP1   ;体3为当前体
    CLRF    ADDR         ;地址变量清0
    CLRF    DATA1        ;数据变量清0
WRITE
    BSF     STATUS,RP1   ;选定体3
    BTFSC   EECON1,WR    ;上一次写操作是否完成
    GOTO    $-1          ;否!返回继续检测
    BCF     STATUS,RP0   ;选定体2
    MOVF    ADDR,W       ;取地址
    MOVWF   EEADR        ;送地址寄存器
    MOVF    DATA1,W      ;取数据
    MOVWF   EEDATA       ;送数据寄存器
    BSF     STATUS,RP0   ;选定体3
    BCF     EECON1,EEPGD ;选定EEPROM为访问对向
    BSF     EECON1,WREN  ;开放写操作使能控制
    MOVLW   55H         ;
    MOVWF   EECON2       ;送55H到寄存器EECON2(读写内部EEPROM,这句是固定的)
    MOVLW   0AAH         ;
    MOVWF   EECON2       ;送AAH到寄存器EECON2(读写内部EEPROM,这句是固定的)
    BSF     EECON1,WR    ;启动写操作
    BCF     EECON1,WREN  ;禁止写操作发生
    INCF    DATA1,F      ;数据递增
    INCF    ADDR,F       ;地址递增
    MOVF    ADDR,W       ;
    XORLW   D’64’        ;将当前地址与64比较
    BTFSS   STATUS,Z     ;检测=64否
    GOTO    WRITE        ;否!继续写后面单元
READ1
    DECF    ADDR,F       ;地址递减
    BCF     STATUS,RP0   ;选体2为当前体
    BSF     STATUS,RP1   ;
    MOVF    ADDR,W       ;取地址
    MOVWF   EEADR        ;送地址寄存器
    BSF     STATUS,RP0   ;选体3为当前体
    BCF     EECON1,EEPGD  ;选定EEPROM为访问对象
    BSF     EECON1,RD     ;启动读操作
    BCF     STATUS,RP0    ;体2为当前体
    MOVF    EEDATA,W      ;取数据
    BCF     STATUS,RP1    ;体0为当前体
    MOVWF   PORTC         ;送显LED
    CALL    DELAY         ;调用廷时子程序
    MOVF    ADDR,F        ;检测当前地址
    BTFSS   STATUS,Z      ;是否为0?是!跳一步
    GOTO    READ1         ;否!返回继续读出和显示
READ2 
    INCF    ADDR,F        ;地址递增
    BCF     STATUS,RP0    ;选体2为当前体
    BSF     STATUS,RP1    ;
    MOVF    ADDR,W        ;取地址
    MOVWF   EEADR         ;送地址寄存器
    BSF     STATUS,RP0     ;选体3为当前体

[1] [2]  下一页


本文关键字:单片机  子程序  PIC单片机单片机-工控设备 - PIC单片机