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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? uart._c

?? CS5532的驅(qū)動(dòng)程序
?? _C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
					//Set the polling address to a byte address
					//so that we can poll the right location
					polling_address = (address&0xFFFF)*2;
					if(i&1) polling_address++;
				}
				
				//increment (word) address only when we have an uneven (byte) address
				if(i&1) address++;
			}
			//If this page is complete the bit 7 of mode will be set and we programm the page
			if(mode&0x80)  //頁(yè)編程,并且選擇等待的方式
			{
				SPIWrite(msg_buffer[6]);	
				SPIWrite16(start_address);
				SPIWrite(0x00);
				//If we have no valid polling address switch to simple wait mode
				if(polling_address==0)
				{
					mode = (mode&(~0x70)) | 0x10;
				}
				//Different polling methods
				//Hard waiting
				if((mode&0x70) == 0x10)
				{
					msDelay(msg_buffer[4]);
				}
				//Data polling
				else if((mode&0x70) == 0x20)
				{
					do{
						//If we have an uneven byte read the
						//high byte			
						if(polling_address%2)
						{
							SPIWrite(msg_buffer[7]|(1<<3));
						}
						else
						{
							SPIWrite(msg_buffer[7]);
						}
						SPIWrite16(polling_address/2);
						tmp=SPIWrite(0x00);
					}while(tmp==msg_buffer[8]);
				}
				//RDY/BSY polling
				else if((mode&0x70) == 0x40)
				{
					while(universalComm(0xF0,0x00,0x00,0x00)&1);
				}
				//If something was not correct with the given mode do
				//hard waiting. Should never reach this point
				else
				{
					msDelay(msg_buffer[4]);					
				}
			}
		}
		num_bytes = 2;
		msg_buffer[0] = CMD_PROGRAM_FLASH_ISP;
	}
	//命令CMD_READ_FLASH_ISP
	else if(cmd==CMD_READ_FLASH_ISP)
	{
		LED_FLASH2;	
		block_size = ((unsigned int)msg_buffer[1])<<8;
		block_size |= msg_buffer[2];
		tmp = msg_buffer[3];
		
		for(i=0;i<block_size;i++)
		{
			//Select Low or High-Byte
			if(i&1)
			{
				SPIWrite(tmp|(1<<3));
			}
			else
			{
				SPIWrite(tmp);
			}
			
			SPIWrite16(address&0xFFFF);
			msg_buffer[i+2] = SPIWrite(0);
			//increment (word) address only when we have an uneven (byte) address
			if(i&1) address++;
		}
		
		num_bytes = block_size+3;
		msg_buffer[0] = CMD_READ_FLASH_ISP;
		msg_buffer[1] = STATUS_CMD_OK;
		msg_buffer[block_size+2] = STATUS_CMD_OK;
	}
	//命令CMD_PROGRAM_EEPROM_ISP
	else if(cmd==CMD_PROGRAM_EEPROM_ISP)
	{
		block_size = ((unsigned int)msg_buffer[1])<<8;
		block_size |= msg_buffer[2];
		mode = msg_buffer[3];
		
		//Byte Mode
		if((mode&1) == 0)
		{		
			for(i=0;i<block_size;i++)
			{	
				LED_FLASH2;	
				SPIWrite(msg_buffer[5]);								
				SPIWrite16(address&0xFFFF);
				SPIWrite(msg_buffer[i+10]);
				
				//Check if we can do polling
				if((msg_buffer[i+10]!=msg_buffer[8])&&(msg_buffer[i+10]!=msg_buffer[9]))
				{
					polling_address = address&0xFFFF;
				}
				//If not switch the mode hard waiting
				else
				{
					mode = (mode&(~0x0E)) | 0x02;
				}
				
				//Different polling methods
				//Hard waiting
				if((mode&0x0E) == 0x02)
				{
					msDelay(msg_buffer[4]);
				}
				//Data polling
				else if((mode&0x0E) == 0x04)
				{
					do{
						SPIWrite(msg_buffer[7]);
						SPIWrite16(polling_address);
						tmp=SPIWrite(0x00);
					}while((tmp==msg_buffer[8])||(tmp==msg_buffer[9]));
				}
				//RDY/BSY polling
				else if((mode&0x0E) == 0x08)
				{
					while(universalComm(0xF0,0x00,0x00,0x00)&1);
					//while(spi_transfer_32(0xF0000000)&1);
				}
				//If something was not correct with the given mode do
				//hard waiting. Should never reach this point
				else
				{
					msDelay(msg_buffer[4]);					
				}
				
				//increment address
				address++;
			}			
		}
		//Page Mode
		else
		{
			
			for(i=0;i<block_size;i++)
			{
				LED_FLASH2;
				SPIWrite(msg_buffer[5]);
				SPIWrite16(address&0xFFFF);
				SPIWrite(msg_buffer[i+10]);
				//Check if we can do polling
				if((msg_buffer[i+10]!=msg_buffer[8])&&(msg_buffer[i+10]!=msg_buffer[9]))
				{
					polling_address = address&0xFFFF;
				}
				
				//increment (word) address only when we have an uneven (byte) address
				address++;
			}
			
			//If this page is complete the bit 7 of mode will be set and we programm the page
			if(mode&0x80)
			{
				SPIWrite(msg_buffer[6]);						
				SPIWrite16(start_address&0xFFFF);
				SPIWrite(0);
				
				//If we have no valid polling address switch to simple wait mode
				if(polling_address==0)
				{
					mode = (mode&(~0x70)) | 0x10;
				}
				
				//Different polling methods
				//Hard waiting
				if((mode&0x70) == 0x10)
				{
					msDelay(msg_buffer[4]);
				}
				//Data polling
				else if((mode&0x70) == 0x20)
				{
					do{
						//If we have an uneven byte read the
						//high byte			
						if(i&1)
						{
							SPIWrite(msg_buffer[7]|(1<<3));
						}
						else
						{
							SPIWrite(msg_buffer[7]);
						}
						SPIWrite16(polling_address);
						tmp=SPIWrite(0x00);
					}while(tmp==msg_buffer[8]);
				}
				//RDY/BSY polling
				else if((mode&0x70) == 0x40)
				{
					while(universalComm(0xF0,0x00,0x00,0x00)&1);
				}
				//If something was not correct with the given mode do
				//hard waiting. Should never reach this point
				else
				{
					msDelay(msg_buffer[4]);					
				}
			}
		}
		
		num_bytes = 2;
		msg_buffer[0] = CMD_PROGRAM_EEPROM_ISP;
		msg_buffer[1] = STATUS_CMD_OK;
	}
	//命令CMD_READ_EEPROM_ISP
	else if(cmd==CMD_READ_EEPROM_ISP)
	{
		block_size = ((unsigned int)msg_buffer[1])<<8;
		block_size |= msg_buffer[2];
		tmp = msg_buffer[3];
		
		for(i=0;i<block_size;i++)
		{
			//Select Low or High-Byte
			SPIWrite(tmp);
			SPIWrite16(address&0xFFFF);
			msg_buffer[i+2] = SPIWrite(0);
			//increment address
			address++;
		}
		num_bytes = block_size+3;
		msg_buffer[0] = CMD_READ_EEPROM_ISP;
		msg_buffer[1] = STATUS_CMD_OK;
		msg_buffer[block_size+2] = STATUS_CMD_OK;
	}
	
	//命令CMD_PROGRAM_FUSE_ISP
	else if(cmd==CMD_PROGRAM_FUSE_ISP)
	{
		universalComm(msg_buffer[1],msg_buffer[2],msg_buffer[3],msg_buffer[4]);
		num_bytes = 3;
		msg_buffer[0] = CMD_PROGRAM_FUSE_ISP;
		msg_buffer[1] = STATUS_CMD_OK;		
		msg_buffer[2] = STATUS_CMD_OK;
	}

	//命令CMD_READ_FUSE_ISP
	else if(cmd==CMD_READ_FUSE_ISP)
	{	
		tmp = SPIWrite(msg_buffer[2]);
		if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[3]);
		if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[4]);
		if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[5]);
		if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
		num_bytes = 4;
		msg_buffer[0] = CMD_READ_FUSE_ISP;
		msg_buffer[1] = STATUS_CMD_OK;		
		msg_buffer[3] = STATUS_CMD_OK;
	}
	
	//命令CMD_PROGRAM_LOCK_ISP
	else if(cmd==CMD_PROGRAM_LOCK_ISP)
	{
		universalComm(msg_buffer[1],msg_buffer[2],msg_buffer[3],msg_buffer[4]);
		
		num_bytes = 3;
		msg_buffer[0] = CMD_PROGRAM_LOCK_ISP;
		msg_buffer[1] = STATUS_CMD_OK;		
		msg_buffer[2] = STATUS_CMD_OK;
	}
	//命令CMD_READ_LOCK_ISP
	else if(cmd==CMD_READ_LOCK_ISP)
	{
		tmp = SPIWrite(msg_buffer[2]);
		if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[3]);
		if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[4]);
		if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[5]);
		if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
		num_bytes = 4;
		msg_buffer[0] = CMD_READ_LOCK_ISP;
		msg_buffer[1] = STATUS_CMD_OK;		
		msg_buffer[3] = STATUS_CMD_OK;
	}
	
	//命令CMD_READ_SIGNATURE_ISP
	else if(cmd==CMD_READ_SIGNATURE_ISP)
	{
		tmp = SPIWrite(msg_buffer[2]);
		if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[3]);
		if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[4]);
		if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[5]);
		if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
		num_bytes = 4;
		msg_buffer[0] = CMD_READ_SIGNATURE_ISP;
		msg_buffer[1] = STATUS_CMD_OK;		
		msg_buffer[3] = STATUS_CMD_OK;
	}
	
	//命令CMD_READ_OSCCAL_ISP
	else if(cmd==CMD_READ_OSCCAL_ISP)
	{
		tmp = SPIWrite(msg_buffer[2]);
		if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[3]);
		if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[4]);
		if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[5]);
		if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
		num_bytes = 4;
		msg_buffer[0] = CMD_READ_OSCCAL_ISP;
		msg_buffer[1] = STATUS_CMD_OK;		
		msg_buffer[3] = STATUS_CMD_OK;
	}
	else
	{
		num_bytes = 1;
		msg_buffer[0] = STATUS_CMD_UNKNOWN;
	}
	//傳送緩沖區(qū)數(shù)據(jù)
	if(num_bytes>0)
	{		
		putChar(MESSAGE_START);
		checkSum=MESSAGE_START;
		putChar(seqNum);
		checkSum^=seqNum;
		tmp=(num_bytes&0xFF00)>>8;
		putChar(tmp);
		checkSum^=tmp;
		tmp=num_bytes&0x00FF;
		putChar(tmp);
		checkSum^=tmp;
		putChar(TOKEN);
		checkSum^=TOKEN;
		for(i=0;i<num_bytes;i++)
		{
			putChar(msg_buffer[i]);
			checkSum^=msg_buffer[i];
		}		
		putChar(checkSum);
		checkSum=0x00;		
	}

}    
*/


/**********************************************************************
functionName:void rx_pkg_process(void)
description:串口接收包處理
**********************************************************************/
void rx_pkg_process(void)
{
	uint16 i;
	uint08 cmd;
	
	cmd = uart_tx_buf[0];
	
	if(msg_end_flag)
	{
		msg_end_flag=0;
		
		for(i=0;i<uart_rx_counter;i++)
		{
			put_char(uart_rx_buf[i]);
		}
		/*switch(cmd)
		{
			case 0:
			{
				break;
			}
			default:
			{
				break;
			}
		}*/
	}
}

/**********************************************************************
functionName:void uart0_tx_isr(void)
description:串口發(fā)送中斷函數(shù)
**********************************************************************/
#pragma interrupt_handler uart0_tx_isr:14
void uart0_tx_isr(void)
{
 	uart_tx_counter--;
 	if(uart_tx_counter)		//如果還沒(méi)有發(fā)送完成
 	{
 		UDR=uart_tx_buf[uart_tx_rd_ptr];
		uart_tx_rd_ptr++;
		if(uart_tx_rd_ptr==UART_BUF_SIZE)uart_tx_rd_ptr=0;
 	}
 	else
 	{
 		UCSRB&=~BIT(TXCIE);		//發(fā)送結(jié)束中斷不使能
 		UART_TX_LED;
 	}
}


/**********************************************************************
functionName:uint08 write_uart(uint08 uart_data)
description:寫(xiě)串口數(shù)據(jù)
**********************************************************************/
uint08 put_char(uint08 uart_data)
{
	if(uart_tx_counter==UART_BUF_SIZE)
	{
		return(UART_FALSE);		//表示串口緩沖器溢出
	}
	uart_tx_buf[uart_tx_wr_ptr]=uart_data;
	uart_tx_wr_ptr++;
	if(uart_tx_wr_ptr>=UART_BUF_SIZE)uart_tx_wr_ptr=0;
	uart_tx_counter++;
	if(uart_tx_counter==1)
	{
		UDR=uart_tx_buf[uart_tx_rd_ptr];
		uart_tx_rd_ptr++;
		if(uart_tx_rd_ptr==UART_BUF_SIZE)uart_tx_rd_ptr=0;
		UCSRB|=BIT(TXCIE);		//發(fā)送結(jié)束中斷使能
	}
	return(UART_TURE);
}


/**********************************************************************
functionName:putChars(BYTE *sentData)
description:通過(guò)串口發(fā)送數(shù)據(jù)字符串
**********************************************************************/
uint08 put_chars(uint08 *sentData)
{
 	while(*sentData)
 	{
 		if(put_char(*sentData)==UART_FALSE)
 		return(UART_FALSE);
 		sentData++;
 		
 	}
 	return(UART_TURE);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品国产无套在线观| 亚洲一区欧美一区| 欧美在线不卡一区| 国产精品一品视频| 日本伊人色综合网| 亚洲欧美日韩一区| 国产偷国产偷亚洲高清人白洁| 欧美日韩中文另类| 91在线观看一区二区| 美腿丝袜亚洲色图| 午夜av电影一区| 亚洲欧美另类小说视频| 国产偷v国产偷v亚洲高清| 欧美一级艳片视频免费观看| 日本道精品一区二区三区| 国产成人精品一区二区三区网站观看| 偷窥国产亚洲免费视频| 亚洲精品国产a| 欧美高清在线一区二区| 久久久亚洲精品一区二区三区 | 玉米视频成人免费看| 国产三级久久久| www激情久久| 欧美精品一区二| 日韩欧美一级在线播放| 欧美丰满一区二区免费视频| 欧美亚洲国产一区二区三区va| 91年精品国产| 91色|porny| 色系网站成人免费| 色天天综合久久久久综合片| 99精品欧美一区| 91麻豆自制传媒国产之光| 91浏览器打开| 91激情在线视频| 欧美性欧美巨大黑白大战| 欧洲一区二区三区在线| 欧美综合色免费| 在线精品视频免费播放| 狠狠狠色丁香婷婷综合激情| 国产原创一区二区| 免费不卡在线视频| 蜜桃视频一区二区三区在线观看| 日韩黄色一级片| 久久99精品国产麻豆婷婷洗澡| 久久激情综合网| 国产一区二区三区综合| 国产成人精品一区二区三区网站观看| 顶级嫩模精品视频在线看| 成人激情黄色小说| 色综合久久久久综合体| 欧美色区777第一页| 8v天堂国产在线一区二区| 91精品国产色综合久久不卡蜜臀 | 亚洲码国产岛国毛片在线| 亚洲日本中文字幕区| 亚洲综合免费观看高清完整版 | 久久精品久久99精品久久| 久久99精品国产.久久久久| 国产精品888| 色噜噜偷拍精品综合在线| 欧美绝品在线观看成人午夜影视| 精品日韩欧美在线| 国产精品免费久久久久| 亚洲综合无码一区二区| 麻豆成人91精品二区三区| 丁香网亚洲国际| 色哟哟在线观看一区二区三区| 欧美日韩免费观看一区二区三区| 日韩一级大片在线| 久久久久久久久久久久电影| 亚洲精品乱码久久久久久黑人| 视频一区二区欧美| 国产夫妻精品视频| 欧美三片在线视频观看| 久久蜜臀中文字幕| 夜色激情一区二区| 国产一区 二区| 在线精品观看国产| 久久综合九色综合欧美98| 一区二区三区在线观看国产| 精品无码三级在线观看视频| 99国产精品久久久| 精品精品国产高清a毛片牛牛| 亚洲色大成网站www久久九九| 久久99这里只有精品| 日本韩国欧美三级| 久久久精品免费网站| 天天做天天摸天天爽国产一区| 国产精品1区2区3区在线观看| 欧美日韩国产综合一区二区| 中文字幕av不卡| 另类小说一区二区三区| 91成人在线免费观看| 久久久久久久久久久久电影| 午夜精品123| 97国产精品videossex| 久久久亚洲欧洲日产国码αv| 无码av中文一区二区三区桃花岛| av电影一区二区| 欧美精品一区二区精品网| 亚洲高清不卡在线| 91在线观看一区二区| 久久精品日产第一区二区三区高清版| 亚洲第一成年网| 色猫猫国产区一区二在线视频| 国产三级久久久| 久久99精品久久久久久动态图| 欧美色欧美亚洲另类二区| ...av二区三区久久精品| 国产精品99久久不卡二区| 欧美mv日韩mv亚洲| 全国精品久久少妇| 欧美日韩一区三区四区| 夜夜夜精品看看| 色8久久人人97超碰香蕉987| 国产精品免费丝袜| 国产福利一区二区| 久久久久亚洲蜜桃| 国产一区二区主播在线| 日韩精品一区二区三区四区 | 久久夜色精品国产噜噜av| 日本欧美在线观看| 91精品国产综合久久蜜臀| 午夜精品视频一区| 欧美色图免费看| 亚洲不卡av一区二区三区| 日本韩国一区二区三区视频| 有坂深雪av一区二区精品| 在线观看视频一区| 一区二区三区高清| 欧美日韩亚洲综合一区二区三区| 亚洲国产美女搞黄色| 欧美午夜电影一区| 午夜天堂影视香蕉久久| 欧美男女性生活在线直播观看| 亚洲h在线观看| 欧美一区二区精品久久911| 蜜臀av一区二区在线观看| 日韩欧美国产综合在线一区二区三区| 美女脱光内衣内裤视频久久网站 | 白白色亚洲国产精品| 国产精品久久久久三级| 91美女蜜桃在线| 亚洲电影一级黄| 91精品国产手机| 韩国一区二区三区| 国产日韩欧美精品综合| 不卡的av中国片| 亚洲精品菠萝久久久久久久| 欧美性一级生活| 免费人成在线不卡| 久久夜色精品国产欧美乱极品| 成人av先锋影音| 亚洲国产综合视频在线观看| 日韩午夜小视频| 国产精品99久久久| 亚洲精品国久久99热| 91精品国产综合久久久蜜臀图片| 美日韩一区二区| 国产精品麻豆网站| 欧美少妇xxx| 国产一区二区三区四区在线观看 | 亚洲一本大道在线| 91精品国产综合久久精品图片| 黄网站免费久久| 综合久久久久久| 91精品婷婷国产综合久久性色| 国产精品中文有码| 亚洲自拍另类综合| 久久亚洲私人国产精品va媚药| av在线免费不卡| 午夜精品成人在线视频| 久久精品视频一区二区| 91久久精品一区二区二区| 日韩成人dvd| 中文字幕色av一区二区三区| 欧美久久久久久久久久| 国产高清视频一区| 亚洲成国产人片在线观看| 久久久久久久久久久久久女国产乱| 日本久久一区二区| 国产综合色产在线精品| 亚洲综合在线五月| 国产丝袜欧美中文另类| 777午夜精品免费视频| 成人黄页毛片网站| 美女爽到高潮91| 一区二区三区免费观看| 久久综合99re88久久爱| 色爱区综合激月婷婷| 国产成人精品亚洲日本在线桃色| 午夜在线电影亚洲一区| 亚洲欧美在线观看| 精品日本一线二线三线不卡| 欧美日韩一二三区| 91婷婷韩国欧美一区二区| 国产成人综合网| 久久精品国产网站| 亚洲一区二区三区三|