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

📄 hal4sys.h

📁 D12 USB源代码 硬盘
💻 H
字号:
/*
   //*************************************************************************
   //
   //                  P H I L I P S   P R O P R I E T A R Y
   //
   //           COPYRIGHT (c)   1999 BY PHILIPS SINGAPORE.
   //                     --  ALL RIGHTS RESERVED  --
   //
   // File Name:	Hal4sys.H
   // Author:       Hilbert Zhang ZhenYu
   // Created:		Nov. 26 99
   // Modified:
   // Revision:		0.0
   //
   //*************************************************************************
   //
   //*************************************************************************
   */
#ifndef __HAL4SYS_H__
#define __HAL4SYS_H__

// 8051 I/O map
#define MCU_P0          P0
#define MCU_P1          P1
#define MCU_P2          P2
#define MCU_P3          P3


// 8051 Timer
#define TIMER0_AT12MHZ          (0xFC)
#define TIMER0_AT24MHZ          (0xF8)
#define TIMER0_AT36MHZ          (0xF4)
#define TIMER0_AT48MHZ          (0xF0)

// 8051 REG Map
#define D12INT_EDGE	        IT0
#define D12INT_PRIORITY	    PX0
#define D12INT_ENABLE	    EX0

#define TIMER0_MODE	        TMOD
#define TIMER0_LOW          TL0
#define TIMER0_HIGH         TH0
#define TIMER0_PRIORITY	    PT0
#define TIMER0_IRQ_ENABLE	ET0
#define TIMER0_START    	TR0

//D12 map at P1
sbit D12CS_N            = 0x96;		//p1.6

// D12 map at P3
sbit IDE_CS             = 0xB1;		//P3.1	// 当为低电平,不可以CF卡移出
sbit D12INT_N           = 0xB2;		//p3.2	D12中断
sbit D12RST_N           = 0xB5;		//P3.5	D12复位
sbit D12WR_N            = 0xB6;		//P3.6	D12写(ATA)
sbit D12RD_N            = 0xB7;		//P3.7	D12读(ATA)
sbit D12SUSPD			= 0x97;		//P3.3	D12器件处于挂起状态(小板)

//sbit D12SUSPD			= 0xB3;		//P3.3	D12器件处于挂起状态(小板)

//ATA map at P3
sbit ATA_RST_N          = 0xB4;		//ATA复位


#define D12_command					0x4001		//D12 	命令
#define D12_data					0x4000		//D12	数据

//ATA总线驱动器PIO(并行输入输出)的存贮器地址:
#define ATAREG4OUT_DATA             0x8000		
#define ATAREG4IN_DATA              0x8002

#define ATAREG4OUT_FEATURE          0x8004
#define ATAREG4IN_ERROR             0x8004

#define ATAREG4OUT_SECTOR_COUNT     0x8005
#define ATAREG4IN_SECTOR_COUNT      0x8005

#define ATAREG4OUT_SECTOR_NUMBER    0x8006
#define ATAREG4IN_SECTOR_NUMBER     0x8006

#define ATAREG4OUT_CYLINDER_LOW     0x8007
#define ATAREG4IN_CYLINDER_LOW      0x8007

#define ATAREG4OUT_CYLINDER_HIGH    0x8008
#define ATAREG4IN_CYLINDER_HIGH     0x8008

#define ATAREG4OUT_DEVICE_HEAD      0x8009
#define ATAREG4IN_DEVICE_HEAD       0x8009

#define ATAREG4OUT_COMMAND          0x800a
#define ATAREG4IN_STATUS			0x800a

#define ATAREG4OUT_CONTROL          0x800b
#define ATAREG4IN_ALTERNATE_STATUS  0x800b

#define ATARead2BWriteD12_1B        0x4002
#define ATARead0BWriteD12_2B        0x4004


// Functions
#define RaiseIRQL()	        EA=0
#define LowerIRQL()	        EA=1
#define Hal4Sys_InitMCU()   /*Give up all ports*/ \
                        	MCU_P0 = 0xFF;\
	                        MCU_P1 = 0xFF;\
	                        MCU_P2 = 0xFF;\
	                        MCU_P3 = 0xFF


INT16 Hal4Sys_SwapINT16(INT16 wData);
INT32 Hal4Sys_SwapINT32(INT32 dData);

void Hal4Sys_InitTimer0(void);

void Hal4Sys_Wait4US(void);
void Hal4Sys_WaitInUS(INT16 time);
void Hal4Sys_WaitInMS(INT8 time);

void Hal4Sys_D12CmdPortOutB( INT8 val);
void Hal4Sys_D12DataPortOutB( INT8 val);
unsigned char Hal4Sys_D12DataPortInB( void);

void Hal4Sys_ResetD12(void);
void Hal4Sys_InitD12(void);

//    something different

void Hal4Sys_ATAPortOutB(INT16 Addr, INT8 Data);
INT8 Hal4Sys_ATAPortInB(INT16 Addr);
INT16 Hal4Sys_ATADataPortInW(void);

#endif

⌨️ 快捷键说明

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