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

📄 hal4sys.c

📁 D12 USB源代码 硬盘
💻 C
字号:
/*IDE外设低层代码
   //*************************************************************************
   //
   //                  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.C
   // Author:           Hilbert Zhang ZhenYu
   // Created:          Nov. 19, 99
   // Modified:
   // Revision: 		0.0.
   //
   //*************************************************************************
   //
   //*************************************************************************
   */
#include <reg51.h>                /* special function register declarations   */
#include <intrins.h>
#undef   GLOBAL_EXT
#include "SysCnfg.h"
#include "BasicTyp.H"
#include "Hal4Sys.h"
/*
   //*************************************************************************
   // Public Data
   //*************************************************************************
*/
INT8_EXT    Hal4Sys_ClockTicks;
/*
   //*************************************************************************
   // Functions
   //*************************************************************************
*/
void Hal4Sys_InitTimer0(void)		//定时器0初始化设置
{
    //Init Timer0;
    TIMER0_MODE &= 0XF0;    // clear Timer 0 amd Keep Timer 1
	TIMER0_MODE |= 0X01;    // 16bit Timer
	TIMER0_PRIORITY = 0;    // 0 prority of Timer 0
	TIMER0_IRQ_ENABLE = 1;  // Enable IRQ Timer0
    TIMER0_LOW = 0x00;    // 1 MS interval @24MHz
    TIMER0_HIGH =TIMER0_AT24MHZ;
    TIMER0_START = 1;       // Start Timer 0
}


void Hal4Sys_Wait4US(void)
{
    // @24MHz
    _nop_();
    _nop_();
    _nop_();
    _nop_();
}


void Hal4Sys_WaitInUS(INT16 time)
{
   for(; time != 0; time -- );  //once 10 states 
}


void Hal4Sys_WaitInMS(INT8 time)				
{
    LowerIRQL();
    Hal4Sys_ClockTicks = 0 ;
    while(Hal4Sys_ClockTicks > time);
}

/*  PIO mode for D12 access */

void Hal4Sys_D12CmdPortOutB( INT8 val)				//D12写命令
{
	*((INT8 xdata *)D12_command) = val;
}


void Hal4Sys_D12DataPortOutB( INT8 val)				//D12写数据
{
	*((INT8 xdata *)D12_data) = val;
}


unsigned char Hal4Sys_D12DataPortInB( void)			//D12读
{
	return *((INT8 xdata *)D12_data);
}


void Hal4Sys_ATAPortOutB(INT16 Addr, INT8 Data)		//ATA写一字节
{
	*((INT8 xdata *)Addr) = Data;
}


INT8 Hal4Sys_ATAPortInB(INT16 Addr)				     //ATA读字节
{
	return *((INT8 xdata *)Addr);
}


INT16 Hal4Sys_ATADataPortInW(void)				//ATA读字16位
{
	return  *((INT16 xdata *)ATAREG4IN_DATA);
}


//Amend by Liu Ying Bin
INT16 Hal4Sys_SwapINT16(INT16 wData)
{
    return ( (wData<<8)|(wData>>8) );
}


INT32 Hal4Sys_SwapINT32(INT32 dData)
{
    dData = (dData&0xff)<<24|(dData&0xff00)<<8|(dData&0xff000000)>>24|(dData&0xff0000)>>8;
	return dData;
}


void Hal4Sys_ResetD12(void)								//D12复位
{
    D12RST_N = 0; // reset D12 , Holdup time > 2 uS.
    Hal4Sys_WaitInMS(2000);
    D12RST_N = 1;
    Hal4Sys_WaitInUS(100);
}


void Hal4Sys_InitD12(void)
{
    Hal4Sys_ResetD12();
    D12INT_EDGE = 0;        // Level trigle for D12INT_N
    D12INT_PRIORITY = 0;    // 0 Priority Level of D12INT_N
    D12INT_ENABLE = 1;      // Enalbe External IRQ0 for D12INT_N
}

⌨️ 快捷键说明

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