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

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

?? kmain.c

?? 飛利浦D12的AT89C52固件
?? C
字號:
#include <stdio.h>
#include <string.h>

#include <At89x52.h>

#include "khal.h"
#include "kmain.h"
#include "kd12ci.h"
#include "kchap9.h"
#include "kprotodma.h"
//=====================================

/*
//*************************************************************************
// USB protocol function pointer arrays
//*************************************************************************
*/
code void (*StandardDeviceRequest[])(void) =
{
	get_status,
	clear_feature,
	reserved,
	set_feature,
	reserved,
	set_address,
	get_descriptor,
	reserved,
	get_configuration,
	set_configuration,
	get_interface,
	set_interface,
	reserved,
	reserved,
	reserved,
	reserved
};

code void (*VendorDeviceRequest[])(void) =
{
	reserved,
	reserved,
	reserved,
	reserved,
	reserved,
	reserved,
	reserved,
	reserved,
	reserved,
	reserved,
	reserved,
	reserved,
	read_write_register,
	reserved,
	reserved,
	reserved
};



/*
//*************************************************************************
//  Public static data
//*************************************************************************
*/
extern EPPFLAGS bEPPflags;
extern unsigned long ClockTicks;

extern unsigned char idata GenEpBuf[];
extern IO_REQUEST idata ioRequest;

extern unsigned char ioSize, ioCount;
extern unsigned char xdata MainEpBuf[];
extern unsigned char idata EpBuf[];
//------------
extern void fn_usb_isr(void);
//-----------

CONTROL_XFER ControlData;
unsigned char bNoRAM;


//==================================================
/*
  PCON:		SMOD | - | - | - | GF1|GF0|PD |IDL|
  TCON:		TF1  | - |TF0| - |IE1 |IT1|IE0|IT0|
    
*/
/* Configure Timer 0
   - Mode                  = 1
   - Interrupt                   = ENABLED
   - Clock Source                = INTERNAL
   - Enable Gating Control    = DISABLED
*/


void init_timer0(void)
{
	TMOD &= 0XF0;                /* clear Timer 0   */
	TMOD  |= 0X1;
	TL0 = 0X0;                   /* value set by user    */
	TH0 = 0X0;                   /* value set by user  */
	ET0 = 1;     		     /* IE.1*/
	TR0 = 1;                     /* TCON.4 start timer  */
	PT0 = 1;

	//EA = 1;
}


void init_port()
{
	P0 = 0xFF;
	P1 = 0xFF;
	P2 = 0xFF;
	P3 = 0xFF;
	MCU_D12CS = 0x0;	//D12 Select
	D12SUSPD = 0;		//D12 not in Suspend
}

/*Serial Port */
/*Mode            = 1  /8-bit UART
  Serial Port Interrupt    = Disabled         */
/*Receive         = Enabled   */
/*Auto Addressing    = Disabled   */
void init_serial(void)
{
	SCON = 0X52;		/* SCON: SM0|SM1|SM2|REN|TB8|RB8|TI|RI		*/
	PCON = 0X80 | PCON;	/* PCON: SMOD | - | - | - | GF1|GF0|PD |IDL|    */
	TMOD = 0X20;		/* TMOD: GATE|C/T|M1|M0|GATE|C/T|M1|M0 */
	TCON = 0x69;    	/* TCON: TF1|TR1|TF0|TR0|IE1|IT1|IE0|IT0 */
	TH1 = 0xF3;		/*TH1=0xF3: */
}
//----------------------------
/*
void help_devreq(unsigned char typ, unsigned char req)
{
	typ >>= 5;

	if(typ == USB_STANDARD_REQUEST) {
	}
	else {
		if(bEPPflags.bits.verbose)
			printf("Request Type = %s, bRequest = 0x%bx.\n", _NAME_USB_REQUEST_TYPE[typ],
				req);
	}
}
*/

//=================================================================
void disconnect_USB(void)
{
	// Initialize D12 configuration
	D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_12M);
}

void connect_USB(void)
{
	// reset event flags

	DISABLE;
	bEPPflags.value = 0;
	ENABLE;

	// V2.1 enable normal+sof interrupt
	D12_SetDMA(D12_ENDP4INTENABLE | D12_ENDP5INTENABLE);

	// Initialize D12 configuration

	//D12_SetMode(D12_NOLAZYCLOCK ,D12_SETTOONE | D12_CLOCK_12M );
	D12_SetMode(D12_NOLAZYCLOCK | D12_SOFTCONNECT,D12_SETTOONE | D12_CLOCK_12M );

}


