📄 usblib.c
字号:
// USB Host Controller test pattern Library file
// 05/20/2003 Jeff
#include <systypes.h> /* Paradigm C++ standard types */
#include <stdio.h>
#include <dos.h>
#include <alloc.h>
#include <embedded.h>
#include <string.h>
#include <conio.h>
#include "..\Include\USBHost.h"
/* +++++++++++++++++++++ Global Variable +++++++++++++++++++++++++ */
unsigned int UpperAddr (void far *p)
{
unsigned int i=0,j=0;
unsigned long int k=0;
i=FP_SEG(p);
j=FP_OFF(p);
k=i;
k<<=8;
k=k+j;
k>>=16;
return((unsigned int)k);
}
unsigned int LowerAddr (void far *p)
{
unsigned int i=0,j=0;
unsigned long int k=0;
i=FP_SEG(p);
j=FP_OFF(p);
k=i;
k<<=8;
k=k+j;
return((unsigned int)k);
}
void DWordWrite(void far *p, u32 data)
{
u16 temp;
asm{pushf};
asm{cli};
temp = LowerAddr(p);
outport(PCI_DWAAL_REG, temp);
temp = (UpperAddr(p)|0x8000);
outport(PCI_DWAAH_REG, temp);
temp = (u16)(data & 0xFFFF);
outport(PCI_DWADL_RQG, temp);
temp = (u16)((data >> 16) & 0xFFFF);
outport(PCI_DWADH_RQG, temp);
asm{popf}
}
void DWordWriteHL(void far *p, u16 dataH, u16 dataL)
{
u16 temp;
asm{pushf};
asm{cli};
temp = LowerAddr(p);
outport(PCI_DWAAL_REG, temp);
temp = (UpperAddr(p)|0x8000);
outport(PCI_DWAAH_REG, temp);
outport(PCI_DWADL_RQG, dataL);
outport(PCI_DWADH_RQG, dataH);
asm{popf}
}
u32 DWordRead(void far *p)
{
u16 temp;
u32 temp32;
asm{pushf};
asm{cli};
temp = LowerAddr(p);
outport(PCI_DWAAL_REG, temp);
temp = (UpperAddr(p)|0x8000);
outport(PCI_DWAAH_REG, temp);
temp = inport(PCI_DWADL_RQG);
temp32 = inport(PCI_DWADH_RQG);
temp32 = (temp32 << 16) | temp;
asm{popf}
return temp32;
}
void mdelay(u16 ms)
{
int i;
outport(0xFF52, 0x30D4); //Set delay value
for(i=0;i<ms;i++)
{
//1 ms delay
outport(0xFF50, 0); //Clear counter
outport(0xFF56, 0xC000); //enable Timer 0
do{} while((inport(0xFF56) & 0x0020) == 0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -