?? ev386ex.h
字號:
/* Copyright (C) Intel Corporation 1994
All Rights Reserved.
The Software is provided "AS IS."
LIMITATION OF LIABILITY: NEITHER INTEL NOR ITS VENDORS OR AGENTS
SHALL BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF USE, LOSS OF DATA,
INTERRUPTION OF BUSINESS, NOR FOR INDIRECT, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES OF ANY KIND WHETHER UNDER THIS AGREEMENT OR
OTHERWISE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
/********************** Global typedef ***********************/
typedef unsigned char BYTE; /* 8-bit value */
typedef unsigned short WORD; /* 16-bit value */
typedef unsigned long DWORD; /* 32-bit value */
/********************** Global Used defines ******************/
/* Error Flags */
#define E_OK 0
#define E_INVALID_DEVICE 1
#define E_INVALID_VECTOR 2
#define E_BADVECTOR 3
#define INTERRUPT_ISR 1
#define TRAP_ISR 2
#define IDT_ALIAS 2 /* Only valid for protected mode */
#define TRAP_TYPE 0x8f00 /* Only valid for protected mode */
#define INTR_TYPE 0x8e00 /* Only valid for protected mode */
#define LOBYTE(w) ((BYTE)(w))
#define HIBYTE(w) ((BYTE)(((WORD)(w) >> 8) & 0xFF))
#define LOWORD(l) ((WORD)(DWORD)(l))
#define HIWORD(l) ((WORD)((((DWORD)(l)) >> 16) & 0xFFFF))
/*** Bit Masks ***/
#define BIT0MSK 0x1
#define BIT1MSK 0x2
#define BIT2MSK 0x4
#define BIT3MSK 0x8
#define BIT4MSK 0x10
#define BIT5MSK 0x20
#define BIT6MSK 0x40
#define BIT7MSK 0x80
/********************** Global Function **********************/
extern void _EnableExtIOMem(void);
/**************** Interrupt Control Unit configuration defines ***********************/
/* ICU Modes */
#define ICU_SFNM 0x10
#define ICU_AUTOEOI 0x2
#define ICU_TRIGGER_LEVEL 0x8
#define ICU_TRIGGER_EDGE 0x0
/* ICU Master Pins */
#define MPIN_INT0 0x4
#define MPIN_INT1 0x8
#define MPIN_INT2 0x10
#define MPIN_INT3 0x20
/* ICU Master External Cascade IRs */
#define MCAS_IR1 0x2
#define MCAS_IR2 0x4
#define MCAS_IR5 0x20
#define MCAS_IR6 0x40
#define MCAS_IR7 0x80
/* ICU Slave Pins */
#define SPIN_INT4 0x1
#define SPIN_INT5 0x2
#define SPIN_INT6 0x4
#define SPIN_INT7 0x8
/* ICU IRQ Mask Values*/
#define IR0 0x1
#define IR1 0x2
#define IR2 0x4
#define IR3 0x8
#define IR4 0x10
#define IR5 0x20
#define IR6 0x40
#define IR7 0x80
/* ICU EOI Types */
#define NONSPECIFIC_EOI 0x20
#define SPECIFIC_EOI 0x60
#define NonSpecificEOI() _SetEXRegByte(OCW2S,NONSPECIFIC_EOI); _SetEXRegByte(OCW2M,NONSPECIFIC_EOI)
#define MstrSpecificEOI(irq) _SetEXRegByte(OCW2M, 0x60 | ((BYTE)((irq) & 0x7)) )
#define SlaveSpecificEOI(irq) _SetEXRegByte(OCW2S, 0x60 | ((BYTE)((irq) & 0x7)) )
extern int InitICU(BYTE MstrMode, BYTE MstrBase, BYTE MstrCascade, BYTE SlaveMode, BYTE SlaveBase,BYTE MstrPins, BYTE SlavePins);
extern int InitICUSlave(BYTE SlaveMode, BYTE SlaveBase, BYTE SlavePins);
extern void SetInterruptVector( void (far interrupt *IntrProc)(void), int Vector, int IntrType);
extern int SetIRQVector( void (far interrupt *IntrProc)(void), int IRQ, int IntrType);
extern void Enable8259Interrupt(BYTE MstrMask, BYTE SlaveMask);
extern void Disable8259Interrupt(BYTE MstrMask, BYTE SlaveMask);
/**************** Asynchronous Serial I/O Port defines ***********************/
#define SIO_0 0
#define SIO_1 1
#define SIO0_IRQ 4 /* IRQ # Master IRQ4 */
#define SIO1_IRQ 3 /* IRQ # Master IRQ3 */
#define SIO_5DATA 0x0
#define SIO_6DATA 0x1
#define SIO_7DATA 0x2
#define SIO_8DATA 0x3
#define SIO_1STOPBIT 0x0
#define SIO_2STOPBIT 0x4
#define SIO_NOPARITY 0x0
#define SIO_ODDPARITY 0x8
#define SIO_EVNPARITY 0x18
#define SIO_FRC0PARITY 0x28
#define SIO_FRC1PARITY 0x38
#define SIO_SETBREAK 0x40
#define SIO_INTERNAL_SRC 0x1
#define SIO_EXTERNAL_SRC 0x0
#define SIO_CLKSRC_CLK2 0x1
#define SIO_CLKSRC_COMCLK 0x0
#define SIO_INTR_NONE 0
#define SIO_INTR_RBF 0x1
#define SIO_INTR_TBE 0x2
#define SIO_INTR_RLS 0x4
#define SIO_INTR_MS 0x8
#define SIO_MCR_LOOP_BACK 0x10
#define SIO_MCR_OUT2 0x8
#define SIO_MCR_OUT1 0x4
#define SIO_MCR_RTS 0x2
#define SIO_MCR_DTR 0x1
#define SIO_8N1 (SIO_8DATA | SIO_1STOPBIT | SIO_NOPARITY)
#define SIO_7N1 (SIO_7DATA | SIO_1STOPBIT | SIO_NOPARITY)
/* Status Bits */
#define SIO_ERROR_BITS 0x1e
#define SIO_RX_BUF_FULL 0x1
#define SIO_OVERRUN 0x2
#define SIO_PARITY_ERR 0x4
#define SIO_FRAMING_ERR 0x8
#define SIO_BREAK_INTR 0x10
#define SIO_TX_BUF_EMPTY 0x20
#define SIO_TX_EMPTY 0x40
/* Offsets from beginning of SIO port addresses */
#define RBR 0
#define TBR 0
#define DLL 0
#define IER 1
#define DLH 1
#define IIR 2
#define LCR 3
#define MCR 4
#define LSR 5
#define MSR 6
#define SCR 7
#define SIO0_BASE 0xF4F8
#define SIO1_BASE 0xF8F8
/* Define Function Macros */
#define GetSIO0Status() _GetEXRegByte(LSR0)
#define GetSIO1Status() _GetEXRegByte(LSR1)
#define GetSIO0InterruptID() _GetEXRegByte(IIR0)
#define GetSIO1InterruptID() _GetEXRegByte(IIR1)
#define GetSIO0ModemStatus() _GetEXRegByte(MSR0)
#define GetSIO1ModemStatus() _GetEXRegByte(MSR1)
#define GetSIO0Char() _GetEXRegByte(RBR0)
#define GetSIO1Char() _GetEXRegByte(RBR1)
#define ChangeSIO0IntrSrc(src) _SetEXRegByte(IER0,src)
#define ChangeSIO1IntrSrc(src) _SetEXRegByte(IER1,src)
#define ChangeSIO0Mode(Mode) _SetEXRegByte(LCR0,Mode)
#define ChangeSIO1Mode(Mode) _SetEXRegByte(LCR1,Mode)
#define DisableSIO0Interrupt(src) _SetEXRegByte(IER0,_GetEXRegByte(IER0) & !(src))
#define DisableSIO1Interrupt(src) _SetEXRegByte(IER1,_GetEXRegByte(IER1) & !(src))
/* SIO Function Definitions */
extern int InitSIO(int Unit, BYTE Mode, BYTE ModemCntrl, DWORD BaudRate, DWORD BaudClkIn);
extern int SetSIOInterrupt(int Unit,BYTE IntrSources, void (far interrupt *InterruptFnc)(void), int ISR_Type);
extern BYTE SerialReadChar(int Unit);
extern int SerialReadStr(int Unit, char far *str, int count);
extern void SerialWriteChar(int Unit, BYTE ch);
extern void SerialWriteStr(int Unit, const char far *str);
extern void SerialWriteMem(int Unit, const char far *mem, int count);
extern void Service_RBF (void);
extern void SerialWriteStr_Int(int Unit, const char far *str);
extern void Service_TBE(void);
/**************** Port I/O configuration defines ***********************/
/* Port 1 configuration defines */
#define DCD0 0x1
#define RTS0 0x2
#define DTR0 0x4
#define DSR0 0x8
#define RI0 0X10
#define LOCK 0x20
#define HOLD 0X40
#define HOLDACK 0X80
/* Port 2 configuration defines */
#define CS0 0x1
#define CS1 0x2
#define CS2 0x4
#define CS3 0x8
#define CS4 0X10
#define RXD0 0x20
#define TXD0 0X40
#define CTS0 0X80
/* Port 3 configuration defines */
#define TMROUT0 0x1
#define TMROUT1 0x2
#define INT0 0x4
#define INT1 0x8
#define INT2 0x10
#define INT3 0x20
#define PWRDWN 0x40
#define COMCLK 0x80
/* Port Direction defines */
#define P0_IN 0x1
#define P1_IN 0x2
#define P2_IN 0x4
#define P3_IN 0x8
#define P4_IN 0x10
#define P5_IN 0x20
#define P6_IN 0x40
#define P7_IN 0x80
#define Px_OUT 0
/* Pin configuration defines */
#define RTS1 0x1
#define SSIOTX 0
#define DTR1 0x2
#define SRXCLK 0
#define TXD1 0x4
#define DACK1 0
#define CTS1 0x8
#define EOP 0
#define CS5 0x10
#define DACK0 0
#define TIMER2 0x20
#define COPROC 0
#define REFRESH 0x40
#define CS6 0
extern void Init_IOPorts(BYTE Port1, BYTE Port2, BYTE Port3, BYTE PortDir1,
BYTE PortDir2, BYTE PortDir3, BYTE PortLtc1,
BYTE PortLtc2, BYTE PortLtc3);
/**************** Timer configuration defines ***********************/
#define TMR_0 0
#define TMR_1 1
#define TMR_2 2
#define TMR0_IRQ 0 /* IRQ # Master IRQ0 */
#define TMR1_IRQ 10 /* IRQ # Slave IRQ2 */
#define TMR2_IRQ 11 /* IRQ # Slave IRQ3 */
/* Timer Modes */
#define TMR_TERMCNT 0
#define TMR_1SHOT (1<<1)
#define TMR_RATEGEN (2<<1)
#define TMR_SQWAVE (3<<1)
#define TMR_SW_TRIGGER (4<<1)
#define TMR_HW_TRIGGER (5<<1)
/* Count Type */
#define TMR_CLK_BCD 1
#define TMR_CLK_BIN 0
/* Timer Pin Configuration */
#define TMR_CLK_INTRN 0
#define TMR_CLK_EXTRN 0x1
#define TMR_GATE_VCC 0
#define TMR_GATE_EXTRN 0x2
#define TMR_OUT_ENABLE 0x1
#define TMR_OUT_DISABLE 0
#define TMR_ENABLE 1
#define TMR_DISABLE 0
/* Timer Function Definitions */
extern int InitTimer(int Unit, WORD Mode, BYTE Inputs, BYTE Output,WORD InitCount, int Enable);
extern void SetUp_ReadBack(BYTE Timer0, BYTE Timer1, BYTE Timer2, BYTE GetStatus, BYTE GetCount);
extern WORD CounterLatch(BYTE Timer);
extern WORD ReadCounter(BYTE Timer);
/**************** SSIO configuration defines ***********************/
#define SSIO_TUE 0x80 /* Transmit Underflow Error */
#define SSIO_THBE 0x40 /* Transmit Holding Buffer Empty */
#define SSIO_TX_IE 0x20 /* Transmit Interrupt Enable */
#define SSIO_TX_ENAB 0x10 /* Transmitter Enable */
#define SSIO_ROE 0x08 /* Receive Overflow Error */
#define SSIO_RHBF 0x04 /* Receive Holding Buffer Full */
#define SSIO_RX_IE 0x02 /* Receive Interrupt Enable */
#define SSIO_RX_ENAB 0x01 /* Receiver Enable */
#define SSIO_TX_MASTR 0x02 /* Transmit Master Mode */
#define SSIO_RX_MASTR 0x01 /* Receive Master Mode */
#define SSIO_TX_SLAVE 0
#define SSIO_RX_SLAVE 0
#define SSIO_CLK_SERCLK 0x01 /* Baud Rate Clocking Source SERCLK = CLK2/4 */
#define SSIO_CLK_PSCLK 0x00 /* Baud Rate Clocking Source PSCLK = (CLK2/2) / (CLKPRS+2) */
#define SSIO_BAUD_ENAB 0x80 /* Enable Baud Rate Generator */
extern void InitSSIO(BYTE Mode, BYTE MasterTxRx, BYTE BaudValue, BYTE PreScale);
extern WORD SSerialReadWord(BYTE MasterSlave);
extern void SSerialWriteWord(WORD Ch,BYTE MasterSlave);
/**************** Watch Dog Timer ***********************/
#define SetWatchDogReload(ReloadHi,ReloadLow) \
_SetEXRegWord(WDTRLDL,ReloadLow);_SetEXRegWord(WDTRLDH,ReloadHi);
#define WatchDogClockDisable() \
_SetEXRegByte(WDTSTATUS, _GetEXRegByte(WDTSTATUS) | BIT0MSK)
#define WatchDogClockEnable() \
_SetEXRegByte(WDTSTATUS, _GetEXRegByte(WDTSTATUS) & ~BIT0MSK)
extern void ReLoadDownCounter(void);
extern DWORD GetWDT_Count(void);
extern void WDT_BusMonitor(BYTE EnableDisable);
extern void EnableWDTInterrupt(void);
/*************************Refresh Control Unit***************************/
#define EnableRCU() \
_SetEXRegWord(RDFSCON, _GetEXRegWord(RDFSCON) | 0x8000)
#define DisableRCU() \
_SetEXRegWord(RDFSCON, _GetEXRegWord(RDFSCON) & 0x7fff)
extern int InitRCU(WORD counter_value);
extern WORD Get_RCUCounterValue(void);
/*********************Clock and Power Management Unit*********************/
#define IDLE 0x02
#define PWDWN 0x01
#define ACTIVE 0x00
extern int Set_Prescale_Value(WORD prescale);
extern void Enter_Idle_Mode(void);
extern void Enter_Powerdown_Mode(void);
extern void Mode_Setting_To_Active(void);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -