亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hal4sys.c

?? 該軟件源程序示范了如何在嵌入式系統中實現USB-OTG協議
?? C
字號:
/*
   //*************************************************************************
   //
   //                  P H I L I P S   P R O P R I E T A R Y
   //
   //           COPYRIGHT (c)   2005 BY PHILIPS SINGAPORE.
   //                     --  ALL RIGHTS RESERVED  --
   //
   // Project:		ISP1302 Eva Kit
   // File Name:	HAL4sys.c
   // Author:		Guo Yang Bin, Email: guo.yang.bin@philips.com
   // Created:		Nov 20, 2005
   // Modified:
   // Revision:		1.1
   //*************************************************************************
*/

#include <stdio.h>
#include <dos.h>

#include "BasicTyp.h"
#include "hal4sys.h"
#include "isr.h"
/*
//*************************************************************************
//  Public static data
//*************************************************************************
*/
ULONG   Hal4Sys_ClockTicks = 0;
unsigned char far *privateBuffer;

/*
//*************************************************************************
//  Private static data
//*************************************************************************
*/
USHORT D09PCKIT_PORTBASE;
UCHAR Hal4Sys_SysCtrl_PORT = 0;
USHORT D09PCKIT_PORTBASE;
extern D09FLAGS bD09flags;
UCHAR inten_state,speed=0;
//#define MK_FP(seg, ofs)     ( (void __far *) ((((unsigned long)(seg)) << 16) + (ofs)))

/*
//*************************************************************************
//  Subroutines
//*************************************************************************
*/
void interrupt (*Hal4Sys_OldIsr4Timer)();

void get_addresses(void)
{
    D09PCKIT_PORTBASE = *((int far *)MK_FP(0x40, 0x08));
}


void Hal4Sys_End_Int(void)   // end of interrupt routine
{
	outportb(0x20,0x20);
}

void Hal4Sys_Initial_uP(void)
{
	Hal4Sys_SysCtrl_PORT = 0;

	Hal4Sys_AcquireTimer0();
}

void Hal4Sys_Release_uP(void)
{
	Hal4Sys_ReleaseTimer0();
    Hal4Sys_End_Int();
	farfree(privateBuffer);
}

// this function added for reset and set the clock synchronization.
void Hal4Sys_ResetPCBA(void)
{      
	Hal4Sys_SysCtrl_PORT &= ~SCP_RST;//	Hal4Sys_SysCtrl_PORT  |= SCP_RST;
	outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT); //
    Hal4Sys_WaitinUS(50);
	Hal4Sys_SysCtrl_PORT  |= SCP_RST;
	outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT); // reset all PCBA
    Hal4Sys_WaitinUS(9000);
	Hal4Sys_SysCtrl_PORT &= ~SCP_RST;
	outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT); // reset release
}
UCHAR Hal4Sys_PowerDet(void)
{      
    UCHAR temp;
	outportb(D09_SYSCTRL_PORT,0x80); //
  //  Hal4Sys_WaitinUS(10);
    temp = inportb(D09_INPUT_PORT)&0x10;
	if(temp)
	{
    	outportb(D09_SYSCTRL_PORT,0x00); //
    //    Hal4Sys_WaitinUS(10);
        temp = inportb(D09_INPUT_PORT)&0x10;
        if(temp==0)
		{
        	outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT); 
			return 1;
		}
		else
		{
			outportb(D09_SYSCTRL_PORT,0); 
            outportb(D09_INOUT_PORT,0); 
						return 0;
		}
	}
	else 
	{
		outportb(D09_SYSCTRL_PORT,0); // reset release
		outportb(D09_INOUT_PORT,0); 
						return 0;
	}
}
void Hal4Sys_Set_pule(void)
{      
	Hal4Sys_SysCtrl_PORT  |= SCP_SPEED;
	outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT); //
    Hal4Sys_WaitinUS(50);
	Hal4Sys_SysCtrl_PORT &= ~SCP_SPEED;
	outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT); // reset all PCBA
    Hal4Sys_WaitinUS(9000);
	Hal4Sys_SysCtrl_PORT |= SCP_SPEED;
	outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT); // reset release
}
void interrupt Hal4Sys_Isr4Timer(void)
{
	Hal4Sys_ClockTicks++;

	(*Hal4Sys_OldIsr4Timer)();
}

void Hal4Sys_ReleaseTimer0(void)
{
	setvect(0x8, Hal4Sys_OldIsr4Timer);
}

void Hal4Sys_AcquireTimer0(void)
{
	Hal4Sys_OldIsr4Timer = getvect(0x8);
	setvect(0x8, Hal4Sys_Isr4Timer);
}


#define MACHINE_CYCLE 50

void Hal4Sys_WaitinUS(IN OUT ULONG time)
{
	ULONG loop;
	for(loop =time*MACHINE_CYCLE;loop>0 ;loop--)
	{
		continue;
	}

}

void Hal4Sys_WaitinMS(
	 IN OUT ULONG time
)
{
    ULONG i;
	for(i=0; i<time; i++)
	{
		Hal4Sys_WaitinUS(16*1000);
	}
}



void Hal4Sys_ControlD09Interrupt(BOOLEAN InterruptEN)
{
	if(InterruptEN)
    {

		inten_state = 0x80;
    }
    else
    {

		inten_state = 0;
    }

//	outportb(D09_ADDRESS_PORT,inten_state);

}
//I2C soft host 
void CLK_SCL_H(void)
{

       Hal4Sys_SysCtrl_PORT  &= ~SCP_SCL;
       outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT); 
       Hal4Sys_WaitinUS(speed);
}
void CLK_SCL_L(void)
{
       Hal4Sys_SysCtrl_PORT  |=  SCP_SCL;
       outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT); 
       Hal4Sys_WaitinUS(speed);
}

void MOSI_SDA_H(void)
{
       outportb(D09_INOUT_PORT,1); 
       Hal4Sys_WaitinUS(speed);
}
void MOSI_SDA_L(void)
{

       outportb(D09_INOUT_PORT,4); 
       Hal4Sys_WaitinUS(speed);
}


void Hal4Sys_i2c_start(void)
{
       CLK_SCL_H();
       MOSI_SDA_H();

       MOSI_SDA_L();

       CLK_SCL_L();
}
UCHAR Hal4Sys_i2c_get_address(void)
{
	   if(bD09flags.bits.adr_state)
   	   return 0x58;
	   else
   	   return 0x5A;
}
void Hal4Sys_i2c_send_data(UCHAR data)
{
   UCHAR i,temp;
	   for(i=0; i<8; i++)
	   {
           temp = (data<<i)&0x80;
           if(temp)
            MOSI_SDA_H(); 
		   else
            MOSI_SDA_L(); 
           CLK_SCL_H();
           CLK_SCL_L();
	   }
}
void Hal4Sys_i2c_ack(void)
{
   UCHAR i=0, temp;
	   i=0;
       MOSI_SDA_H(); 
       CLK_SCL_H();
	do{
         temp = inportb(D09_INPUT_PORT)&0x20;
	   if(temp==0)
	   {
    	   i++;
    	   if(i>20)
		   {
    		   printf("i2c no ack");
    		   break;
		   }
	   }
	   else
		   break;

	   }while(1);
       CLK_SCL_L();  
       Hal4Sys_WaitinUS(10);	   
}

void Hal4Sys_i2c_noack(void)
{
       MOSI_SDA_H(); 
       CLK_SCL_H();
 
       CLK_SCL_L();	   
}

void Hal4Sys_i2c_stop(void)
{
       MOSI_SDA_L(); 
       CLK_SCL_L();

       CLK_SCL_H(); 
       MOSI_SDA_H(); 
	   
}
UCHAR Hal4Sys_i2c_get_data(void)
{
   UCHAR i,data,temp;
    data = 0;
	for(i=0; i<8; i++)
	{
       CLK_SCL_H();
       temp = ((~inportb(D09_INPUT_PORT))>>5)&0x01;
	   data =(data<<1)|temp;
       CLK_SCL_L();
	}
	return data;
}
UCHAR Hal4Sys_Read(UCHAR address)
{
	UCHAR i2c_address,data;
 
	if(bD09flags.bits.bus_state)
	{
   	   i2c_address = Hal4Sys_i2c_get_address();

	   Hal4Sys_i2c_start();
       Hal4Sys_i2c_send_data(i2c_address);
       Hal4Sys_i2c_ack();
       Hal4Sys_i2c_send_data(address);
       Hal4Sys_i2c_ack();

	   Hal4Sys_i2c_start();
       Hal4Sys_i2c_send_data(i2c_address|1);
       Hal4Sys_i2c_ack();
       data=Hal4Sys_i2c_get_data();
       Hal4Sys_i2c_noack();
       Hal4Sys_i2c_stop();
	}
	else
	{
       Hal4Sys_SPI_start();
       Hal4Sys_SPI_address(address);
       Hal4Sys_SPI_null();
       data= Hal4Sys_SPI_getdata();
	   Hal4Sys_SPI_stop();
	}
	return data;

}

