日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] ;PIC16F877單片機(jī)內(nèi)部EEPROM讀寫實(shí)例****************************************************************************************; This is a program to test the function of reading&writting for

;PIC16F877單片機(jī)內(nèi)部EEPROM讀寫實(shí)例****************************************************************************************
; This is a program to test the function of reading&writting for EEPROM.
; YouCANOBServe the value of register(30H--?) buy changing "VALU" and "WRC_".

; Notice that:it must be { ADDR+WRC_<=0ffh } !
; ;****************************************************************************************
include "p16f877.inc"
ADDR EQU 20H ;寫入地址寄存器
VALU EQU 21H ;寫入值
REC_ EQU 22H ;讀計(jì)數(shù)
WRC_ EQU 24H ;寫計(jì)數(shù)


ORG 0000H ;
NOP ;放置一條ICD必須的空操作指令
GOTO main ;
;ORG 0008H ;

;org 0
;goto main
main nop
bcf STATUS,RP1
bcf STATUS,RP0 ;bank0
movlw 20h
movwf ADDR ;寫入EEPROM初始值
;********************************************************************************************

clrf 8
bcf STATUS,2
DS2 nop
call DELAY
incf 8,1
movf 8,0
bcf STATUS,2
XORLW 0bh
btfss STATUS,Z
goto DS1
clrf 8
bcf STATUS,2
DS1 movf 8,0
bcf STATUS,2
call TABLE1
;***********************************************************************************************
;movlw 4fh
movwf VALU ;初始寫入值
movlw 30h
movwf FSR ;間址,讀出值初始存放地址
movlw 0Bh
movwf WRC_ ;寫入次數(shù)
movwf REC_
;incf REC_ ;讀出次數(shù)
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
;incf VALU,1
;decf VALU,1
decfsz WRC_ ;all write,to read_
;goto wri_
goto DS2

read_ ;讀子程序
call TABLE1
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
;*******************************************************************************
TABLE1 ;取第二行的顯示碼TEL0755 27528531
ADDWF 2 ;地址偏移量加當(dāng)前PC值
RETLW 30H ;0
RETLW 32H ;2
RETLW 30H ;0
RETLW 33H ;3
RETLW 33H ;3
RETLW 31H ;1
RETLW 36H ;6
RETLW 30H ;0
RETLW 30H ;0
RETLW 30H ;0
RETLW 33H ;3
;*******************************************************************************
DELAY
MOVLW 0FF
MOVWF 11
DTLAY1 DECFSZ 11
GOTO DTLAY1
RETLW 0
;*******************************************************************************
end


EEw&r.asm程序說明:

1、 本程序是對PIC16F877 單片機(jī) 的EEPROM數(shù)據(jù)區(qū)進(jìn)行讀寫的演示程序;

2、 wri_為寫入數(shù)據(jù)子程序,該子程序從ADDR寄存器確定的地址開始對EEPROM數(shù)據(jù)區(qū)寫入(范例從10H開始),每進(jìn)行一次寫操作將使ADDR值加一;
寫入數(shù)據(jù)的初始值由VALU寄存器給定(范例值為90H),每進(jìn)行一次寫操作將使VALU值減一;寫入規(guī)定個(gè)數(shù)(由WRC_寄存器給定,范例值為0FH)的
數(shù)值后,結(jié)束寫入,轉(zhuǎn)至read_。

3、 read_為讀出數(shù)據(jù)子程序,該子程序從ADDR寄存器當(dāng)前值確定的地址開始對EEPROM數(shù)據(jù)區(qū)讀出(當(dāng)前值=ADDR+WRC_<=0FFH),每進(jìn)行一次讀操
作將使ADDR值減一;讀出數(shù)據(jù)后程序?qū)言摂?shù)據(jù)存入通用寄存器中,開始存放的地址由FSR的值指定(范例為30H),每進(jìn)行一次讀操作將使FSR的值
加一;讀出規(guī)定個(gè)數(shù)(由寄存器REC_給定,范例值為0FH)的數(shù)值后,結(jié)束讀出,回main。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