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

📄 51与ide硬盘.asm

📁 该程序用来测试89C51与IDE硬盘的接口
💻 ASM
字号:
 ;该程序用来测试89C51与IDE硬盘的接口
      ADD1           EQU	0BEFFH
	ADD2           EQU	7EFFH
	ADD3  	   EQU	0BAFFH
	C_PORT         EQU	0BFFFH
	D_PORT         EQU      0B8FFH
	ORG 0000H
               DB 00H
      AJMP START
   ORG 0003H
      AJMP SINT0	         ;中断入口地址	
   ORG 0030H
START:CLR P3.1
	ACALL DETL
	ACALL DETL
	SETB P3.1
	ACALL INIT
	SETB EA
	SETB EX0
;	AJMP PLAY
;(33H,32H,31H,30H)<--SIZE OF FAT TABLE
BEGIN:ACALL DBR
	ACALL RD1S
R_DBR:CLR  P3.0
	MOV  P1,#0FFH
	MOV R0,#30H
RD256:MOV DPTR,#D_PORT
	MOV R7,#00H
RDP:	MOVX A,@DPTR
	MOV  B,P1
	CJNE R7,#0EEH,N1
	MOV @R0,A
	INC R0
	MOV @R0,B
	INC R0
	CJNE R0,#34H,RDP
	DEC R7
N1:	DJNZ R7,RDP
	SETB P3.0 
;(34H,35H)<--FIRST CLUST 	
	ACALL FDT
	ACALL RD1S
R_FDT:CLR  P3.0
	MOV  P1,#0FFH
RD255:MOV DPTR,#D_PORT
	MOV R7,#00H
RDP1:	MOVX A,@DPTR
	MOV  B,P1
	CJNE R7,#0F3H,N2
	MOV @R0,A
	INC R0
	MOV @R0,B
	INC R0
	CJNE R0,#3AH,RDP1
	DEC R7
	DEC R7
N2:	DJNZ R7,RDP1
	SETB P3.0 
	ACALL A_F
	ACALL S_F

PLAY:	SETB 7FH
	MOV DPTR,#ADD1           ;1写驱动器/磁头寄存器
	MOV A,#0a0H
	MOVX @DPTR,A
	MOV DPTR,#ADD2           ;2 读辅助状态寄存器
W1:	MOVX A,@DPTR	
	JB ACC.7,W1	
	mov DPTR,#ADD3	    ;3 写扇区数寄存器
      MOV A,#08h
	MOVX @DPTR,A
	INC DPH		    ;4  写起始扇区地址寄存器
	MOV A,40H
	MOVX @DPTR,A 
	INC DPH		     ;5 写柱面0寄存器
	mov A,41h
	MOVX @DPTR,A
	INC DPH		      ;6 写柱面1寄存器
	MOV A,42H
	MOVX @DPTR,A
	MOV DPTR,#ADD1	      ;7 写磁头/驱动寄存器
	MOV A,#0e0H
	MOVX @DPTR,A
	mov DPTR,#ADD2          ;8 读辅助状态寄存器
W2:	movX A,@DPTR
	JB ACC.7,W2
	mov DPTR,#C_PORT        ;9 写命令寄存器
	mov A,#0c8h
	MOVX @DPTR,A

;P1.5 DMARQ------P1.6 DMACK#
	jnb p3.4,$
	MOV P2,#0B8H
	;acall det
	clr p3.5
      JB 7FH,$			;wait
      MOV A,47H
	JNZ R_P
	MOV A,46H
	JNZ R_P
	MOV A,45H
	JNZ R_P
	MOV A,44H
	JNZ R_P
	Ajmp BEGIN
R_P:  AJMP PLAY

SINT0:CLR EX0           	  ;清8031中断
	JB 00H,SINT02
	SETB P3.5			   ;DMACK#=1
	mov DPTR,#C_PORT          ;读主状态寄存器(清IDE中断)
      MOVX A,@DPTR
	CLR 7FH 
	MOV A,40H
	ADDC A,#08H
	MOV 40H,A
	MOV A,41H
	ADDC A,#00H
	MOV 41H,A
	MOV A,42H
	ADDC A,#00H
	MOV 42H,A