void Hal4Sys_Write(UCHAR data, UCHAR address)
{
	UCHAR i2c_address;
	if(bD09flags.bits.bus_state)
	{
   	   i2c_address = Hal4Sys_i2c_get_address();
	   Hal4Sys_i2c_start();
       Hal4Sys_i2c_send_data(i2c_address);
       Hal4Sys_i2c_ack();
       Hal4Sys_i2c_send_data(address);
       Hal4Sys_i2c_ack();

       Hal4Sys_i2c_send_data(data);
       Hal4Sys_i2c_ack();
       Hal4Sys_i2c_stop();
	}	
	else
	{
       Hal4Sys_SPI_start();
       Hal4Sys_SPI_address(address|0X20);
       Hal4Sys_SPI_null();
       Hal4Sys_SPI_senddata(data);
	   Hal4Sys_SPI_stop();
	}
}

void Hal4Sys_SPI_start(void)
{
     Hal4Sys_SysCtrl_PORT  |=  SCP_ADR;
    Hal4Sys_SysCtrl_PORT  |=  SCP_SCL;
    outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT);
    Hal4Sys_SysCtrl_PORT  &= ~SCP_ADR;
    outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT);
}
void Hal4Sys_SPI_stop(void)
{
     Hal4Sys_SysCtrl_PORT  |=  SCP_ADR;

    outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT);
           CLK_SCL_L();
            MOSI_SDA_L(); 
}

void Hal4Sys_SPI_address(UCHAR data)
{

   UCHAR i,temp;
	   for(i=2; i<8; i++)
	   {
           temp = (data<<i)&0x80;
           if(temp)
            MOSI_SDA_H(); 
		   else
            MOSI_SDA_L(); 
           CLK_SCL_H();
           CLK_SCL_L();
	   }

}
void Hal4Sys_SPI_null(void)
{
   UCHAR i;
	   for(i=0; i<18; i++)
	   {
           CLK_SCL_H();
           CLK_SCL_L();
	   }

}
void Hal4Sys_SPI_senddata(UCHAR data)
{
   UCHAR i,temp;
	   for(i=0; i<8; i++)
	   {
           temp = (data<<i)&0x80;
           if(temp)
            MOSI_SDA_H(); 
		   else
            MOSI_SDA_L(); 
           CLK_SCL_H();
           CLK_SCL_L();
	   }
}

UCHAR Hal4Sys_SPI_getdata(void)
{
  UCHAR i,data,temp;
    data = 0;
	for(i=0; i<8; i++)
	{
       CLK_SCL_H();
       temp = ((~inportb(D09_INPUT_PORT))>>6)&0x01;
	   data =(data<<1)|temp;
       CLK_SCL_L();
	}
	return data;
}
void Hal4Sys_SetSPI_Mode(void)
{
    Hal4Sys_SysCtrl_PORT   |=  SCP_SPIEN;
    Hal4Sys_SysCtrl_PORT  |=  SCP_ADR;
    Hal4Sys_SysCtrl_PORT  |=  SCP_SCL;
    outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT); 
    MOSI_SDA_L(); 
    Hal4Sys_ResetPCBA(); 
}

void Hal4Sys_SetI2C_Mode(void)
{
	if(bD09flags.bits.adr_state ==1)
	{
        Hal4Sys_SysCtrl_PORT  &= ~(SCP_SPIEN|SCP_SCL);
        Hal4Sys_SysCtrl_PORT  |=  SCP_ADR;
	}
	else
    	Hal4Sys_SysCtrl_PORT  &=~(SCP_ADR|SCP_SPIEN|SCP_SCL);
    outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT); 
    MOSI_SDA_L(); 
    Hal4Sys_ResetPCBA(); 
}



void Hal4Sys_Service_Low(void)
{
    Hal4Sys_SysCtrl_PORT  |= SCP_SERVICE;
    outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT); 
}

void Hal4Sys_Service_High(void)
{
    Hal4Sys_SysCtrl_PORT  &=  ~SCP_SERVICE;
    outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT); 
}

void Hal4Sys_OE_High(void)
{
     Hal4Sys_SysCtrl_PORT  &= ~SCP_OEN;
    outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT); 
}

void Hal4Sys_OE_Low(void)
{
    Hal4Sys_SysCtrl_PORT  |= SCP_OEN;
     outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT); 
}


/*
UCHAR Hal4Sys_Get_Rxd(UCHAR TXD)
{
     UCHAR temp;
	 if(TXD)
      Hal4Sys_SysCtrl_PORT  |= SCP_TXD;
	 else
      Hal4Sys_SysCtrl_PORT  &= ~SCP_TXD; 

     outportb(D09_SYSCTRL_PORT,Hal4Sys_SysCtrl_PORT); 

     temp = inportb(D09_SYSCTRL_PORT); 

	 if(temp&0x04)
       return 1;
	 else
	   return 0;
}

UCHAR Hal4Sys_Get_Iset(void)
{
     UCHAR temp;
     temp = inportb(D09_SYSCTRL_PORT); 
	 if(temp&0x08)
       return 1;
	 else
	   return 0;
}*/

UCHAR Hal4Sys_Get_Int(void)
{
     UCHAR temp;
     temp = ~inportb(D09_INPUT_PORT); 
	 if(temp&0x80)
       return 1;
	 else
	   return 0;
}

void interrupt (*Hal4Sys_OldIsr4D09)(void);

void Hal4Sys_AcquireD09(void)
{
	UCHAR c, eo;

    Hal4Sys_OldIsr4D09 = getvect(0x0D);
	setvect(0x0D, usb_isr);
	c = inportb(0x21);
	c &= 0xDF;
	outportb(0x21, c);
    get_addresses();
}

