PIC單片機(jī)內(nèi)部EEPROM讀寫程序
;***********************************************
; 寫數(shù)據(jù)子程序
;***********************************************
WR1 BSF STATUS,RP0;
BSF STATUS,RP1;體3
BTFSC EECON1,WR;判斷是否在寫數(shù)據(jù)
GOTO $-1;
BCF STATUS,RP0;
BCF STATUS,RP1;體0
MOVFW 60H;EEPROM目標(biāo)地址
BCF STATUS,RP0
BSF STATUS,RP1;體2
MOVWF EEADR;EEPROM目標(biāo)地址寄存器
BCF STATUS,RP0
BCF STATUS,RP1;體0
MOVFW 61H;需寫入數(shù)據(jù)
BCF STATUS,RP0
BSF STATUS,RP1;體2
MOVWF EEDATA;EEPROM數(shù)據(jù)寄存器
BSF STATUS,RP0
BSF STATUS,RP1;體3
BCF EECON1,EEPGD;選擇為EEPROM模式
BSF EECON1,WREN;允許使能
;***************************************************
; 寫數(shù)據(jù)5指令序列PIC特定沒有為什么不允許能改變
MOVLW 55H ;
MOVWF EECON2 ;55H送EECON2
MOVLW 0AAH;
MOVWF EECON2 ;AAH送EECON2
BSF EECON1,WR ;啟動(dòng)寫操作
;
;**************************************************
BTFSC EECON1,WR;判斷是否學(xué)完成
GOTO $-1;
BCF STATUS,RP0;恢復(fù)體0
BCF STATUS,RP1;
RETURN;
;**************************************************
; 讀EEPROM數(shù)據(jù)子程序
;**************************************************
RD01 BCF STATUS,RP0;
BSF STATUS,RP1;體2
MOVLW 0;目標(biāo)地址
MOVWF EEADR;目標(biāo)地址寄存器
BSF STATUS,RP0;
BSF STATUS,RP0;體3
BCF EECON1,EEPGD;選擇EEPROM模式
BSF EECON1,RD;啟動(dòng)讀操作
BTFSC EECON1,RD;判斷是否讀取完
GOTO $-1;
BCF STATUS,RP0;
BSF STATUS,RP1;體2
MOVFW EEDATA;將數(shù)據(jù)存到W中
BCF STATUS,RP0;
BCF STATUS,RP1;體0
MOVWF 53H ;將讀取數(shù)存到55H
RETURN
;********************************************************
; 定時(shí)中斷程序
;********************************************************
ZD01 BCF INTCON,GIE;關(guān)總中斷
BTFSS INTCON,T0IF;判斷是否產(chǎn)生定時(shí)中斷
GOTO ZD03;否跳出是繼續(xù)執(zhí)行
;***************************************************
; 保護(hù)現(xiàn)場(chǎng)
MOVWF W_TEMP;W備份到W_TEMP中
SWAPF STATUS,0;STATUS半字交換后送W
CLRF STATUS;選擇體0為當(dāng)前體備份
MOVWF STATUS_TEMP;將原來的STATUS送體0上的
MOVF PCLATH,0;PCLATH送W
MOVWF PCLATH_TEMP;W送備份寄存器中
CLRF PCLATH ;設(shè)置為0頁(yè)
;***************************************************
BCF INTCON,T0IF
BSF STATUS,RP0;體1
BCF STATUS,RP1;
MOVLW 0;
MOVWF TRISC;RB口設(shè)為輸出口
MOVWF TRISD;RD口設(shè)為輸出口
BCF STATUS,RP0;體0
BCF STATUS,RP1;
MOVLW 0FFH;
MOVWF PORTC;RB口輸出高電平
MOVLW 0
MOVWF PORTD;RD口輸出低電平起清屏作用
MOVFW INDF;間接尋址顯示數(shù)據(jù)
CALL Q1;查數(shù)據(jù)表
MOVWF PORTC;顯示斷碼輸出到RB口
INCF FSR,1;間接尋址地址加1
MOVFW 41H ;位碼
MOVWF PORTD;位碼輸出到RD口
RLF 41H,0;處理C
RLF 41H,1;左移位碼
DECFSZ 40H,1;判斷是否顯示完4位
GOTO ZD02;否則繼續(xù)顯示
MOVLW 4;顯示位數(shù)
MOVWF 40H;
MOVLW B00000001;位碼
MOVWF 41H;
MOVLW 50H;
MOVWF FSR ;間接尋址
ZD02 MOVLW 0FFH;
MOVFW TMR0;重裝初值
;***************************************************
; 恢復(fù)現(xiàn)場(chǎng)
CLRF STATUS;恢復(fù)到體0
MOVF PCLATH_TEMP,0;開始恢復(fù)數(shù)據(jù)
MOVWF PCLATH;恢復(fù)PCLATH
SWAPF STATUS_TEMP,0
MOVWF STATUS;恢復(fù)STATUS
SWAPF W_TEMP,1;半字交換后放回
SWAPF W_TEMP,0;再半字交換后送W
;***************************************************
ZD03 BSF INTCON,GIE;開總中斷
RETFIE ;中斷返回
;********************************************
; 數(shù)據(jù)表
;********************************************
關(guān)鍵詞:
PIC單片機(jī)內(nèi)部EEPROM讀寫程
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論