📄 hal4sys.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 + -