void reconnect_USB(void)
{
	unsigned long clk_cnt;

	MCU_LED0 = 0;
	MCU_LED1 = 0;

	// Pull-down D12's SUSPEND pin
	// Disable 74HCT123 pulse generation before disconnect
	// Release D12's SUSPEND pin after receiving bus reset from host
	D12SUSPD = 0;
	disconnect_USB();

	//printf("Wait for 1 second ...\n");

	clk_cnt = ClockTicks;
	while(ClockTicks < clk_cnt + 20)
		;

	connect_USB();

	MCU_LED0 = 1;
	MCU_LED1 = 1;

}
//------------------------------
void stall_ep0(void)
{
	D12_SetEndpointStatus(0, 1);
	D12_SetEndpointStatus(1, 1);
}

//---------------
void on_exit(void)
{
 
}
//----------------------------------
void check_key_LED(void)
{
	static unsigned char c, last_key = 0xf;

	c = MCU_SWM0 & MCU_SWM1;
	c &= 0x0f;
	if (c != last_key) {
		D12_WriteEndpoint(3, 1, &c);
	}

	last_key = c;

	if(bEPPflags.bits.ep1_rxdone) {
		DISABLE;
		bEPPflags.bits.ep1_rxdone = 0;
		ENABLE;
		MCU_LED0 = !(GenEpBuf[3] & 0x1);
		MCU_LED1 = !(GenEpBuf[3] & 0x2);
	}
}
//--------------------------
void init_unconfig(void)
{
	//unsigned char i;

	D12_SetEndpointEnable(0);	/* Disable all endpoints but EPP0. */
}

void init_config(void)
{
	D12_SetEndpointEnable(1);	/* Enable  generic/iso endpoints. */
}
//--------------------------

void single_transmit(unsigned char * buf, unsigned char len)
{
	if( len <= EP0_PACKET_SIZE) {
		D12_WriteEndpoint(1, len, buf);
	}
}

void code_transmit(unsigned char code * pRomData, unsigned short len)
{
	ControlData.wCount = 0;
	if(ControlData.wLength > len)
		ControlData.wLength = len;

	ControlData.pData = pRomData;
	if( ControlData.wLength >= EP0_PACKET_SIZE) {	// 如果發送代碼大于包長度
		D12_WriteEndpoint(1, EP0_PACKET_SIZE, ControlData.pData);
		ControlData.wCount += EP0_PACKET_SIZE;

		DISABLE;
		bEPPflags.bits.control_state = USB_TRANSMIT;
		ENABLE;
	}
	else {						//發送代碼小于包長度
		D12_WriteEndpoint(1, ControlData.wLength, pRomData);
		ControlData.wCount += ControlData.wLength;
		DISABLE;
		bEPPflags.bits.control_state = USB_IDLE;
		ENABLE;
	}
}

//---------------------------
void setup_dma()
{
	ioSize = ioRequest.uSize;
	ioCount = 0;

	DISABLE;
	bEPPflags.bits.dma_state = DMA_RUNNING;
	ENABLE;

	single_transmit(0, 0);

	if(ioRequest.bCommand & 0x1) {
		if(ioSize > 64 || ioSize == 0) {
			//if(bNoRAM)
				D12_WriteEndpoint(5, 64, EpBuf);
			//else
			//	D12_WriteEndpoint(5, 64, MainEpBuf);
			ioCount += 64;
		}
		else {
			//if(bNoRAM)
				D12_WriteEndpoint(5, ioSize, EpBuf);
			//else
			//	D12_WriteEndpoint(5, ioSize, MainEpBuf);
			ioCount += ioSize;
		}
	}
}

//------------------------------
void control_handler()
{
	unsigned char type, req;
	
	type = ControlData.DeviceRequest.bmRequestType & USB_REQUEST_TYPE_MASK;	//0x60
	req = ControlData.DeviceRequest.bRequest & USB_REQUEST_MASK;		//0x0F

	//help_devreq(type, req); // print out device request

	if (type == USB_STANDARD_REQUEST)
		(*StandardDeviceRequest[req])();
	else if (type == USB_VENDOR_REQUEST)
		(*VendorDeviceRequest[req])();
	else
		stall_ep0();
	
}


//-------------------------------------------

//-----------xugy------begin-------------

//-----------xugy------end---------------


//-------------------------------------------

void main()
{
//	unsigned char key, i;
	//bNoRam=1;
	
	init_port();
	init_serial();
	init_timer0(); 
	EA = 1; 
	//for test
	MCU_LED0=0;
	MCU_LED1=0;
	MCU_LED0=1;
	MCU_LED1=1;
	//--------------
	printf("Re-connect PDIUSBD12 evaluation board to USB.\n");
	IE0=0;
	IT0=0;
	EX0=1;
	//--------------------------
//	MCU_D12RST = 0;
//	MCU_D12RST = 1;
	//--------------------
	
	MCU_D12CS = 0x1;

		bNoRAM = TRUE;

	MCU_D12CS = 0x0;

		reconnect_USB();

	while( TRUE ){
	   SBUF= 0xAA;
		if (bEPPflags.bits.timer){
			DISABLE;
			bEPPflags.bits.timer = 0;
			ENABLE;

			if(bEPPflags.bits.configuration)
				check_key_LED();
		}

		if (bEPPflags.bits.bus_reset) {
			DISABLE;
			bEPPflags.bits.bus_reset = 0;
			ENABLE;
			// Release D12's SUSPEND pin after bus reset
			// Enable 74HCT123 pulse generation before disconnect
			///D12SUSPD = 1;
			D12SUSPD=0;
		} // if bus reset

		if (bEPPflags.bits.suspend) {
			DISABLE;
			bEPPflags.bits.suspend= 0;
			ENABLE;

			if(D12SUSPD == 1) {
				D12SUSPD = 0;
				P0 = 0xFF;
				P1 = 0xFF;
				P2 = 0xFF;
				P3 = 0xFF;
				D12_SetDMA(0xC3);
				D12SUSPD = 1;
				PCON |= 0x02;
				while (1);
		
			}
		
		} // if suspend change

		if (bEPPflags.bits.setup_packet){
			DISABLE;
			bEPPflags.bits.setup_packet = 0;
			ENABLE;
			control_handler();
			//D12SUSPD = 1;
			D12SUSPD=0;
		} // if setup_packet
		
		if(bEPPflags.bits.setup_dma != 0) {
			DISABLE;
			bEPPflags.bits.setup_dma --;
			ENABLE;
			setup_dma();
		} // if setup_dma
		
	} // Main Loop

    on_exit();
	//=======================================	
 
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美国欧美日韩国产在线播放| 一区二区在线观看不卡| 精品福利在线导航| 亚洲日本丝袜连裤袜办公室| 男男gaygay亚洲| 91一区二区三区在线播放| 777久久久精品| 亚洲欧美经典视频| 久久99最新地址| 欧美主播一区二区三区美女| 欧美激情一区三区| 免费观看在线综合色| 91九色最新地址| 国产无一区二区| 麻豆久久一区二区| 欧美性做爰猛烈叫床潮| 国产精品美女久久久久久久久 | 7777精品伊人久久久大香线蕉 | 色综合久久88色综合天天免费| 91麻豆精品国产91久久久 | 欧美国产日韩在线观看| 全部av―极品视觉盛宴亚洲| 欧洲另类一二三四区| 中文字幕欧美日韩一区| 国内精品伊人久久久久影院对白| 91精品啪在线观看国产60岁| 亚洲无人区一区| 欧美在线免费播放| 亚洲免费在线视频| 色视频成人在线观看免| 亚洲欧美乱综合| 97精品电影院| 亚洲欧美日韩电影| 在线观看亚洲成人| 亚洲摸摸操操av| 欧美影片第一页| 亚洲电影第三页| 欧美久久久影院| 日韩av一二三| 欧美成人女星排行榜| 韩国中文字幕2020精品| 26uuu色噜噜精品一区二区| 日韩和的一区二区| 日韩一区二区三区在线视频| 久久不见久久见免费视频1| 精品少妇一区二区三区日产乱码| 久久99热99| 欧美激情在线一区二区| 99精品视频在线免费观看| 一区二区三区欧美亚洲| 欧美日韩国产综合一区二区| 首页欧美精品中文字幕| 精品成人在线观看| 99re视频这里只有精品| 亚洲国产毛片aaaaa无费看| 日韩亚洲电影在线| 国产白丝网站精品污在线入口| 国产精品不卡在线| 欧美色图一区二区三区| 久久91精品久久久久久秒播| 亚洲国产成人在线| 欧美视频在线观看一区二区| 精品制服美女丁香| 国产精品美女久久久久久久网站| 日本高清不卡一区| 麻豆精品国产91久久久久久| 国产精品色哟哟| 欧美老肥妇做.爰bbww视频| 精品在线一区二区| 中文字幕中文乱码欧美一区二区 | 欧美日韩精品综合在线| 麻豆成人久久精品二区三区小说| 久久久精品蜜桃| 91久久精品一区二区二区| 久久99精品久久久久久国产越南 | 4hu四虎永久在线影院成人| 精品一二线国产| 一区二区三区不卡视频| 久久久久久久久久久久电影 | 成人福利视频网站| 日韩高清中文字幕一区| 国产精品激情偷乱一区二区∴| 欧美主播一区二区三区美女| 国产大陆精品国产| 午夜欧美2019年伦理| 中文字幕精品三区| 日韩美一区二区三区| 91女神在线视频| 激情国产一区二区| 亚洲午夜av在线| 亚洲精品日韩专区silk| 久久久久久电影| 日韩美女一区二区三区| 欧美日韩美女一区二区| 波多野结衣在线一区| 精品一区二区在线看| 亚洲成人av电影| 尤物视频一区二区| 国产精品看片你懂得| 久久久噜噜噜久久人人看| 日韩视频在线观看一区二区| 欧美日韩国产小视频| 91美女片黄在线| proumb性欧美在线观看| 成人午夜在线播放| 国产成人精品免费| 国产风韵犹存在线视精品| 久草在线在线精品观看| 日本91福利区| 蜜臀av性久久久久蜜臀av麻豆| 亚洲国产cao| 亚洲成人自拍偷拍| 亚洲成人久久影院| 一区二区日韩电影| 亚洲国产人成综合网站| 亚洲福利一二三区| 午夜激情久久久| 日韩中文字幕不卡| 麻豆91精品视频| 精品亚洲国产成人av制服丝袜| 久久精品国产久精国产爱| 久久精品国内一区二区三区| 精品一区二区三区日韩| 国产激情一区二区三区桃花岛亚洲| 精品一区二区三区免费毛片爱| 国产精品亚洲午夜一区二区三区| 国产精品一区2区| 盗摄精品av一区二区三区| 成人福利视频在线看| 日本乱人伦一区| 91精品国产色综合久久| 精品久久久网站| 国产精品午夜在线观看| 亚洲欧美日韩久久| 日本91福利区| 岛国精品一区二区| 日本精品一区二区三区高清| 4438x亚洲最大成人网| 亚洲精品一区二区三区福利| 国产精品美女久久久久久| 亚洲国产精品一区二区久久| 男女激情视频一区| 99久久精品国产观看| 欧美日韩专区在线| 久久先锋资源网| 亚洲精品免费在线观看| 日本不卡的三区四区五区| 国产毛片精品国产一区二区三区| www.成人网.com| 337p亚洲精品色噜噜噜| 中文字幕精品—区二区四季| 亚洲国产日日夜夜| 粉嫩一区二区三区在线看| 欧美日韩国产综合久久| 欧美精品一区二区三区蜜臀| 亚洲精品中文在线影院| 久久99九九99精品| 国产精品高潮呻吟久久| 欧美一区二区视频网站| 亚洲国产精品成人综合色在线婷婷 | 日韩精品专区在线影院观看| 国产精品色哟哟网站| 日本三级亚洲精品| 99麻豆久久久国产精品免费 | 欧美日韩国产综合视频在线观看| 国产欧美精品国产国产专区| 五月天久久比比资源色| 不卡的av电影在线观看| 精品免费国产二区三区 | 国产精品美日韩| 久久国产精品99久久久久久老狼 | 91免费在线视频观看| 久久无码av三级| 日韩精品一级中文字幕精品视频免费观看| 国产一区二区三区黄视频| 欧美美女激情18p| 亚洲码国产岛国毛片在线| 国产成人高清在线| 精品国产青草久久久久福利| 午夜精品久久久久久久| 91免费观看在线| 中文字幕日韩一区| 国产福利一区在线| 精品国产伦一区二区三区免费| 五月天网站亚洲| 欧美人妖巨大在线| 亚洲综合自拍偷拍| 色呦呦一区二区三区| 国产精品妹子av| 国产高清一区日本| 国产日韩精品一区| 国产精品白丝av| 久久午夜国产精品| 国产一区二区三区国产| 国产亚洲视频系列| 国产福利不卡视频| 亚洲国产精品黑人久久久| 成人午夜视频在线观看| 亚洲欧美在线高清| 99精品国产91久久久久久|