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

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

?? d12ci.c

?? USB接口芯片D12在STC單片機上的驅動開發
?? C
字號:
/*
   //*************************************************************************
   //
   //                  P H I L I P S   P R O P R I E T A R Y
   //
   //           COPYRIGHT (c)   1997 BY PHILIPS SINGAPORE.
   //                     --  ALL RIGHTS RESERVED  --
   //
   // File Name:	D12CI.C
   // Author:		Wenkai Du
   // Created:		8 Jun 98
   // Modified:
   // Revision:		2.2
   //
   //*************************************************************************
   //
   // 98/11/27      I/O mode Main endpoints read/write update (WK)
   // 98/12/2       Added D12_ReadMainEndpoint (WK)
   //*************************************************************************
   */

#include <reg51.h>                /* special function register declarations   */

#include "epphal.h"
#include "mainloop.h"
#include "d12ci.h"
#include "stdio.h"

//#define DEBUG

extern EPPFLAGS bEPPflags;

void D12_SetAddressEnable(unsigned char bAddress, unsigned char bEnable)
{
	if(bEPPflags.bits.in_isr == 0)
		DISABLE;

	outportb(D12_COMMAND, 0xD0);
	if(bEnable)
		bAddress |= 0x80;
	outportb(D12_DATA, bAddress);

	if(bEPPflags.bits.in_isr == 0)
		ENABLE;
}

void D12_SetEndpointEnable(unsigned char bEnable)
{
	if(bEPPflags.bits.in_isr == 0)
		DISABLE;

	outportb(D12_COMMAND, 0xD8);
	if(bEnable)
		outportb(D12_DATA, 1);
	else
		outportb(D12_DATA, 0);

	if(bEPPflags.bits.in_isr == 0)
		ENABLE;
}

void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv)
{
	if(bEPPflags.bits.in_isr == 0)
		DISABLE;

	outportb(D12_COMMAND, 0xF3);
	outportb(D12_DATA, bConfig);
	outportb(D12_DATA, bClkDiv);

	if(bEPPflags.bits.in_isr == 0)
		ENABLE;
}

void D12_SetDMA(unsigned char bMode)
{
	if(bEPPflags.bits.in_isr == 0)
		DISABLE;

	outportb(D12_COMMAND, 0xFB);
	outportb(D12_DATA, bMode);

	if(bEPPflags.bits.in_isr == 0)
		ENABLE;
}

unsigned short D12_ReadInterruptRegister(void)
{
	unsigned char b1;
	unsigned int j;

	outportb(D12_COMMAND, 0xF4);
	b1 = inportb(D12_DATA);
	j = inportb(D12_DATA);

	j <<= 8;
	j += b1;

	return b1;		//return j;
}

unsigned char D12_SelectEndpoint(unsigned char bEndp)
{
	unsigned char c;

	if(bEPPflags.bits.in_isr == 0)
		DISABLE;

	outportb(D12_COMMAND, bEndp);
	c = inportb(D12_DATA);

	if(bEPPflags.bits.in_isr == 0)
		ENABLE;

	return c;
}

unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
{
//#define mydebug
	outportb(D12_COMMAND, 0x40 + bEndp);
	return inportb(D12_DATA);
#ifdef mydebug
	printf("\toutput port is 0x%bx, val is 0x%bx.", D12_COMMAND, 0x40 + bEndp);
//	printf("\tinput data is 0x%bx.\n", inportb(D12_DATA));	
#endif
}

unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
{
	unsigned char c;

	if(bEPPflags.bits.in_isr == 0)
		DISABLE;

	outportb(D12_COMMAND, 0x80 + bEndp);
	c = inportb(D12_DATA);

	if(bEPPflags.bits.in_isr == 0)
		ENABLE;

	return c;
}

void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
{
	if(bEPPflags.bits.in_isr == 0)
		DISABLE;

	outportb(D12_COMMAND, 0x40 + bEndp);
	outportb(D12_DATA, bStalled);

	if(bEPPflags.bits.in_isr == 0)
		ENABLE;
}

void D12_SendResume(void)
{
	outportb(D12_COMMAND, 0xF6);
}

unsigned short D12_ReadCurrentFrameNumber(void)
{
	unsigned short i,j;

	if(bEPPflags.bits.in_isr == 0)
		DISABLE;

	outportb(D12_COMMAND, 0xF5);
	i= inportb(D12_DATA);
	j = inportb(D12_DATA);

	i += (j<<8);

	if(bEPPflags.bits.in_isr == 0)
		ENABLE;

	return i;
}

unsigned short D12_ReadChipID(void)
{
	unsigned short i,j;

	if(bEPPflags.bits.in_isr == 0)
		DISABLE;

	outportb(portbase+D12_COMMAND, 0xFD);
	i=inportb(portbase+D12_DATA);
	j=inportb(portbase+D12_DATA);
	i += (j<<8);

	if(bEPPflags.bits.in_isr == 0)
		ENABLE;

	return i;
}

unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char * buf, unsigned char len)
{
	unsigned char i, j;

	if(bEPPflags.bits.in_isr == 0)
		DISABLE;

	outportb(D12_COMMAND, endp);
	if((inportb(D12_DATA) & D12_FULLEMPTY) == 0) {
		if(bEPPflags.bits.in_isr == 0)
			ENABLE;
		return 0;
	}

	outportb(D12_COMMAND, 0xF0);
	j = inportb(D12_DATA);
	j = inportb(D12_DATA);

	if(j > len)
		j = len;

	for(i=0; i<j; i++)
		*(buf+i) = inportb(D12_DATA);

	outportb(D12_COMMAND, 0xF2);

	if(bEPPflags.bits.in_isr == 0)
		ENABLE;

	return j;
}

// D12_ReadMainEndpoint() added by V2.2 to support double-buffering.
// Caller should assume maxium 128 bytes of returned data.
unsigned char D12_ReadMainEndpoint(unsigned char * buf)
{
	unsigned char i, j, k = 0, bDblBuf = 1;

	if(bEPPflags.bits.in_isr == 0)
		DISABLE;

	outportb(D12_COMMAND, 0x84);
	if( (inportb(D12_DATA) & 0x60) == 0x60)
		bDblBuf = 2;

	while(bDblBuf) {
		outportb(D12_COMMAND, 4);
		if((inportb(D12_DATA) & D12_FULLEMPTY) == 0)
			break;

		outportb(D12_COMMAND, 0xF0);
		j = inportb(D12_DATA);
		j = inportb(D12_DATA);

		for(i=0; i<j; i++)
			*(buf+i+k) = inportb(D12_DATA);

		k += j;

		outportb(D12_COMMAND, 0xF2);

		bDblBuf --;
	}

	if(bEPPflags.bits.in_isr == 0)
		ENABLE;

	return k;
}

unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char * buf, unsigned char len)
{
	unsigned char idata i;

	if(bEPPflags.bits.in_isr == 0)
		DISABLE;

	outportb(D12_COMMAND, endp);
	inportb(D12_DATA);

	outportb(D12_COMMAND, 0xF0);
	outportb(D12_DATA, 0);
	outportb(D12_DATA, len);


	for(i=0; i<len; i++)
	{
		outportb(D12_DATA, *(buf+i));
	}
	outportb(D12_COMMAND, 0xFA);

	if(bEPPflags.bits.in_isr == 0)
		ENABLE;

	return len;
}

void D12_AcknowledgeEndpoint(unsigned char endp)
{
	outportb(D12_COMMAND, endp);
	outportb(D12_COMMAND, 0xF1);
	if(endp == 0)
		outportb(D12_COMMAND, 0xF2);
}

#ifndef __C51__
unsigned char D12Eval_inportb(void)
{
	return inportb(D12_EVAL_PORT_I);
}

void D12Eval_outportb(unsigned char val, unsigned char mask)
{
	static unsigned char last_val = 0;

	val = (val & mask) | (last_val & (~mask));
	outportb(D12_EVAL_PORT_O, val);
	last_val = val;
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕乱码日本亚洲一区二区| 欧美吻胸吃奶大尺度电影 | 久久精品久久精品| 91精品在线免费| 日本不卡在线视频| 精品日本一线二线三线不卡| 久久电影网站中文字幕| 久久综合九色综合欧美就去吻| 黑人巨大精品欧美一区| 欧美激情一区二区三区蜜桃视频 | 国产欧美一区二区精品性色| 国产高清无密码一区二区三区| 日本一区二区成人| 91久久精品一区二区| 午夜欧美视频在线观看| 日韩三级视频中文字幕| 国产精品一区专区| 综合激情成人伊人| 在线不卡欧美精品一区二区三区| 日韩精品国产欧美| 国产日韩精品久久久| 色狠狠色狠狠综合| 裸体在线国模精品偷拍| 国产精品视频一二三| 精品视频一区二区不卡| 精品在线视频一区| 亚洲三级免费观看| 日韩三级av在线播放| 99在线精品观看| 日韩专区一卡二卡| 国产精品国产三级国产三级人妇| 欧美色网站导航| 国产精品一区专区| 亚洲精品综合在线| 日韩一二三区不卡| 97久久精品人人做人人爽| 奇米色777欧美一区二区| 中文字幕在线观看一区| 日韩丝袜美女视频| 日本二三区不卡| 国产美女精品一区二区三区| 夜夜操天天操亚洲| 亚洲国产精品精华液ab| 欧美一区二区网站| 在线视频一区二区三区| 国产伦精品一区二区三区在线观看| 国产精品九色蝌蚪自拍| 亚洲精品一区二区三区99| 色老综合老女人久久久| 国产成人免费视频网站| 日韩电影网1区2区| 夜夜嗨av一区二区三区| 国产精品传媒在线| 久久久久99精品国产片| 欧美年轻男男videosbes| 91在线小视频| 国产精品91一区二区| 麻豆精品视频在线| 天天影视网天天综合色在线播放| 亚洲欧美日韩国产手机在线 | 久久久99精品久久| 91精品国产91综合久久蜜臀| 色婷婷精品久久二区二区蜜臀av | 欧美日韩国产精品自在自线| av中文字幕亚洲| 国产精选一区二区三区| 美腿丝袜亚洲综合| 日韩av成人高清| 亚洲国产综合视频在线观看| 亚洲色图清纯唯美| 中文字幕亚洲电影| 一色屋精品亚洲香蕉网站| 久久精品人人爽人人爽| 久久综合成人精品亚洲另类欧美| 欧美一区二视频| 日韩欧美国产一二三区| 日韩欧美中文字幕制服| 欧美一级一级性生活免费录像| 欧美顶级少妇做爰| 51精品视频一区二区三区| 91麻豆精品国产91久久久久| 欧美日本不卡视频| 欧美一区2区视频在线观看| 欧美一级久久久久久久大片| 678五月天丁香亚洲综合网| 在线成人av网站| 精品国产一区二区在线观看| 精品国产免费一区二区三区四区 | 在线观看日韩av先锋影音电影院| 色欧美乱欧美15图片| 在线观看免费视频综合| 欧美日韩国产综合草草| 欧美一区二区三区性视频| 91精品久久久久久久99蜜桃| 欧美第一区第二区| 久久久91精品国产一区二区精品| 国产日韩欧美激情| 一区二区三区在线不卡| 亚洲成人av中文| 免费av网站大全久久| 国产精品538一区二区在线| 成人av在线观| 欧美三级日韩三级国产三级| 日韩一区二区三区免费看| 久久久亚洲欧洲日产国码αv| 天天做天天摸天天爽国产一区| 视频在线观看一区二区三区| 久久综合综合久久综合| 成人免费va视频| 欧美午夜电影在线播放| 欧美va亚洲va香蕉在线| 中文字幕精品一区二区三区精品| 一区二区三区在线看| 美腿丝袜在线亚洲一区| 99久久伊人久久99| 538prom精品视频线放| 中文字幕不卡在线| 亚洲丰满少妇videoshd| 国产精品亚洲人在线观看| 99re这里只有精品首页| 日韩一区二区三| 中文字幕亚洲一区二区va在线| 亚洲国产成人精品视频| 国产成人av电影在线播放| 欧美亚一区二区| 久久精品欧美一区二区三区不卡| 亚洲精品v日韩精品| 狂野欧美性猛交blacked| 91免费看`日韩一区二区| 欧美成人福利视频| 一区二区三国产精华液| 国产成人综合视频| 7777精品伊人久久久大香线蕉超级流畅 | 卡一卡二国产精品| 日本福利一区二区| 中文字幕欧美三区| 久久99精品久久久久久动态图| 色94色欧美sute亚洲线路一ni | xfplay精品久久| 亚洲丰满少妇videoshd| 91亚洲午夜精品久久久久久| 精品美女被调教视频大全网站| 亚洲一区二区三区四区不卡| 韩国在线一区二区| 91精品国产品国语在线不卡| 亚洲精品菠萝久久久久久久| 国产成人精品一区二区三区四区 | 69久久夜色精品国产69蝌蚪网| 中文字幕一区二区在线观看| 美女精品一区二区| 欧美精品九九99久久| 又紧又大又爽精品一区二区| 国产不卡视频一区| 久久久精品免费网站| 伦理电影国产精品| 欧美日韩国产一区| 亚洲国产美女搞黄色| 色噜噜狠狠成人网p站| 亚洲欧洲美洲综合色网| 成人免费电影视频| 国产精品午夜电影| 成人高清伦理免费影院在线观看| 欧美精品一区二区蜜臀亚洲| 另类调教123区| 日韩欧美在线网站| 美美哒免费高清在线观看视频一区二区 | 91黄色免费网站| 亚洲欧美色图小说| 色婷婷久久99综合精品jk白丝| 国产精品久久久久久久久久免费看| 国产精品主播直播| 欧美激情艳妇裸体舞| 国产ts人妖一区二区| 国产精品乱码妇女bbbb| 国产激情精品久久久第一区二区 | 成人综合在线网站| 国产精品视频免费看| 99久久99久久免费精品蜜臀| 亚洲欧美日韩久久精品| 色婷婷综合在线| 午夜婷婷国产麻豆精品| 91精品国产综合久久精品图片| 青青草国产成人99久久| 精品日韩在线观看| 国产精品18久久久久久久久| 欧美国产在线观看| 色综合久久66| 午夜精品久久久久| xnxx国产精品| 成人av网站在线观看| 一区二区免费在线播放| 在线播放视频一区| 国产精品系列在线播放| 亚洲天堂精品在线观看| 欧美三级电影在线看| 精品一区二区久久久| 中文字幕在线观看一区| 欧美放荡的少妇| 春色校园综合激情亚洲| 一区二区在线观看不卡|