英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

标题: PROBE877模板调试成功的程序,供参考。 [打印本页]

作者: winnie    时间: 2009-5-18 13:16
标题: PROBE877模板调试成功的程序,供参考。
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
btfsc       EECON1,WR
goto       $-1
bsf         INTCON,GIE
bcf         EECON1,WREN
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
movf       ADDR,W
bsf          STATUS,RP1  ;bank2
movwf    EEADR   
bsf          STATUS,RP0  ;bank3
bcf         EECON1,EEPGD
bsf         EECON1,RD
bcf         STATUS,RP0  ;bank2
movf       EEDATA,W
bcf           STATUS,RP1  ;bnak0
movwf     INDF   ;存读出值
incf          FSR
decfsz     REC_
goto        read_
goto        main
endEEw&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




欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/) Powered by Discuz! X3.2