📄 back.txt
字号:
;*****************************************************************
;* 主 页 : HTTP:WWW.QLMCU.COM
;*
;* 程序功能 : 93C46的读写实验
;*
;* 硬 件: WS803A / WS806
;*
;* 创建时间 : 2005.06.27
;*
;* Designer : benladn911
;*******************************************************************
CS EQU P3.5 ;片选端
SK EQU P2.6 ;模拟时钟信号输出端
DI EQU P2.5 ;串行数据输出端
DO EQU P2.4 ;串行数据输入端
WDM EQU 20H ;欲写入数据单元
RDM EQU 22H ;读出存放于51的单元
ADDR EQU 32H ;欲写入93C46地址
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:
/* LCALL EWEN46
LCALL READ
MOV P0,RDM
CLR P3.7
SJMP $ */
MOV WDM,#11H
LCALL EWEN46
LCALL WRITE
LCALL READ
MOV P0,RDM
CLR P3.7
SJMP $
;----------------------------------------------------
;发送高电平 1
;-----------------------------------------------------
HIGH46:
SETB DI
SETB SK
NOP
NOP
CLR SK
NOP
RET
;;;di_93=1;sk_93=1; _nop_();sk_93=0;_nop_();
;-----------------------------------------------------
;发送低电平 0
;------------------------------------------------*/
LOW46:
CLR DI
SETB SK
NOP
NOP
CLR SK
NOP
RET
;;;;;;;di_93=0;sk_93=1;_nop_();sk_93=0;_nop_();
;-----------------------------------------------------
;-------------------------------------------
;---------------------延时-------------------
DL2MS: MOV R4,#8;
DD3:MOV R5,#124
DJNZ R5,$
DJNZ R4,DD3
RET
;--------------------------------------------
;-----------------------------------------------------
;-------------------写操作允许涵数--------------------
;-----------------------------------------------------
EWEN46: ; ( 10011***** )
SETB CS
NOP
LCALL HIGH46 ;1
LCALL LOW46 ;0
CLR DI ;0
SETB SK
NOP
NOP
CLR SK
NOP
SETB DI ;1
SETB SK
NOP
NOP
CLR SK
NOP
SETB DI ;1
SETB SK
NOP
NOP
CLR SK
NOP
CLR DI
SETB SK
NOP
NOP
CLR SK
NOP
CLR DI
SETB SK
NOP
NOP
CLR SK
NOP
CLR DI
SETB SK
NOP
NOP
CLR SK
NOP
CLR DI
SETB SK
NOP
NOP
CLR SK
NOP
CLR DI
SETB SK
NOP
NOP
CLR SK
NOP
CLR CS
RET
;-----------------------------------------------------------------
;------------向指定的地址中写入一个字节数据(八位)涵数-----------
;-----------------------------------------------------------------
WRITE: ;101
MOV R2,#7 ;置写入地址位数(存储单元8位结构时,地址为7位)
SETB CS
NOP
MOV A,ADDR ;把欲写入的数据的地址
RLC A ;先左移一位,地址移至D7~D1,D0无效
LCALL HIGH46 ;1
LCALL LOW46 ;0
SETB DI ;1
SETB SK
NOP
NOP
CLR SK
NOP
WR_ADDR: ;欲写入地址的设置
MOV DI,C
NOP
NOP
SETB SK
NOP
NOP
CLR SK
NOP
RLC A
DJNZ R2,WR_ADDR
NOP
NOP
MOV A,WDM ;把欲写入的数据送给 A
MOV R2,#8 ;数据为8位
WR_DAT:
RLC A
MOV DI,C
NOP
NOP
SETB SK
NOP
NOP
CLR SK
NOP
DJNZ R2,WR_DAT
LCALL DL2MS
LCALL DL2MS
LCALL DL2MS
CLR CS
RET
;-----------------------------------------------------------------
;-----------------------------------------------------
;----------从指定的地址中读出一个字节数据(八位)涵数
;-----------------------------------------------------
READ: ;110
MOV R2,#7
SETB CS
NOP
MOV A,ADDR ;把欲读出的数据的地址送给A
RLC A ;先左移一位,地址移至D7~D1,D0无效
LCALL HIGH46
LCALL HIGH46
CLR DI
SETB SK
NOP
NOP
CLR SK
NOP
RD_ADDR: ;欲读出地址的设置
MOV DI,C
NOP
NOP
SETB SK
NOP
NOP
CLR SK
NOP
RLC A
DJNZ R2,RD_ADDR
NOP
NOP
MOV R2,#8 ;READ 8 BIT DATA
SETB DO
RD_DAT:
SETB SK
NOP
NOP
MOV C,DO
RLC A
CLR SK
DJNZ R2,RD_DAT
MOV RDM,A ;SAVE DATA IN RDM(22H)
CLR CS
RET
;---------------------------------------------------------------------------
;-----------------------------------------------------
;-----------擦除所有单元涵数--------------------------
;-----------------------------------------------------
EARASE:
SETB CS
NOP
LCALL HIGH46
LCALL LOW46
CLR DI
SETB SK
NOP
CLR SK
NOP
SETB DI
SETB SK
NOP
CLR SK
NOP
CLR DI
SETB SK
NOP
CLR SK
NOP
CLR DI
SETB SK
NOP
CLR SK
NOP
CLR DI
SETB SK
NOP
CLR SK
NOP
CLR DI
SETB SK
NOP
CLR SK
NOP
CLR DI
SETB SK
NOP
CLR SK
NOP
SETB DI
SETB SK
NOP
CLR SK
NOP
KKK: JB DO,LLL ;判REDAY/BUSY,DO=1,
SJMP KKK
LLL: CLR CS
RET
;----------------------------------------------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -