📄 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 + -