;CHANGE SIZE OF CLUSTER
	CLR C
	MOV  A,44H
	SUBB A,#01H
	MOV  44H,A
	MOV  A,45H
	SUBB A,#00H
	MOV  45H,A
	 MOV  A,46H
	 SUBB A,#00H
	 MOV  46H,A
	 MOV  A,47H
	 SUBB A,#00H
	 MOV  47H,A
	SETB EX0
	RETI
SINT02:MOV DPTR,#C_PORT
	MOVX A,@DPTR
	SETB 7EH
	SETB EX0
	RETI
INIT:	MOV R0,#20H
	MOV R7,#5FH
	CLR A
RE1:	MOV @R0,A
	INC R0
	DJNZ R7,RE1
	mov 40h,#92H
	mov 41h,#0A4h
	mov 42h,#04h
	mov 43h,#00h
	mov 44H,#0E4H
	MOV 45H,#30H
	MOV 46H,#00H
	MOV 47H,#00H
	RET
DET:  MOV R7,#01H
DE0:	MOV R6,#01FH
	DJNZ R6,$
	DJNZ R7,DE0
	RET
DETL:MOV R5,#0FFH
DETL1:ACALL DET
	DJNZ R5,DETL1
	RET
FDT:  CLR C
	MOV A,30H
	RLC A
	MOV 30H,A
	MOV A,31H
	RLC A
	MOV 31H,A
	MOV A,32H
	RLC A
	MOV 32H,A
	MOV A,33H
	RLC A
	MOV 33H,A
	MOV A,30H
	ADD A,#5FH
	MOV 40H,A
	MOV A,31H
	ADDC A,#00H
	MOV 41H,A
	MOV A,32H
	ADDC A,#00H
	MOV 42H,A
	MOV A,33H
	ADDC A,#00H
	MOV 43H,A
	SETB 00H
	RET
DBR:  MOV 40H,#3FH
	MOV 41H,#00H
	MOV 42H,#00H
	SETB 00H
	RET
A_F:  MOV A,40H
	ADD A,#08H
	MOV 40H,A
	MOV A,41H
	ADDC A,#00H
	MOV 41H,A
	MOV A,42H
 	ADDC A,#00H
	MOV 42H,A
	MOV A,43H
	ADDC A,#00H
	MOV 43H,A
	RET
S_F:  MOV R7,#04H
SFRP: CLR C
	MOV A,39H
	RRC  A
	MOV 39H,A
	MOV A,38H
	RRC A
	MOV 38H,A
	MOV A,37H
	RRC A
	MOV 37H,A
	DJNZ R7,SFRP
	MOV 44H,37H
	MOV 45H,38H
	MOV 46H,39H
	RET
RD1s: MOV DPTR,#ADD1           ;1写驱动器/磁头寄存器
	MOV A,#0a0H
	MOVX @DPTR,A
	MOV DPTR,#ADD2          ;2 读辅助状态寄存器
W3:	MOVX A,@DPTR	
	JB ACC.7,W3	
	mov DPTR,#ADD3	    ;3 写扇区数寄存器
       MOV A,#01h
	MOVX @DPTR,A
	INC DPH		    ;4  写起始扇区地址寄存器
	MOV A,40H
	MOVX @DPTR,A 
	INC DPH		     ;5 写柱面0寄存器
	mov A,41h
	MOVX @DPTR,A
	INC DPH		      ;6 写柱面1寄存器
	MOV A,42H
	MOVX @DPTR,A
	MOV DPTR,#ADD1	      ;7 写磁头/驱动寄存器
	MOV A,#0e0H
	MOVX @DPTR,A
	mov DPTR,#ADD2          ;8 读辅助状态寄存器
W4:	movX A,@DPTR
	JB ACC.7,W4
	mov DPTR,#C_PORT        ;9 写命令寄存器
	mov A,#20h
	MOVX @DPTR,A
	JNB 7EH,$
	CLR 00H
	CLR 7EH
	RET
END
;本程序2月17日通过。

⌨️ 快捷键说明

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