⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 at45db.asm

📁 60秒ISD2560语音芯片的汇编源程序
💻 ASM
字号:
$INCLUDE (t89c51cc01.INC)

AT_SCK	EQU	P0.5
AT_SI	EQU	P0.6
AT_CS	EQU	P3.3
AT_SO	EQU	P3.7

	ORG	0030H
	AJMP	MAIN
	ORG	0100H

MAIN:	MOV	P0,#0FFH
	MOV	P3,#0FFH

	MOV	R3,#00H		;主存页地址和页内地址(4空位+11位页址+9位页内址)
	MOV	R4,#00H
	MOV	R5,#00H		;R5为地址最高字节

	MOV	30H,#50H	;暂存8个字节数据	
	MOV	31H,#51H
	MOV	32H,#52H
	MOV	33H,#53H
	MOV	34H,#54H
	MOV	35H,#55H
	MOV	36H,#56H
	MOV	37H,#57H

	LCALL	WRITAT
	;LCALL	MEM2BUF
	;LCALL	MBCMP
	;LCALL	WRBUF
	;LCALL	BUF2MB
	LCALL	DELAY1S
	;LCALL	RDBUF
	LCALL	READAT
	;LCALL	RDSTA
	MOV	P2,46H
	CLR	P0.0		;
	CLR	P0.1		;
	JMP	$
	
RDSTA:	CLR	AT_CS		;读状态寄存器
	MOV	A,#57H
	LCALL	WRAT45
	LCALL	RDAT45
	SETB	AT_CS
	RET

MBCMP:	CLR	AT_CS		;主存与缓冲区比较
	CLR	AT_SCK
	MOV	A,#60H
	LCALL	WRAT45
	MOV	A,#00H
	LCALL	WRAT45
	MOV	A,#00H
	LCALL	WRAT45
	MOV	A,#00H
	LCALL	WRAT45
	SETB	AT_CS
	SETB	AT_SCK	
	RET

WRBUF:	CLR	AT_CS		;写缓冲区1/2
	CLR	AT_SCK
	MOV	A,#84H		;84H(87H)+15空位+9位地址
	LCALL	WRAT45

	MOV	A,#00H
	LCALL	WRAT45
	MOV	A,#00H
	LCALL	WRAT45
	MOV	A,#00H
	LCALL	WRAT45

	MOV	R0,#30H		;待写的数据存放在30H-37H内存单元中
	MOV	R1,#08H	
WRBUF1:	MOV	A,@R0
	LCALL	WRAT45
	INC	R0
	DJNZ	R1,WRBUF1
	SETB	AT_CS
	SETB	AT_SCK	
	RET

RDBUF:	CLR	AT_CS		;读缓冲区1/2
	CLR	AT_SCK
	MOV	A,#54H		;54H(56H)+15空位+9位地址+8空位
	LCALL	WRAT45

	MOV	A,#00H
	LCALL	WRAT45
	MOV	A,#00H		;缓冲区页内地址高字节
	LCALL	WRAT45
	MOV	A,#00H		;
	LCALL	WRAT45
	MOV	A,#00H
	LCALL	WRAT45
				
	MOV	R0,#40H		;读出的数据暂存在40H-47H内存单元中
	MOV	R1,#08H
RDBUF1:	LCALL	RDAT45		
	MOV	@R0,A
	INC	R0
	DJNZ	R1,RDBUF1	
	SETB	AT_CS
	SETB	AT_SCK
	RET		

BUF2MB:	CLR	AT_CS		;缓冲区1/2拷贝至主存页
	CLR	AT_SCK
	MOV	A,#83H		;
	LCALL	WRAT45

	MOV	A,#00H
	LCALL	WRAT45
	MOV	A,#00H
	LCALL	WRAT45
	MOV	A,#00H
	LCALL	WRAT45

	SETB	AT_CS
	SETB	AT_SCK	
	RET

MEM2BUF:CLR	AT_CS		;主存页拷贝至缓冲区1/2
	CLR	AT_SCK
	MOV	A,#53H
	LCALL	WRAT45

	MOV	A,#00H
	LCALL	WRAT45
	MOV	A,#00H
	LCALL	WRAT45
	MOV	A,#00H
	LCALL	WRAT45
	MOV	A,#00H
	LCALL	WRAT45

	SETB	AT_CS	
	SETB	AT_SCK
	RET

WRITAT:	CLR	AT_CS		;主存通过缓冲区1/2页编程
	CLR	AT_SCK
	MOV	A,#82H		;82H(85H)+4空位+11位页址+9位页内址
	LCALL	WRAT45

	MOV	A,R5		;写入地址
	LCALL	WRAT45
	MOV	A,R4
	LCALL	WRAT45
	MOV	A,R3
	LCALL	WRAT45

	MOV	R0,#30H		;待写的数据存放在30H-37H内存单元中
	MOV	R1,#08H	
WRITAT1:MOV	A,@R0
	LCALL	WRAT45
	INC	R0
	DJNZ	R1,WRITAT1
	SETB	AT_CS
	SETB	AT_SCK
	RET

READAT:	CLR 	AT_CS		;主存读
	CLR	AT_SCK

	MOV	A,#52H		;52H+4个空位+11位页地址+9位页内部地址+32个空位
	LCALL	WRAT45

	MOV	A,R5		;写入地址
	LCALL	WRAT45
	MOV	A,R4
	LCALL	WRAT45
	MOV	A,R3
	LCALL	WRAT45

	MOV	A,#00H		;写入32位无关项
	LCALL	WRAT45
	MOV	A,#00H
	LCALL	WRAT45
	MOV	A,#00H
	LCALL	WRAT45
	MOV	A,#00H
	LCALL	WRAT45

	MOV	R0,#40H		;读出的数据暂存在40H-47H内存单元中
	MOV	R1,#08H
READAT1:LCALL	RDAT45		
	MOV	@R0,A
	INC	R0
	DJNZ	R1,READAT1	
	SETB	AT_CS
	SETB	AT_SCK
	RET

WRAT45:	MOV	R2,#08H		;字节数据写子程序
WRAT451:CLR	AT_SCK
	RLC	A
	MOV	AT_SI,C
	SETB	AT_SCK
	DJNZ	R2,WRAT451
	RET

RDAT45:	MOV	R2,#08H		;字节数据读子程序
RDAT451:CLR	AT_SCK
	NOP
	SETB	AT_SCK		;
	MOV	C,AT_SO
	RLC	A
	SETB	AT_SCK
	DJNZ	R2,RDAT451
	RET

DELAY1S:
	MOV    	R1,#02H
delay01:MOV     R6,#0FFH	      
delay02:MOV     R2,#0FFH	      
        DJNZ    R2,$
        DJNZ    R6,DELAY02
        DJNZ    R1,DELAY01
        RET
 
	END
	
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -