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

📄 hal4sys0.a51

📁 Philips公司的USB1.1器件D12的固件程序
💻 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 + -