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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? uart.c

?? CS5532的驅(qū)動程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
					//We have to check if we have an uneven byte. 
					//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)  //頁編程,并且選擇等待的方式
			{
				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)		//如果還沒有發(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:寫串口數(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:通過串口發(fā)送數(shù)據(jù)字符串
**********************************************************************/
uint08 put_chars(uint08 *sentData)
{
 	while(*sentData)
 	{
 		if(put_char(*sentData)==UART_FALSE)
 		return(UART_FALSE);
 		sentData++;
 		
 	}
 	return(UART_TURE);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
17c精品麻豆一区二区免费| 欧美日韩一级视频| 国产精品原创巨作av| 三级一区在线视频先锋 | 国产精品亚洲а∨天堂免在线| 亚洲成人资源在线| 亚洲成人av免费| 久热成人在线视频| 国产精品自在欧美一区| 激情综合网天天干| 国产91在线|亚洲| 色婷婷精品久久二区二区蜜臀av | 亚洲精品日日夜夜| 国产91丝袜在线观看| 成人午夜av在线| 欧美日韩一区二区三区在线 | 日本在线不卡一区| 成人av午夜电影| 欧美一级夜夜爽| 欧美国产激情一区二区三区蜜月| 最近日韩中文字幕| 喷水一区二区三区| 欧美在线一区二区| 久久青草国产手机看片福利盒子| 亚洲欧美区自拍先锋| 美日韩一级片在线观看| 色婷婷综合久色| 中文字幕日本乱码精品影院| 奇米在线7777在线精品| av男人天堂一区| 欧美激情一区在线| 韩国精品久久久| 日韩精品一区在线| 午夜国产不卡在线观看视频| 色爱区综合激月婷婷| 久久久午夜电影| 国产美女在线观看一区| 欧美一二三四区在线| 国产在线观看免费一区| 欧美视频在线播放| 午夜精品久久久久久久久久久 | 久久亚洲一区二区三区明星换脸| 午夜天堂影视香蕉久久| 欧美日韩一区国产| 美美哒免费高清在线观看视频一区二区| 成人av免费在线| 亚洲精品福利视频网站| 色诱视频网站一区| 亚洲一区二区三区四区在线观看| 日本韩国欧美在线| 蜜桃视频在线观看一区二区| 这里是久久伊人| 国产**成人网毛片九色| 国产精品久久久久9999吃药| 色哟哟一区二区| 蜜桃免费网站一区二区三区| 久久久久久久久久久久电影| 日韩一区二区三区四区五区六区 | 91女厕偷拍女厕偷拍高清| 夜夜精品视频一区二区| 日韩欧美国产午夜精品| 成人亚洲精品久久久久软件| 一二三四社区欧美黄| 久久日韩粉嫩一区二区三区| 色综合网色综合| 国产精品亚洲一区二区三区妖精| 国产精品三级av| 日韩一二三区不卡| 欧美在线看片a免费观看| 国产精品夜夜嗨| 毛片不卡一区二区| 亚洲综合小说图片| 国产精品久久久久久妇女6080 | 日韩av高清在线观看| 国产精品99久久久久久似苏梦涵| 中文字幕日本乱码精品影院| 精品国产1区2区3区| 欧美人体做爰大胆视频| 在线免费亚洲电影| 色婷婷综合中文久久一本| 在线观看欧美日本| 粉嫩蜜臀av国产精品网站| 另类欧美日韩国产在线| 日本少妇一区二区| 日韩av一二三| 精品影视av免费| 极品销魂美女一区二区三区| 久久99热这里只有精品| 蜜臀av性久久久久蜜臀av麻豆| 日韩激情在线观看| 美女一区二区三区| 捆绑变态av一区二区三区 | 高潮精品一区videoshd| 国产一区二区三区不卡在线观看 | 欧美性感一类影片在线播放| 91在线播放网址| 欧美另类一区二区三区| 日韩你懂的在线观看| 久久伊人中文字幕| 亚洲欧美日韩在线播放| 天天综合日日夜夜精品| 激情伊人五月天久久综合| 丁香桃色午夜亚洲一区二区三区| www.av亚洲| 56国语精品自产拍在线观看| 精品少妇一区二区三区在线视频 | 久久99这里只有精品| 成人h精品动漫一区二区三区| 91免费看`日韩一区二区| 欧美一区二区三区人| 成人免费在线视频| 久久精品国产网站| 一本久久a久久精品亚洲| 久久这里都是精品| 日本最新不卡在线| 91电影在线观看| 中文字幕一区二区三区四区| 图片区小说区区亚洲影院| 国产乱码字幕精品高清av| 欧美肥大bbwbbw高潮| 亚洲精品免费电影| 99国内精品久久| 国产精品伦一区| 国产成人在线观看| www国产精品av| 日本不卡高清视频| 欧美性色黄大片手机版| 国产精品污网站| 91无套直看片红桃| 国产精品福利在线播放| 国产盗摄女厕一区二区三区| 在线欧美小视频| 亚洲午夜av在线| 欧美日韩成人在线一区| 亚洲青青青在线视频| 91老师国产黑色丝袜在线| 综合在线观看色| 色94色欧美sute亚洲线路一ni| 国产精品麻豆欧美日韩ww| 不卡在线视频中文字幕| 中文字幕一区二区三区在线播放| 国产大陆亚洲精品国产| 久久精品综合网| www.欧美日韩国产在线| 夜夜嗨av一区二区三区网页| 日本乱人伦一区| 奇米影视在线99精品| 国产无人区一区二区三区| 成人18视频日本| 日韩精品亚洲一区| 国产日韩精品一区二区三区| 97成人超碰视| 美国十次综合导航| 亚洲欧洲综合另类| 欧美变态凌虐bdsm| 日韩欧美一二三四区| 国产在线精品一区二区三区不卡| 欧美激情一区二区三区| 91精品综合久久久久久| av综合在线播放| 九九国产精品视频| 丝瓜av网站精品一区二区| 久久精品夜色噜噜亚洲aⅴ| 色哦色哦哦色天天综合| 狠狠色2019综合网| 蜜桃精品在线观看| 午夜欧美在线一二页| 亚洲免费观看高清完整版在线| 日韩写真欧美这视频| 欧美三级日韩三级国产三级| 国产精品系列在线播放| 蜜臀国产一区二区三区在线播放| 亚洲天堂精品视频| 亚洲素人一区二区| 亚洲欧洲性图库| 国产精品久久久久一区二区三区 | 老司机免费视频一区二区| 亚洲午夜精品17c| 久久久久久黄色| 国产不卡视频一区二区三区| 亚洲男帅同性gay1069| 中文字幕日本不卡| 中文字幕日本乱码精品影院| 中文字幕巨乱亚洲| 中文字幕一区二区三区乱码在线| 中文字幕欧美三区| 国产精品电影一区二区| 亚洲视频 欧洲视频| 亚洲一区二区黄色| 午夜精品免费在线| 韩国一区二区视频| 粉嫩aⅴ一区二区三区四区五区| 国产69精品久久777的优势| av在线综合网| 91精品国模一区二区三区| 久久久五月婷婷| 亚洲一区免费视频| 极品美女销魂一区二区三区| 成a人片国产精品| 日韩欧美一级二级三级|