?? 93rw.asm
字號:
;程序名: MCS51實驗板配套程序-93系列EEPROM讀寫
;電路介紹:由P3.6=DIO,P3.7=CLK,P3.4=CS(與SADD鍵公用);顯示電路同前面例子
; 93c46的DI/DO連接到一起組成DIO
;功能操作:按S3加數,按S1將_93add指定地址數據讀出、顯示,按S2將指定數據寫入
;WWW.01MCU.NET WWW.01MCU.COM 2003/5/14編寫
;********************************************************************
XSDAT BIT P1.4 ;定義驅動74164的數據腳為P1.4
XSCLK BIT P1.5 ;74164的時鐘
GW BIT P1.0 ;個位顯示控制腳
SW BIT P1.1 ;十位
BW BIT P1.2 ;百位
QW BIT P1.3 ;千位
READ BIT P3.2 ;讀按鍵
WRI BIT P3.3 ;寫按鍵
SADD BIT P3.4 ;+數鍵,與CS公用
SJGW EQU 30H ;個位數據存儲器
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 ;數據
_93add EQU 23H ;地址
;*****************************************************
MOV SP,#40H
MOV _93add,#10H ;對A93的10H地址進行操作
MOV SJGW,#0
MOV SJSW,#0
MOV SJBW,#0
MOV SJQW,#0
LCALL AT93READ
ACALL B2C ;開始顯示為讀A93 10H的數據
MAIN : LCALL DISPLAY
SETB SADD ;共用,使用時先置高
JB SADD,N1
LJMP ADDKEY
N1: CLR SADD ;不用時清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 ;不用時清0
INC _93data ;+1
ACALL B2C ;轉換
LJMP MAIN
;--READ鍵處理----------------------
READKEY: MOV R4,#5
READL1: LCALL DISPLAY
JNB READ,READL1
DJNZ R4,READL1
LCALL AT93READ ;將93ADD地址指定的數據讀出
ACALL B2C ;轉換
LJMP MAIN
;--WRI鍵處理-----------------------
WRIKEY: MOV R4,#5
WRIL1: LCALL DISPLAY
JNB WRI,WRIL1
DJNZ R4,WRIL1
LCALL AT93WRIT ;將_93data寫到SADD
LCALL EWEND ;寫禁止,以便下次再寫
LJMP MAIN
;***2-10轉換程序**********************************
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讀寫子程序★★★★★★★★★★★★★★★★★★★★★★★★
;資源:程序中用到R6,操作地址為_93add,收、送數據_93data
; 使用8位操作,PRG=0
;2002/5/15調試通過
;定義:
;cs bit
;dio bit
;addh equ
;addl equ
;_93add equ
;_93data equ
;調用程序
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: ;寫允許
CLR CS ;初始
CLR DIO
MOV ADDH,#10B
MOV ADDL,#01100000B ;9346允許擦除指令
LCALL WRICOMM ;寫允許擦寫指令
;寫數據
MOV ADDH,#10B ;寫指令101
MOV ADDL,#10000000B ;傳送指令和地址
MOV A,_93add
ORL A,ADDL
MOV ADDL,A ;地址合成加入
LCALL WRIDATA ;將_93data中的數據寫到片中
EWEND: ;寫禁止
MOV ADDH,#10B
MOV ADDL,#00000000B
LCALL WRICOMM ;寫禁止
RET
;******* 9 3公共子程序************************************
;寫不含地址的指令,如,寫允許、禁止、擦除等
;**************************************************************
WRICOMM: SETB CS ;復位
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公共子程序************************************
;寫數據
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -