日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pic单片机c语言读eeprom,PIC16F877单片机内部EEPROM读写实例

發(fā)布時(shí)間:2023/11/30 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pic单片机c语言读eeprom,PIC16F877单片机内部EEPROM读写实例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

;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。

總結(jié)

以上是生活随笔為你收集整理的pic单片机c语言读eeprom,PIC16F877单片机内部EEPROM读写实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。