?? 93rw.asm
字號(hào):
;程序名: 93系列EEPROM讀寫(xiě)
;電路介紹:由P3.6=DIO,P3.7=CLK,P3.4=CS(與SADD鍵公用);
; 93c46的DI/DO連接到一起組成DIO
;功能操作:按S3加數(shù),按S1將_93add指定地址數(shù)據(jù)讀出、顯示,按S2將指定數(shù)據(jù)寫(xiě)入
;********************************************************************
XSDAT BIT P1.4 ;定義驅(qū)動(dòng)74164的數(shù)據(jù)腳為P1.4
XSCLK BIT P1.5 ;74164的時(shí)鐘
GW BIT P1.0 ;個(gè)位顯示控制腳
SW BIT P1.1 ;十位
BW BIT P1.2 ;百位
QW BIT P1.3 ;千位
READ BIT P3.2 ;讀按鍵
WRI BIT P3.3 ;寫(xiě)按鍵
SADD BIT P3.4 ;+數(shù)鍵,與CS公用
SJGW EQU 30H ;個(gè)位數(shù)據(jù)存儲(chǔ)器
SJSW EQU 31H ;10
SJBW EQU 32H ;100
SJQW EQU 33H ;1000
DIO BIT P3.6 ;93DIO
CLK BIT P3.5 ;93CLK
CS BIT P3.4 ;與+鍵公用
ADDH EQU 20H ;OP指令
ADDL EQU 21H ;OP指令+地址
_93data EQU 22H ;數(shù)據(jù)
_93add EQU 23H ;地址
;*****************************************************
MOV SP,#40H
MOV _93add,#10H ;對(duì)A93的10H地址進(jìn)行操作
MOV SJGW,#0
MOV SJSW,#0
MOV SJBW,#0
MOV SJQW,#0
LCALL AT93READ
ACALL B2C ;開(kāi)始顯示為讀A93 10H的數(shù)據(jù)
MAIN : LCALL DISPLAY
SETB SADD ;共用,使用時(shí)先置高
JB SADD,N1
LJMP ADDKEY
N1: CLR SADD ;不用時(shí)清0
LCALL DISPLAY
JB READ,N2
LJMP READKEY
N2: LCALL DISPLAY
JB WRI,MAIN
LJMP WRIKEY
;-+1鍵處理--------------------------
ADDKEY: MOV R4,#5
ADDL1: LCALL DISPLAY
JNB SADD,ADDL1
DJNZ R4,ADDL1
CLR SADD ;不用時(shí)清0
INC _93data ;+1
ACALL B2C ;轉(zhuǎn)換
LJMP MAIN
;--READ鍵處理----------------------
READKEY: MOV R4,#5
READL1: LCALL DISPLAY
JNB READ,READL1
DJNZ R4,READL1
LCALL AT93READ ;將93ADD地址指定的數(shù)據(jù)讀出
ACALL B2C ;轉(zhuǎn)換
LJMP MAIN
;--WRI鍵處理-----------------------
WRIKEY: MOV R4,#5
WRIL1: LCALL DISPLAY
JNB WRI,WRIL1
DJNZ R4,WRIL1
LCALL AT93WRIT ;將_93data寫(xiě)到SADD
LCALL EWEND ;寫(xiě)禁止,以便下次再寫(xiě)
LJMP MAIN
;***2-10轉(zhuǎn)換程序**********************************
B2C: MOV A,_93data
MOV B,#100
DIV AB
MOV SJBW,A
MOV A,B
MOV B,#10
DIV AB
MOV SJSW,A
MOV SJGW,B
RET
;★★93c46讀寫(xiě)子程序★★★★★★★★★★★★★★★★★★★★★★★★
;資源:程序中用到R6,操作地址為_(kāi)93add,收、送數(shù)據(jù)_93data
; 使用8位操作,PRG=0
;2002/5/15調(diào)試通過(guò)
;定義:
;cs bit
;dio bit
;addh equ
;addl equ
;_93add equ
;_93data equ
;調(diào)用程序
AT93READ: ;讀
CLR CS ;初始
CLR DIO
MOV ADDH,#11B ;讀指令110
MOV ADDL,#00000000B ;傳送指令和地址
MOV A,_93add
ORL A,ADDL
MOV ADDL,A ;地址加入
LCALL READDATA ;讀指令
RET
AT93WRIT: ;寫(xiě)允許
CLR CS ;初始
CLR DIO
MOV ADDH,#10B
MOV ADDL,#01100000B ;9346允許擦除指令
LCALL WRICOMM ;寫(xiě)允許擦寫(xiě)指令
;寫(xiě)數(shù)據(jù)
MOV ADDH,#10B ;寫(xiě)指令101
MOV ADDL,#10000000B ;傳送指令和地址
MOV A,_93add
ORL A,ADDL
MOV ADDL,A ;地址合成加入
LCALL WRIDATA ;將_93data中的數(shù)據(jù)寫(xiě)到片中
EWEND: ;寫(xiě)禁止
MOV ADDH,#10B
MOV ADDL,#00000000B
LCALL WRICOMM ;寫(xiě)禁止
RET
;******* 9 3公共子程序************************************
;寫(xiě)不含地址的指令,如,寫(xiě)允許、禁止、擦除等
;**************************************************************
WRICOMM: SETB CS ;復(fù)位
MOV R6,#8
MOV ACC,ADDH ;送出指令字
WCOM: RLC A
MOV DIO,C ;移出到C并送DIO端
LCALL D15US
SETB CLK
LCALL D15US
CLR CLK
LCALL D15US
DJNZ R6,WCOM
MOV R6,#8
MOV ACC,ADDL ;送出地址
WADD: RLC A
MOV DIO,C ;移出到C并送DIO端
LCALL D15US
SETB CLK
LCALL D15US
CLR CLK
LCALL D15US
DJNZ R6,WADD
CLR CS
RET
;******* 9 3公共子程序************************************
;寫(xiě)數(shù)據(jù)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -