93c46演示程序(spi总线接口)

上传人:第*** 文档编号:34085906 上传时间:2018-02-20 格式:DOC 页数:8 大小:167KB
返回 下载 相关 举报
93c46演示程序(spi总线接口)_第1页
第1页 / 共8页
93c46演示程序(spi总线接口)_第2页
第2页 / 共8页
93c46演示程序(spi总线接口)_第3页
第3页 / 共8页
93c46演示程序(spi总线接口)_第4页
第4页 / 共8页
93c46演示程序(spi总线接口)_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《93c46演示程序(spi总线接口)》由会员分享,可在线阅读,更多相关《93c46演示程序(spi总线接口)(8页珍藏版)》请在金锄头文库上搜索。

1、实验 13:93C46 演示程序(SPI 总线接口)相关搜索: SPI, 总线, 接口, 演示, 程序本帖最后由 阿南 于 2009-7-29 20:38 编辑 实验 13:93C46 演示程序(SPI 总线接口)93c46 是 1k 位串行 EEPROM 储存器。 每一个储存器都可以通过 DI/DO 引脚写入或读出。它的存储容量为 1024 位,内部为 1288 位或 6416 位。93C46 为串行三线 SPI 操作芯片,在时钟时序的同步下接收数据口的指令。指令码为 9 位十进制码,具有 7 个指令,读、擦写使能、擦除、写、全擦、全写及擦除禁止。该芯片擦写时间快,有擦写使能保护,可靠性高,

2、擦写次数可达 100 万次,以下给出了 93C46 与单片机的接线图,和引脚说明。93C46 串行 EEPROM 指令格式选择指令 起始位 操作数 地址 数据64X16 128X8 64X16 128X8读(READ) 1 10 A5-A0 A6-A0 清除(ERASE) 1 11 A5-A0 A6-A0 写(WRITE) 1 01 A5-A0 A6-A0 D15-D0 D7-D0写使能(EWEN) 1 00 11XXXX 11XXXXX 写禁止(EWDS) 1 00 00XXXX 00XXXXX 芯片清除(ERAL) 1 00 10XXXX 10XXXXX 芯片写入(WRAL) 1 00 0

3、1XXXX 01XXXXX D15-D0 D7-D0说明:1 读 (READ):当下达 10XXXXXX 指令后,将使地址(XXXXXX)的数据在 SK=HI 时由DO 输出。2 写(WRITE):在写入数据前,必须先下达写使能(EWEN)指令,然后在下达01XXXXXX 指令后,当 SK=HI 时,会把数据码写入指定的地址(XXXXXX),而 DO=0 时,表示还在进行烧写,烧写完成后,DO 会转为 HI,写入动作完成后,必须再下达写禁止(EWDS)指令。3 清除(ERASE):下达清除指令 11XXXXXX,会将地址(XXXXXX)的数据清楚。4 写使能(EWEN):下达 0011XXXX

4、 指令后,才可进行写入(WRITE)的动作。5 写禁止(EWDS):下达 0000XXXX 指令后,才可重复进行写入(WRITE)的动作。6 芯片清除(ERAL):下达 0010XXXX 指令后,全部禁止。7 芯片写入(WRAL):下达 0001XXXX 指令后,全部写入“0”。接线方法:1 用一个 4PIN 数据排线一端插入 CPU 部份 JP3(P3 口)的 P3.4,P3.5,P3.6,P3.7。另外一端插入 93C46 部份的输入端 JP10.2 用一条 8PIN 的数据排线把 CPU 部份的 P2 口(JP2)接到八路指示灯部份的 JP11。此程序先把 8 路跑马灯的数据写入 93C

5、46, 然后读出送 P2 口显示。 运行程序可以观察到 8 路跑马灯。为证明 93C46 的作用, 可以拔下 93c46 的数据线, 再次运行程序, 则没有跑马灯。参考程序:READ EQU 0 ;读 93C46WRITE EQU 2 ;写入 93C46EWEN EQU 4 ;93C46 写入使能EWDS EQU 6 ;93C46 写入禁止CS BIT P3.7 ;93C46 CSCLK BIT P3.6 ;93C46 CLKDI BIT P3.5 ;93C46 DIDO BIT P3.4 ;93C46 DOADR46 EQU 20HORG 00HSTART0: MOV 21H,#00H ;取

6、地址码MOV 22H,#08H ;8 组 8 个码MOV P3,#10HMOV ADR46,#00H ;93C46 地址 00HSTART: MOV A,#EWEN ;写入使能CALL TO9346MOV A ,21H ;载入取码指针MOV DPTR,#TABLE ;至 TABLE 取码MOVC A,A+DPTRMOV R4,A ;存入写入寄存器MOV A,#WRITE ;写入数据 CALL TO9346MOV A,#EWDS ;写禁止CALL TO9346INC 21H ;取下一个码INC ADR46 ;下一个地址CALL DELAY1DJNZ 22H,STARTMOV R0,#30H ;存

7、入 8051 的 RAM 地址MOV ADR46,#00H ;93C46 :00 地址MOV 22H,#08H ; 93C46 8 个地址 8 个码A1: MOV A,#READ ;读(地址)的数据CALL TO9346MOV A,R4 ;93C46 输出的数据载入 ACCMOV R0,AINC ADR46 ;读下一个地址INC R0 ;下一个 RAMDJNZ 22H,A1A2: MOV 22H,#08HMOV R0,#30HOUTPUT:MOV A,R0MOV P2,A ;输出至 P2CALL DELAY1 ;INC R0DJNZ 22H,OUTPUTJMP A2TO9346: SETB C

8、S ;93C46 CS=1SETB DI ;DI=1SETB CLK ;CLK=1CALL DELAY ;启动位CLR CLK ;CLK=0CALL DELAYMOV DPTR,#JPTBL46JMP A+DPTR ;依 ACC 值跳至相关地址JPTBL46: AJMP SREAD ;读AJMP SWRITE ;写AJMP SEWEN ;写使能 AJMP SEWDS ;写禁止SREAD:MOV A,#80H ;送操作码 10CALL SDATAMOV A,ADR46 ;载入 93C46 地址CALL SADR ;写入 7 位地址(DI)CALL RDT46 ;读出数据(DO),存入 3CHMO

9、V R4,A JMP EX9346SWRITE:MOV A,#40H ;送操作码 01CALL SDATAMOV A,ADR46 ;载入 93C46 地址CALL SADR ;写入 7 位地址MOV A,R4 ;写入(3CH)数据CALL SDT46JMP EX9346SEWEN:CLR A ;送操作码 00CALL SDATAMOV A,#60H ;写使能操作码 11XXXXXCALL SADRJMP EX9346SEWDS:CLR A ;送操作码 00CALL SDATACLR A ;写 7 位禁止操作码 000XXXXCALL SADREX9346: CLR CS ;CS=0RETSAD

10、R:CLR CRLC AMOV R3,#7JMP SD1SDATA: MOV R3,#2JMP SD1SDT46: MOV R3,#8 ;写入 8 位数据SD1: RLC A ;MOV DI,CSETB CLKCALL DELAYCLR CLKCALL DELAYDJNZ R3,SD1RETRDT46: MOV R3,#8 ;读出 8 位数据RD1: SETB CLKCALL DELAYCLR CLKCALL DELAYMOV C,DORLC ADJNZ R3,RD1RETDELAY: MOV R7,#0FHDJNZ R7,$RETDELAY1: MOV R4,#20D1: MOV R5,#20D2: MOV R6,#248DJNZ R6,$DJNZ R5,D2DJNZ R4,D1RETTABLE : DB 0FEH ,0FDH ,0FBH, 0F7H ;广告一个灯左移DB 0EFH ,0DFH ,0BFH, 7FH ;E

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号