导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→93C46的ZJB程序和对应的汇编程序

* 12186: 93C46的ZJB程序和对应的汇编程序

   lyzjb 
lyzjb发表的帖子 

 93C46的ZJB程序和对应的汇编程序
;******************************************************************
;93C46串行EEPROM储存器子程序库(8位配置)
;******************************************************************
 CS==P1.0,DI==P1.1,DO==P1.2,SK==P1.3
;------------------------------------------------------------------
;入口:无,出口:无,命令:1001100000B
;------------------------------------------------------------------
允许93C46写:
 A=10011000B,CS=0,CS=1
 R7=8{  <A,DI=C,SK=0,SK=1,??R7  <}
 SK=0,SK=1,SK=0,SK=1
 CS=0,/
;------------------------------------------------------------------
;入口:无,出口:无,命令:1000000000B
;------------------------------------------------------------------
禁止93C46写:
 CS=SK=0,CS=DI=SK=1
 DI=0,R7=9{SK=0,SK=1,??R7  <}
 CS=0,/
;------------------------------------------------------------------
;入口:A=地址,返回:A=数据,命令:110+7位地址
;------------------------------------------------------------------
读93C46:
 A=A&00111111B,A=|10000000B  ;A中的地址加上读命令
 CS=SK=0,CS=DI=SK=1    ;送入启动信号
 R2=8{DI=  <A,SK=0,SK=1,??R2  <}  ;送入读命令和地址
 R2=8{SK=0,SK=1,DO=  <A,??R2  <}  ;读出数据
 CS=0,/       ;关闭芯片,返回数据在A中
;------------------------------------------------------------------
;入口:A=地址,B=数据,返回:无,命令:101+7位地址
;------------------------------------------------------------------
写93C46:
 A=&00111111B,A=|01000000B  ;A中的地址加上写命令
 CS=SK=0,CS=DI=SK=1    ;送入启动信号
 R2=8{DI=  <A,SK=0,SK=1,??R2  <}  ;送入写命令和地址
 A=B,R2=8{DI=  <A,SK=0,SK=1,??R2  <} ;送入数据
 CS=0,CS=1,{?DO=0  <}    ;等待芯片写入完毕
 CS=0,/       ;关闭芯片,返回
;------------------------------------------------------------------
;结束
;------------------------------------------------------------------

;******************************************************************
;对应的汇编编制的93C46子程序库
;******************************************************************
 CS EQU  P1.0
 DI EQU  P1.1
 DO EQU  P1.2
 SK EQU  P1.3
;------------------------------------------------------------------
;入口:无,出口:无,命令:1001100000B
;------------------------------------------------------------------
允许93C46写:
 MOV A,#10011000B
 CLR CS
 SETB CS
 MOV R7,#8
A1: RLC A
 MOV DI,C
 CLR SK
 SETB SK
 DJNZ R7,A1
 CLR SK
 SETB SK
 CLR SK
 SETB SK
 CLR CS
 RET
;------------------------------------------------------------------
;入口:无,出口:无,命令:1000000000B
;------------------------------------------------------------------
禁止93C46写:
 CLR CS
 CLR SK
 SETB CS
 SETB DI
 SETB SK
 CLR DI
 MOV R7,#9
A2: CLR SK
 SETB SK
 DJNZ R7,A2
 CLR CS
 RET
;------------------------------------------------------------------
;入口:A=地址,返回:A=数据,命令:110+7位地址
;------------------------------------------------------------------
读93C46:
 ANL A,#00111111B
 ORL A,#10000000B
 CLR CS
 CLR SK
 SETB CS
 SETB DI
 SETB SK
 MOV R7,8
A3: RLC A
 MOV C,DI
 CLR SK
 SETB SK
 DJNZ R7,A3
 MOV R7,#8
A4: CLR SK
 SETB SK
 RLC A
 MOV DO,C
 DJNZ R7,A4
 CLR CS
 RET

;------------------------------------------------------------------
;入口:A=地址,B=数据,返回:无,命令:101+7位地址
;------------------------------------------------------------------
写93C46:
 ANL A,#00111111B
 ORL A,#01000000B
 CLR CS
 CLR SK
 SETB CS
 SETB DI
 SETB SK
 MOV R7,#8
A5: RLC A
 MOV C,DI
 CLR SK
 SETB SK
 DJNZ R7,A5
 MOV R7,#8
A6: CLR SK
 SETB SK
 RLC A
 MOV DO,C
 DJNZ R7,A6
 CLR CS
 RET
;------------------------------------------------------------------
;结束
;------------------------------------------------------------------


发表时间:2007年7月20日5:44:42

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:写完一页后的延时时间不够应该是这样的,你看看DATASHEET,写完一页一定要有比较长的延时的.有结
[下一篇帖子]:北京大扬:PXA 270开发板套件优惠促销:270开发板+3.5LCD+270仿真器=70