历史上的今天
今天是:2025年01月11日(星期六)
2018年01月11日 | 93C46的读写实验程序
2018-01-11 来源:eefocus
;*******************************************************************
;* 当选择8 位结构时93C46 有7 条10 位的指令
;* 指令、地址和写入的数据在时钟信号SK 的上升沿时由DI 引脚输入
;* DO 引脚除了从器件读取据或在进行了写操作后查询准备/繁忙ready/busy 的器件工作状态外平常是高阻态的
;******************************************************************************************
;程序首先从89S51的 ADDR,WDM 读出欲写入93C46的地址和数据,然后再把写入的数据读出来
;存放在 RDM ,再把ADDR , RDM 同过四位数码管显示出来.
;-------------端口和存储单元的定义---------------
CS EQU P3.5 ;片选端
SK EQU P2.6 ;模拟时钟信号输出端
DI EQU P2.5 ;串行数据输出端
DO EQU P2.4 ;串行数据输入端
WDM EQU 51H ;欲写入数据存储单元
RDM EQU 50H ;读出存放于 89S51 RAM 的存储单元
ADDR EQU 42H ;欲写入93C46的地址
;------------------------------------------------
ORG 0000H
LJMP MAIN
ORG 0100H ;主程序
MAIN:
MOV ADDR,#20H ;欲写入的地址设置(可根据需要自行修改)
MOV WDM,#0ffH ;要写入的数据(可根据需要自行修改)
LCALL EWEN46 ;调用写允许子程序,93C46每次上电后在进行写操作前都要先写允许
LCALL WRITE ;调用写入子程序
LCALL READ ;调用读子程序
SJMP $
;*********************************************************************
;********************** 各功能子程序 *****************************
;*********************************************************************
;----------------------------------------------------
;发送高电平 1
;-----------------------------------------------------
HIGH46:
SETB DI
SETB SK
NOP
CLR SK
NOP
RET
;-----------------------------------------------------
;发送低电平 0
;-----------------------------------------------------
LOW46:
CLR DI
SETB SK
NOP
CLR SK
NOP
RET
;-------------------------------------------
;---------------------延时-------------------
DL2MS:
MOV R4,#8;
DD3:
MOV R5,#124
DJNZ R5,$
DJNZ R4,DD3
RET
;--------------------------------------------
;-----------------------------------------------------
;-------------------写操作允许子程序--------------------
;-----------------------------------------------------
EWEN46: ; ( 10011***** )
SETB CS ;启动93C46
NOP
LCALL HIGH46 ;1
LCALL LOW46 ;0
LCALL LOW46 ;0
LCALL HIGH46 ;1
LCALL HIGH46 ;1
LCALL LOW46 ;0
LCALL LOW46 ;0
LCALL LOW46 ;0
LCALL LOW46 ;0
LCALL LOW46 ;0
NOP
CLR CS ;93C46 进入休眠,降低功耗
RET
;-----------------------------------------------------------------
;------------向指定的地址中写入一个字节数据(八位)子程序---------
;-----------------------------------------------------------------
WRITE: ;101
SETB CS ;启动93C46
NOP
MOV A,ADDR ;把欲写入的数据的地址
LCALL HIGH46 ;1
LCALL LOW46 ;0
LCALL HIGH46 ;1
WR_ADDR: ;欲写入地址的设置,93C46的地址为 7 位
MOV C,ACC.6
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.5
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.4
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.3
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.2
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.1
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.0
MOV DI,C
SETB SK
NOP
CLR SK
NOP
WR_DAT: ;写入一个字节数据(8位)
MOV A,WDM
MOV C,ACC.7
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.6
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.5
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.4
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.3
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.2
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.1
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.0
MOV DI,C
SETB SK
NOP
CLR SK
NOP
LCALL DL2MS ;调用延时,等待DO空闲!!!
LCALL DL2MS
LCALL DL2MS
LLK: CLR CS ;93C46 进入休眠,降低功耗
RET
;-----------------------------------------------------------------
;-----------------------------------------------------
;----------从指定的地址中读出一个字节数据(八位)子程序
;-----------------------------------------------------
READ: ;110
SETB CS ;启动93C46
NOP
MOV A,ADDR ;把欲读出的数据的地址送给A
LCALL HIGH46
LCALL HIGH46
CLR DI
SETB SK
NOP
CLR SK
NOP
RD_ADDR: ;读出地址设置(7位地址)
MOV C,ACC.6
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.5
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.4
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.3
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.2
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.1
MOV DI,C
SETB SK
NOP
CLR SK
NOP
MOV C,ACC.0
MOV DI,C
SETB SK
NOP
CLR SK
NOP
RD_DAT: ;读出一个字节的数据
SETB SK
NOP
MOV C,DO
MOV ACC.7,C
CLR SK
NOP
SETB SK
NOP
MOV C,DO
MOV ACC.6,C
CLR SK
NOP
SETB SK
NOP
MOV C,DO
MOV ACC.5,C
CLR SK
NOP
SETB SK
NOP
MOV C,DO
MOV ACC.4,C
CLR SK
NOP
SETB SK
NOP
MOV C,DO
MOV ACC.3,C
CLR SK
NOP
SETB SK
NOP
MOV C,DO
MOV ACC.2,C
CLR SK
NOP
SETB SK
NOP
MOV C,DO
MOV ACC.1,C
CLR SK
NOP
SETB SK
NOP
MOV C,DO
MOV ACC.0,C
CLR SK
NOP
MOV RDM,A ;保存读出的数据到 RDM(22H)
CLR CS ;93C46 进入休眠,降低功耗
RET
;---------------------------------------------------------------------------
;-----------------------------------------------------
;-----------擦除所有单元子程序--------------------------
;-----------------------------------------------------
EARASE:
SETB CS ;启动93C46
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
LCALL DL2MS ;调用延时,等待DO空闲!!!
LCALL DL2MS
LCALL DL2MS
LLL: CLR CS ;93C46 进入休眠,降低功耗
RET
;----------------------------------------------------------------------
END
上一篇:24c02开机计数器程序
史海拾趣
|
现在访问论坛的人还不到200人:L ,而且还不见上涨。 上来说话的就更少了。 论坛改版之后问题更是凸现衔接不上,没有通过测试就直接使用,至少也应该测下能否兼容吧。:( 影响人的心情。 对于删帖子也有点操作不当,对于不适合的帖子应该移到相应 ...… 查看全部问答> |
|
本帖最后由 dontium 于 2015-1-23 11:13 编辑 我的通讯设置为FIFO模式,11个数进一次接收中断(唯一的中断入口),信号是通过一个上位发送的。出现了错误。 现象如下:当上位机程序重起时,我的板子必须掉电重起,否则我的程序的中断根本进不去, ...… 查看全部问答> |
|
单颗LED白灯在老化板上检测出来的数据,与把LED白灯组装成一个灯具老化时检测出来的数据,肯定是有点出入的。 这个差异的大小,取决于LED工作时的电性参数和灯具的设计情况,以及灯具使用的环境。 首先,选择什么样的LED白灯。 这 ...… 查看全部问答> |
|
介绍德州仪器 C2000微控制器系列中的最新 Concerto MCU在许多性能方面特有的优势,解释为什么Concerto 可以帮助您消除以往技术妥协的烦恼。探讨TI MCU 产品系列以及 C2000 Concerto的有机结合,进一步说明Concerto 的特性与构架. 另外还介绍了TI 提 ...… 查看全部问答> |
|
【FPGA(cyclone4)第二期】终于看完这份资料了-适合入门 2013/9/4 16:08 纪念一下,终于系统的看完了FPGA低级建模的资料,总共363页,包括24个例程,包括低级建模基础知识——低级建模基础建模——低级建模仿顺序结构——低级建模接口建模——低级建模系统建模六大块,绝对物超所值,分享给大家,一起学习 ...… 查看全部问答> |
|
FPGA\\CPLD设计学习笔记 题记:这个笔记不是特权同学自己整理的,特权同学只是对这个笔记做了一下完善,也忘了是从那DOWNLOAD来的,首先对整理者表示感谢。这些知识点确实都很实用,这些设计思想或者也可以说是经验吧,是很值得每一个有志于FPGA/C ...… 查看全部问答> |