void Hal4Sys_ReleaseD09(void)
{
	UCHAR c;
			outportb(D09_SYSCTRL_PORT,0); 
            outportb(D09_INOUT_PORT,0x01); 
	c = inportb(0x21);
	c |= 0x20;
	outportb(0x21, c);
	setvect(0xD, Hal4Sys_OldIsr4D09);

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国精品国产尤物美女| 欧美日韩精品欧美日韩精品一| 日韩欧美资源站| 精久久久久久久久久久| 精品国产精品一区二区夜夜嗨| 日韩va亚洲va欧美va久久| 日韩视频在线永久播放| 国产一区二区福利| 中文幕一区二区三区久久蜜桃| av电影天堂一区二区在线观看| 亚洲视频一区二区在线| 欧美挠脚心视频网站| 精品影视av免费| 国产精品亲子伦对白| 欧美亚洲综合网| 奇米888四色在线精品| 久久久噜噜噜久久中文字幕色伊伊 | 黑人巨大精品欧美黑白配亚洲| 久久综合色天天久久综合图片| aaa欧美大片| 亚洲aaa精品| 欧美国产日本视频| 欧美在线高清视频| 日韩av午夜在线观看| 国产女人aaa级久久久级| 91官网在线观看| 激情综合色综合久久| 亚洲欧美自拍偷拍色图| 欧美少妇bbb| 国产成人99久久亚洲综合精品| 亚洲精品中文在线影院| 欧美不卡在线视频| 一本到不卡精品视频在线观看| 日韩在线播放一区二区| 国产精品国产三级国产aⅴ原创| 欧美蜜桃一区二区三区| 成人av综合在线| 美国三级日本三级久久99| 亚洲欧美在线视频| 精品久久久久久久久久久院品网| 99精品欧美一区二区蜜桃免费| 日韩电影免费在线观看网站| 亚洲人成网站色在线观看| 欧美成人bangbros| 欧美日韩一区二区三区视频| 风间由美一区二区三区在线观看| 丝袜诱惑亚洲看片| 亚洲免费视频中文字幕| 久久九九影视网| 日韩一级黄色片| 欧美日韩一区二区三区四区五区| 成人在线一区二区三区| 久久99在线观看| 爽好久久久欧美精品| 一区二区三区成人在线视频| 国产日韩欧美不卡| 精品国产一区a| 日韩色在线观看| 337p亚洲精品色噜噜| 欧美影院一区二区| 91浏览器在线视频| av男人天堂一区| 国产sm精品调教视频网站| 精品一区精品二区高清| 五月天国产精品| 亚洲国产成人tv| 一个色综合av| 一区二区成人在线观看| 亚洲精品中文字幕在线观看| 中文字幕在线视频一区| 国产精品日产欧美久久久久| 国产欧美精品一区aⅴ影院| 久久人人97超碰com| 日韩免费看的电影| 精品久久久久久久人人人人传媒| 日韩一区二区三区免费观看 | 欧美丰满嫩嫩电影| 精品视频1区2区| 欧美四级电影网| 欧美精品粉嫩高潮一区二区| 欧洲亚洲国产日韩| 欧美男生操女生| 欧美精品日韩一本| 欧美一级夜夜爽| 精品国产伦一区二区三区观看方式| 欧美一区二区三区系列电影| 日韩精品一区二| 久久久精品天堂| 国产精品美女视频| 亚洲精品久久久蜜桃| 亚洲国产乱码最新视频| 日本亚洲欧美天堂免费| 精品一区二区三区免费毛片爱| 精品一二三四在线| 丁香亚洲综合激情啪啪综合| 91在线精品一区二区三区| 欧美亚洲日本国产| 91精品国产综合久久香蕉的特点 | 国产盗摄精品一区二区三区在线| 国产**成人网毛片九色 | 亚洲成人动漫在线观看| 视频在线在亚洲| 国产一区二区看久久| 99久久国产综合色|国产精品| 欧美性大战久久久| 精品国免费一区二区三区| 国产精品卡一卡二卡三| 午夜久久久影院| 国产一区二区美女诱惑| 91女厕偷拍女厕偷拍高清| 51精品久久久久久久蜜臀| 国产欧美一区二区精品性| 亚洲制服丝袜在线| 极品少妇一区二区三区精品视频 | 日韩美女一区二区三区四区| 亚洲国产精品t66y| 午夜精品久久久久影视| 国产成人丝袜美腿| 欧美午夜免费电影| 久久无码av三级| 亚洲国产精品一区二区www| 国产一区三区三区| 欧美日本国产视频| 国产精品欧美一区喷水| 男女男精品视频| 色激情天天射综合网| www成人在线观看| 亚洲成av人片www| av在线免费不卡| 亚洲精品在线三区| 亚洲影视在线观看| 成人永久aaa| 欧美电影免费观看高清完整版在线 | 国产精品一区二区视频| 欧美亚洲国产一卡| 国产欧美精品区一区二区三区| 午夜精品在线视频一区| heyzo一本久久综合| 精品免费视频.| 婷婷综合在线观看| 色偷偷88欧美精品久久久| 久久天天做天天爱综合色| 日韩av一级电影| 欧美三级在线播放| 亚洲欧美区自拍先锋| 国产伦精品一区二区三区在线观看| 欧美日韩不卡在线| 亚洲资源中文字幕| 97精品超碰一区二区三区| 国产日韩欧美亚洲| 久久精工是国产品牌吗| 91精品婷婷国产综合久久性色 | 国产精品视频麻豆| 国产综合久久久久影院| 欧美一区二区在线观看| 亚洲成人动漫一区| 欧美视频在线一区| 亚洲欧美日韩国产成人精品影院| 丁香桃色午夜亚洲一区二区三区| 日韩欧美一区二区不卡| 蜜桃久久精品一区二区| 日韩一区二区免费高清| 日韩—二三区免费观看av| 欧美群妇大交群中文字幕| 午夜视频一区二区三区| 欧美日韩亚洲综合| 亚洲3atv精品一区二区三区| 色综合久久88色综合天天6| 亚洲精品乱码久久久久久| 91激情在线视频| 亚洲午夜精品在线| 91精品一区二区三区在线观看| 日韩精品欧美成人高清一区二区| 欧美精品自拍偷拍动漫精品| 肉肉av福利一精品导航| 日韩一区二区视频在线观看| 久久爱www久久做| 国产欧美一区二区在线| 99久久精品国产精品久久| 日韩一区中文字幕| 欧美亚洲一区三区| 日韩vs国产vs欧美| 久久久影视传媒| 99久久婷婷国产| 午夜一区二区三区视频| 欧美一区二区三区爱爱| 国产一区二区伦理| 国产精品卡一卡二| 欧美色视频在线| 麻豆91在线观看| 中文字幕av一区 二区| 色悠悠亚洲一区二区| 日韩电影网1区2区| 国产午夜精品一区二区三区四区| 99久久伊人网影院| 天天影视涩香欲综合网| 久久精品夜色噜噜亚洲aⅴ| 亚洲国产裸拍裸体视频在线观看乱了 | 日本午夜精品视频在线观看| 欧美成人在线直播|