📄 hal4sys0.a51
字号:
$NOMOD51
NAME HAL4SYS0
;8051 mem map
P0 DATA 080H
P1 DATA 090H
P2 DATA 0A0H
P3 DATA 0B0H
TCON DATA 088H
IT0 BIT 088H.0
IE0 BIT 088H.1
IT1 BIT 088H.2
IE1 BIT 088H.3
TR0 BIT 088H.4
TF0 BIT 088H.5
TR1 BIT 088H.6
TF1 BIT 088H.7
SCON DATA 098H
RI BIT 098H.0
TI BIT 098H.1
RB8 BIT 098H.2
TB8 BIT 098H.3
REN BIT 098H.4
SM2 BIT 098H.5
SM1 BIT 098H.6
SM0 BIT 098H.7
IE DATA 0A8H
EX0 BIT 0A8H.0
ET0 BIT 0A8H.1
EX1 BIT 0A8H.2
ET1 BIT 0A8H.3
EA BIT 0A8H.7
ES BIT 0A8H.4
RXD BIT 0B0H.0
TXD BIT 0B0H.1
INT0 BIT 0B0H.2
INT1 BIT 0B0H.3
T0 BIT 0B0H.4
T1 BIT 0B0H.5
WR BIT 0B0H.6
RD BIT 0B0H.7
IP DATA 0B8H
PX0 BIT 0B8H.0
PT0 BIT 0B8H.1
PX1 BIT 0B8H.2
PT1 BIT 0B8H.3
PS BIT 0B8H.4
ACC DATA 0E0H
PSW DATA 0D0H
P BIT 0D0H.0
OV BIT 0D0H.2
RS0 BIT 0D0H.3
RS1 BIT 0D0H.4
F0 BIT 0D0H.5
AC BIT 0D0H.6
CY BIT 0D0H.7
SBUF DATA 099H
SP DATA 081H
DPL DATA 082H
DPH DATA 083H
PCON DATA 087H
TMOD DATA 089H
TL0 DATA 08AH
TL1 DATA 08BH
TH0 DATA 08CH
TH1 DATA 08DH
B DATA 0F0H
;D12 map
D12A0 BIT 0B0H.0
D12WR_N BIT 0B0H.6
D12RD_N BIT 0B0H.7
D12CS_N BIT 090H.6
D12INT_N BIT 0B0H.2
D12RST_N BIT 0B0H.5
;245 map
BUFF_OE_N BIT 090H.5
BUFF_DIR_RD BIT 090H.7
;ATA map
ATA_A0 BIT 090H.0
ATA_A1 BIT 090H.1
ATA_A2 BIT 090H.2
ATA_CS0_N BIT 090H.3
ATA_CS1_N BIT 090H.4
ATA_RST_N BIT 0B0H.4
ATA_IORDY BIT 0B0H.3
ATA_RD_N BIT 0B0H.6
ATA_WR_N BIT 0B0H.7
;CFA map
CFA_A0 BIT 090H.0
CFA_A1 BIT 090H.1
CFA_A2 BIT 090H.2
CFA_CS0_N BIT 090H.3
CFA_CS1_N BIT 090H.4
CFA_RST_N BIT 0B0H.4
CFA_IORDY BIT 0B0H.3
CFA_RD_N BIT 0B0H.6
CFA_WR_N BIT 0B0H.7
;?PR?_Hal4Sys_D12CmdPortOutB?HAL4SYS0 SEGMENT CODE
;?PR?_Hal4Sys_D12DataPortOutB?HAL4SYS0 SEGMENT CODE
;?PR?Hal4Sys_D12DataPortInB?HAL4SYS0 SEGMENT CODE
;?PR?_Hal4Sys_ATAPortOutB?HAL4SYS0 SEGMENT CODE
;?PR?_Hal4Sys_ATAPortInB?HAL4SYS0 SEGMENT CODE
;?PR?Hal4Sys_ATADataPortInW?HAL4SYS0 SEGMENT CODE
?PR?_Hal4Sys_SwapINT16?HAL4SYS0 SEGMENT CODE
?PR?_Hal4Sys_SwapINT32?HAL4SYS0 SEGMENT CODE
;PUBLIC Hal4Sys_D12DataPortInB
;PUBLIC _Hal4Sys_D12DataPortOutB
;PUBLIC _Hal4Sys_D12CmdPortOutB
;PUBLIC Hal4Sys_ATADataPortInW
;PUBLIC _Hal4Sys_ATAPortInB
;PUBLIC _Hal4Sys_ATAPortOutB
PUBLIC _Hal4Sys_SwapINT32
PUBLIC _Hal4Sys_SwapINT16
;************************************************************
; void Hal4Sys_D12CmdPortOutB( INT8 val)
;************************************************************
; RSEG ?PR?_Hal4Sys_D12CmdPortOutB?HAL4SYS0
; USING 0
;_Hal4Sys_D12CmdPortOutB:
;---- Variable 'val?40' assigned to Register 'R7' ----
; SETB D12A0
; MOV A,R7
; PUSH DPH
; PUSH DPL
; MOV DPTR,#100H
; MOVX @DPTR,A
; POP DPL
; POP DPH
; RET
; END OF _Hal4Sys_D12CmdPortOutB
;************************************************************
; void Hal4Sys_D12DataPortOutB( INT8 val)
;************************************************************
; RSEG ?PR?_Hal4Sys_D12DataPortOutB?HAL4SYS0
; USING 0
;_Hal4Sys_D12DataPortOutB:
;---- Variable 'val?50' assigned to Register 'R7' ----
; CLR D12A0
; MOV A,R7
; PUSH DPH
; PUSH DPL
; MOV DPTR,#100H
; MOVX @DPTR,A
; POP DPL
; POP DPH
; RET
; END OF _Hal4Sys_D12DataPortOutB
;************************************************************
; INT8 Hal4Sys_D12DataPortInB( void)
;************************************************************
; RSEG ?PR?Hal4Sys_D12DataPortInB?HAL4SYS0
; USING 0
;Hal4Sys_D12DataPortInB:
;---- Variable 'val?50' assigned to Register 'R7' ----
; CLR D12A0
; PUSH DPH
; PUSH DPL
; MOV DPTR,#100H
; MOVX A,@DPTR
; MOV R7,A
; POP DPL
; POP DPH
; RET
; END OF Hal4Sys_D12DataPortInB
;************************************************************
; void Hal4Sys_ATAPortOutB(INT8 Addr, INT8 Data)
;************************************************************
; RSEG ?PR?_Hal4Sys_ATAPortOutB?HAL4SYS0
; USING 0
;_Hal4Sys_ATAPortOutB:
;---- Variable 'Addr' assigned to Register 'R7' ----
;---- Variable 'Data' assigned to Register 'R5' ----
; MOV P1,R7 ;MCU_P1 = Addr;
; MOV P2,R5 ;ATA_DATABUS_LO = Data;
; CLR ATA_WR_N ;ATA_WR_N = 0;
;_HSAPOB_Loop:
; JNB ATA_IORDY,_HSAPOB_Loop ;while(ATA_IORDY!=1);
; SETB ATA_WR_N ;ATA_WR_N = 1;
; MOV P2,#0FFH ;ATA_DATABUS_LO = 0xFF;
; RET
; END OF _Hal4Sys_ATAPortOutB
;************************************************************
; INT8 Hal4Sys_ATAPortInB(INT8 Addr)
;************************************************************
; RSEG ?PR?_Hal4Sys_ATAPortInB?HAL4SYS0
; USING 0
;_Hal4Sys_ATAPortInB:
;---- Variable 'Addr' assigned to Register 'R7' ----
;---- Register 'R7' used as return Varible ----
; // Assume ATA_RD_N = 1;
; MOV P1,R7 ;MCU_P1 = Addr;
; CLR ATA_RD_N ;ATA_RD_N = 0;
;_HSAPIB_Loop:
; JNB ATA_IORDY,_HSAPIB_Loop ;while(ATA_IORDY!=1);
;---- Register 'R7' used as return Varible ----
; MOV R7,P2 ;ATA_DATA_LO = ATA_DATABUS_LO;
; SETB ATA_RD_N ;ATA_RD_N = 1;
; RET
; END OF _Hal4Sys_ATAPortInB
;************************************************************
; INT16 Hal4Sys_ATADataPortInW(void)
;************************************************************
; RSEG ?PR?Hal4Sys_ATADataPortInW?HAL4SYS0
; USING 0
;Hal4Sys_ATADataPortInW:
; // Assume ATA_RD_N = 1;
; MOV P1,#0D0H ;MCU_P1 = ATAREG4IN_DATA; ATAREG4IN_DATA == 0xD0
; CLR ATA_RD_N ;ATA_RD_N = 0;
;_HSAPIW_Loop:
; JNB ATA_IORDY,_HSAPIW_Loop ;while(ATA_IORDY!=1);
; MOV R6,P0 ;ATA_DATABUS_HI == P0
; MOV R7,P2 ;ATA_DATABUS_LO == P2
; SETB ATA_RD_N ;ATA_RD_N = 1;
; RET
; END OF Hal4Sys_ATADataPortInW
;************************************************************
; INT16 Hal4Sys_SwapINT16(INT16 wData)
;************************************************************
RSEG ?PR?_Hal4Sys_SwapINT16?HAL4SYS0
USING 0
_Hal4Sys_SwapINT16:
;---- Variable 'wData' assigned to Register 'R6/R7' ----
MOV A,R6
XCH A,R7
MOV R6,A
RET
; END OF _Hal4Sys_SwapINT16
;************************************************************
; INT32 Hal4Sys_SwapINT32(INT32 dData)
;************************************************************
RSEG ?PR?_Hal4Sys_SwapINT32?HAL4SYS0
USING 0
_Hal4Sys_SwapINT32:
;---- Variable 'wData' assigned to Register 'R4/R7' ----
MOV A,R5
XCH A,R6
MOV R5,A
MOV A,R4
XCH A,R7
MOV R4,A
RET
; END OF _Hal4Sys_SwapINT32
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -