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

📄 ata_drv_load.a51

📁 ATMEL 89c51sndc mp3外接硬盘源码
💻 A51
字号:
/*A**************************************************************************
* NAME:         ata_drv_load.a51
*----------------------------------------------------------------------------
* Copyright (c) 2002 Atmel.
*----------------------------------------------------------------------------
* RELEASE:      snd1c-demo-hdd-0_2_0      
* REVISION:     1.1     
*----------------------------------------------------------------------------
* PURPOSE:
* This file contains the low driver function for ata/ide
*****************************************************************************/

;_____ I N C L U D E S ____________________________________________________


;_____ M A C R O S ________________________________________________________

EXTRN XDATA (ide_data)
EXTRN XDATA (fat_buf_sector)

sfr UEPDATX =   0xCF
sfr DAT16H  =   0xF9
sfr AUXR1   =   0xA2

;_____ D E F I N I T I O N ________________________________________________

IDE_MODULE  SEGMENT CODE

RSEG    IDE_MODULE
;_____ D E C L A R A T I O N ______________________________________________

PUBLIC  ata_load_sector
PUBLIC  ata_download_sector
PUBLIC  hdd_download_data_usb

;*F**************************************************************************
; NAME: ata_load_sector
;----------------------------------------------------------------------------
; PARAMS:
;
; return:
;----------------------------------------------------------------------------
; PURPOSE: 
;   optimized function for loading data from disk to a buffer
;----------------------------------------------------------------------------
; EXAMPLE:
;----------------------------------------------------------------------------
; NOTE: 
;----------------------------------------------------------------------------
; REQUIREMENTS: 
;****************************************************************************
ata_load_sector:
    MOV     DPTR,#fat_buf_sector            ;DPTR -> fat_buf_sector
    INC     AUXR1
    MOV     DPTR,#ide_data                  ;DPTR -> ide_data
    MOV     R0,#080H
loop:
    MOVX    A,@DPTR                         ; load ide_data
    INC     AUXR1                           ; DPTR -> fat_buf_sector
    MOVX    @DPTR,A                         ; save acc in fat_buf_sector [n]
    INC     DPTR                            ; increase n
    MOV     A,DAT16H                        ; save dat16h in fat_buf_sector[n]
    MOVX    @DPTR,A
    INC     DPTR                            ; increase n
    INC     AUXR1                           ; DPTR -> ide_data

    MOVX    A,@DPTR                         ; load ide_data
    INC     AUXR1                           ; DPTR -> fat_buf_sector
    MOVX    @DPTR,A                         ; save acc in fat_buf_sector [n]
    INC     DPTR                            ; increase n
    MOV     A,DAT16H                        ; save dat16h in fat_buf_sector[n]
    MOVX    @DPTR,A
    INC     DPTR                            ; increase n
    INC     AUXR1                           ; DPTR -> ide_data

    DJNZ    R0,loop

    RET

;*F**************************************************************************
; NAME: ata_download_sector
;----------------------------------------------------------------------------
; PARAMS:
;
; return:
;----------------------------------------------------------------------------
; PURPOSE: 
;   optimized function for downloading data buffer to disk
;----------------------------------------------------------------------------
; EXAMPLE:
;----------------------------------------------------------------------------
; NOTE: 
;----------------------------------------------------------------------------
; REQUIREMENTS: 
;****************************************************************************
ata_download_sector:
    MOV     DPTR,#fat_buf_sector            ; DPTR -> fat_buf_sector
    INC     AUXR1
    MOV     DPTR,#ide_data                  ; DPTR -> ide_data
    MOV     R0,#080H

loop_down:
    INC     AUXR1                           ; DPTR -> fat_buf_sector
    MOVX    A,@DPTR
    MOV     R1,A                            ; save fat_buf_sector [n] in register R1
    INC     DPTR                            ; increase n
    MOVX    A,@DPTR
    MOV     DAT16H,A                        ; save fat_buf_sector [n] in register DAT16H
    MOV     A,R1                            ; set ACC with R1
    INC     DPTR                            ; increase n
    INC     AUXR1                           ; DPTR -> ide_data
    MOVX    @DPTR,A                         ; download ide_data

    INC     AUXR1                           ; DPTR -> fat_buf_sector
    MOVX    A,@DPTR
    MOV     R1,A                            ; save fat_buf_sector [n] in register R1
    INC     DPTR                            ; increase n
    MOVX    A,@DPTR
    MOV     DAT16H,A                        ; save fat_buf_sector [n] in register DAT16H
    MOV     A,R1                            ; set ACC with R1
    INC     DPTR                            ; increase n
    INC     AUXR1                           ; DPTR -> ide_data
    MOVX    @DPTR,A                         ; download ide_data

    DJNZ    R0,loop_down

    RET



;*F**************************************************************************
; NAME: hdd_download_data_usb
;----------------------------------------------------------------------------
; PARAMS:
;
; return:
;----------------------------------------------------------------------------
; PURPOSE: 
;   download usb data to hard disk device
;----------------------------------------------------------------------------
; EXAMPLE:
;----------------------------------------------------------------------------
; NOTE: 
;----------------------------------------------------------------------------
; REQUIREMENTS: 
;****************************************************************************
hdd_download_data_usb:
    MOV         DPTR,#ide_data

    MOV         A,UEPDATX       ;1
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;2
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;3
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;4
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;5
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;6
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;7
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;8
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;9
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;10
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;11
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;12
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;13
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;14
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;15
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;16
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;17
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;18
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;19
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;20
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;21
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;22
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;23
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;24
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;25
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;26
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;27
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;28
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;29
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;30
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;31
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    MOV         A,UEPDATX       ;32
    MOV         DAT16H,UEPDATX
    MOVX        @DPTR,A

    RET

END

⌨️ 快捷键说明

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