?? 14-6.asm
字號:
;***********************************************************************
; 功能 :X25045讀寫子程序
; 作者 :LIHJ
; 創建日期 :04-04-04
; 版本 :V1.0
; 修改日期 :
;************************************************************************
;公共函數聲明,這些函數可以被外部程序所使用
PUBLIC WDTINI,KILLDOG,_WrtEEP,_RdEEP
;串行輸入、輸出、時鐘、片選等引腳定義
EECS EQU P1.2 ;X25045片選線
EESIO EQU P1.1 ;輸入、輸出信號線
CLK EQU P1.0 ;時鐘
;命令碼定義
WREN_INST EQU 06H ;寫使能命令
WRDI_INST EQU 04H ;寫禁止命令
RDSR_INST EQU 05H ;讀狀態寄存器命令
WRSR_INST EQU 01H ;寫狀態寄存器命令
READ_INST EQU 03H ;讀X25045命令
WRITE_INST EQU 02H ;寫X25045命令
;看門狗復位時間定義
WDT_2HMS EQU 20H ;200 ms復位時間
WDT_6HMS EQU 10H ;600 ms復位時間
WDT_14HMS EQU 00H ;1.4s復位時間
;子程序
;X25045初始化
WDTINI:
LCALL WREN ;寫操作使能
CLR EECS ;選中X25045
MOV A,#WRSR_INST ;參數準備
LCALL EEP_TXD ;寫狀態寄存器
MOV A,#WDT_6HMS ;
LCALL EEP_TXD ;設置復位時間
SETB EECS
RET
;喂X25045看門狗,選中一次X25045即可
KILLDOG:
CLR EECS
SETB EECS
RET
;CPU向存儲器X25045寫數據
;入口:R7(數據讀寫個數),R5(待寫存儲器地址),R3(數據區指針)
;R7(修改),R5(不變),R3(不變)
_WRTEEP:
LCALL WREN ;寫操作使能
CLR EECS ;選中X25045
MOV A,#WRITE_INST
LCALL EEP_TXD ;寫操作命令
MOV A,R5 ;獲取寫存儲區基地址
LCALL EEP_TXD ;發送存儲區基地址
MOV A,R3
MOV R0,A
;循環寫操作,直到完成寫操作
wrteep?LP:
MOV A,@R0 ;從發送緩沖區中取出數據
LCALL EEP_TXD ;寫1byte
INC R0 ;更新寫計數
DJNZ R7,wrteep?LP ;寫操作完成判斷
SETB EECS ;完成寫操作,取消選中X25045
RET
;CPU讀存儲器X25045數據
;入口:R7(數據讀寫個數),R5(待寫存儲器地址),R3(數據區指針)
;R7(修改),R5(不變),R3(不變)
_RDEEP:
CLR EECS ;選中X25045
MOV A,#READ_INST ;準備參數
LCALL EEP_TXD ;發送讀命令
MOV A,R5
LCALL EEP_TXD ;發送讀數據區的基地址
MOV A,R3
MOV R0,A
rdeep?LP:
MOV A,#0FFH
LCALL EEP_RXD ;讀1byte
MOV @R0,A ;將讀取的數據寫到緩沖區
INC R0
DJNZ R7,rdeep?LP ;判斷讀操作是否完成
SETB EECS
RET
;CPU與X25045通信,發送數據到X25045
;SCK上升沿鎖存,下降沿移位
EEP_TXD:
MOV B,#8 ;發送一個字節,8bits
EEP_TXD?LP:
RLC A ;A的最高位移到C
MOV EESIO,C ;發送一位
SETB CLK ;產生一個時鐘上升沿
NOP ;保持時鐘信號高電平狀態
NOP
NOP
NOP
CLR CLK
DJNZ B,EEP_TXD?LP ;判斷發送是否完成
RLC A ;恢復C狀態
RET
;CPU與X25045通信,接收X25045發送的數據
;SCK上升沿鎖存,下降沿移位
EEP_RXD:
MOV B,#8 ;接收一個字節,8bits
EEP_RXD?LP:
SETB CLK
SETB EESIO ;讀數據之前,先拉高信號線
NOP
MOV C,EESIO
RLC A ;A帶C循環左移一位
CLR CLK
DJNZ B,EEP_RXD?LP ;判斷一個字節數據是否接收完畢
RET
;寫使能命令
wren:
MOV A,#WREN_INST
CLR EECS
LCALL EEP_TXD ;發送寫使能命令
SETB EECS
RET
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -