亚洲欧美第一页_禁久久精品乱码_粉嫩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):
/****************************************Copyright (c)**************************************************
**                               	
**                                   
**                                 
** 文   件   名: uart.c
** 最后修改日期: 2007-10-8
** 描        述: rs232通訊函數(shù)
** 版	     本: V1.0
** 主  控  芯 片:M16 晶振頻率:7.37MHZ, 波特率19200
** IDE:ICCAVR 6.31
**********************************************************************************************************/
#define		MCU_M16
#define		MCLK737	
																							   
#ifdef MCU_M8
#include <iom8v.h> 
#endif

#ifdef MCU_M16
#include <iom16v.h>
#endif

#include <macros.h>
#include "DEFINE.H"
#include "UART.H"
#include "COMMAND.H"


uint08 uart_tx_buf[UART_BUF_SIZE];			//發(fā)送緩沖
uint08 uart_tx_wr_ptr,uart_tx_rd_ptr;		
uint08 uart_rx_counter,uart_tx_counter;
uint08 uart_rx_buf[UART_BUF_SIZE];			//接收緩沖,相當(dāng)于消息體
uint08 seq_number;					//順序數(shù)
uint08 check_sum;					//和校驗(yàn)
uint08 rx_stu_mac;					//接收狀態(tài)機(jī)
uint08 msg_end_flag;					//消息體結(jié)束標(biāo)志
uint16 msg_size;					//消息尺寸


/**********************************************************************
functionName:void uart_init(void)
description:uart初始化
**********************************************************************/	
void uart_init(void)
{
	//IO初始化
	SET_BIT(PORTD,PD0);
	SET_BIT(PORTD,PD1);
	SET_BIT(DDRD,PD1);	
	CLR_BIT(DDRD,PD0);	
	
	//寄存器初始化
	UCSRB = 0x00; 		
 	UCSRA = 0x00;
 	UCSRC = 0x86;
	UBRRL = BAUD19200; 			//設(shè)置撥特率
 	UBRRH = 0x00; 				//set baud rate hi
 	UCSRB = 0x98;				//使用中斷
	
	//變量初始化
	uart_tx_wr_ptr=uart_tx_rd_ptr=0;
	//uart_rx_wr_ptr=uart_rx_rd_ptr=0;
	uart_rx_counter=uart_tx_counter=0;
	msg_end_flag=0;				//表示沒(méi)有接收到數(shù)據(jù)
	rx_stu_mac=ST_START;
}




/**********************************************************************
functionName:void uart0_rx_isr(void)
description:串口接受中斷函數(shù)
**********************************************************************/
#pragma interrupt_handler uart0_rx_isr:12
void uart0_rx_isr(void)
{
 	uint08 uart_data;
 	uart_data=UDR;
 	switch(rx_stu_mac)
 	{
 		case ST_START:
 		{
 			if(uart_data==MESSAGE_START)
			{
				rx_stu_mac = ST_GET_SEQ_NUM;	
				check_sum = MESSAGE_START;
			}
 			break;
 		}
 		case ST_GET_SEQ_NUM:
 		{
 			seq_number = uart_data;
			check_sum ^= uart_data; 
			rx_stu_mac = ST_MSG_SIZE_H;
 			break;
 		}
 		case ST_MSG_SIZE_H:
 		{
 			msg_size = uart_data;
			msg_size <<=8;
			check_sum ^= uart_data;
			rx_stu_mac = ST_MSG_SIZE_L;
 			break;
 		}
 		case ST_MSG_SIZE_L:
 		{
 			msg_size |= uart_data;
			check_sum ^= uart_data;
			rx_stu_mac = ST_GET_TOKEN;	
 			break;
 		}
 		case ST_GET_TOKEN:
 		{
 			if(uart_data==TOKEN)
			{
				check_sum ^= uart_data;
				rx_stu_mac = ST_GET_DATA;
				uart_rx_counter=0;
			}
			else
			{
				rx_stu_mac = ST_START;
			}
 			break;
 		}
 		case ST_GET_DATA:
 		{
 			uart_rx_buf[uart_rx_counter++]=uart_data;
			check_sum ^= uart_data;
			if(uart_rx_counter==msg_size)
			{
				rx_stu_mac = ST_GET_CHECK;
			}
 			break;
 		}
 		case ST_GET_CHECK:
 		{
 			if(uart_data == check_sum)
			{
				msg_end_flag=1;
			}		
			rx_stu_mac = ST_START;
 			break;
 		}
 		default:
 		{
 			rx_stu_mac=ST_START;
 			break;
 		}
 	}
}




/*void packageProcess(uint08 seqNum) 
{
	uint08 cmd;
	uint08 tmp=0;
	uint08 tmp2=0;
	uint08 tmp3=0;
	uint08 mode;
	uint16 block_size;
	uint16 i;
	uint16 tmp16;
	uint16 num_bytes=0;
	uint32 polling_address=0;
	uint32 start_address = address;
	cmd = msg_buffer[0];
	
	//命令CMD_SIGN_ON
	if(cmd==CMD_SIGN_ON)
	{
		num_bytes = 11;
		msg_buffer[0] = CMD_SIGN_ON;
		msg_buffer[1] = STATUS_CMD_OK;
		msg_buffer[2] = 8;
		memcpy(msg_buffer+3,"STK500_2",8);
	}
	//命令CMD_SET_PARAMETER
	else if(cmd==CMD_SET_PARAMETER)
	{
		switch(msg_buffer[1])
		{
			case PARAM_SCK_DURATION:
				
				if((msg_buffer[2]) >= 1  ) clockSpeed=SPI_SPEED_2MHZ;
				if((msg_buffer[2]) >= 2  ) clockSpeed=SPI_SPEED_1MHZ;
				if((msg_buffer[2]) >= 4  ) clockSpeed=SPI_SPEED_500KHZ;
				if((msg_buffer[2]) >= 8  ) clockSpeed=SPI_SPEED_250KHZ;
				if((msg_buffer[2]) >= 16 ) clockSpeed=SPI_SPEED_125KHZ;
				if((msg_buffer[2]) >= 32 ) clockSpeed=SPI_SPEED_62KHZ;
				if(EEPROMread(EEP_SCK_DURATION)!=clockSpeed) 
				EEPROMwrite(EEP_SCK_DURATION,clockSpeed);
				//spi_set_speed(clock_speed);		//因?yàn)槲疫@里不用硬件SPI 
				break;
			case PARAM_RESET_POLARITY:			//區(qū)分51和AVR用的,1表示AVR 0表示AT89C
				if(resetPolarity != msg_buffer[2])
				{
					resetPolarity = msg_buffer[2];
					EEPROMwrite(EEP_RESET_POLARITY,resetPolarity);				
				}
				break;
			case PARAM_CONTROLLER_INIT:
				paramControllerInit = msg_buffer[2];
				break;
			case PARAM_VADJUST:
				vAdjust = msg_buffer[2];
				EEPROMwrite(EEP_VOL_ADJUST,vAdjust);
				break;
			case PARAM_VTARGET:
				vTarget = msg_buffer[2]; 
				EEPROMwrite(EEP_VOL_TARGET,vTarget);
				asm("jmp 0x17FF");
				break;	
			default:break; 		
		}
		num_bytes = 2;
		msg_buffer[0] = CMD_SET_PARAMETER;
		msg_buffer[1] = STATUS_CMD_OK;
	}
	//命令CMD_GET_PARAMETER
	else if(cmd==CMD_GET_PARAMETER)
	{
		switch(msg_buffer[1])
		{
			case PARAM_BUILD_NUMBER_LOW:
				tmp = CONFIG_PARAM_BUILD_NUMBER_LOW;
				break;
			case PARAM_BUILD_NUMBER_HIGH:
				tmp = CONFIG_PARAM_BUILD_NUMBER_HIGH;
				break;
			case PARAM_HW_VER:
				tmp = CONFIG_PARAM_HW_VER;
				break;
			case PARAM_SW_MAJOR:
				tmp = CONFIG_PARAM_SW_MAJOR;
				break;
			case PARAM_SW_MINOR:
				tmp = CONFIG_PARAM_SW_MINOR;
				break;
			case PARAM_SCK_DURATION:
				tmp = clockSpeed;
				break;
			case PARAM_RESET_POLARITY:
				tmp = resetPolarity;
				break;
			case PARAM_CONTROLLER_INIT:
				tmp = paramControllerInit;
				break;
			case PARAM_VTARGET:				//目標(biāo)電壓
				tmp = vTarget;
				break;	
			case PARAM_VADJUST:
				tmp = vAdjust;				//參考電壓
				break;
			case PARAM_TOPCARD_DETECT:
				tmp = TOP_CARD_STK520;
				break;	
		}
		num_bytes = 3;
		msg_buffer[0] = CMD_GET_PARAMETER;
		msg_buffer[1] = STATUS_CMD_OK;
		msg_buffer[2] = tmp;
	}
	//命令CMD_OSCCAL
	else if(cmd==CMD_OSCCAL)
	{
		num_bytes = 2;
		msg_buffer[0] = CMD_OSCCAL;
		msg_buffer[1] = STATUS_CMD_OK;
	}	
	//命令CMD_LOAD_ADDRESS
	else if(cmd==CMD_LOAD_ADDRESS)
	{
		address =  ((unsigned long)msg_buffer[1])<<24;
		address |= ((unsigned long)msg_buffer[2])<<16;
		address |= ((unsigned long)msg_buffer[3])<<8;
		address |= ((unsigned long)msg_buffer[4]);
		num_bytes = 2;
		msg_buffer[0] = CMD_LOAD_ADDRESS;
		msg_buffer[1] = STATUS_CMD_OK;
	}
	//命令CMD_FIRMWARE_UPGRADE
	else if(cmd==CMD_FIRMWARE_UPGRADE)
	{
		num_bytes = 2;
		msg_buffer[0] = CMD_FIRMWARE_UPGRADE;
		//msg_buffer[1] = STATUS_CMD_OK;
		msg_buffer[1] = STATUS_CMD_FAILED;
		asm("jmp 0x17FF");
		//進(jìn)入Firmware upgrade模式
	}
	//命令CMD_ENTER_PROGMODE_ISP
	else if(cmd == CMD_ENTER_PROGMODE_ISP)
	{
		prgMode=1;
		spiEnable();
		msDelay(msg_buffer[2]);	
		LED_ON2;
		for(i=0;i<msg_buffer[4];i++)
		{
			SPIWrite(msg_buffer[8]);
			msDelay(msg_buffer[5]);
			SPIWrite(msg_buffer[9]);
			msDelay(msg_buffer[5]);
			if(msg_buffer[7]==3)		//AVR
			{
				tmp=SPIWrite(msg_buffer[10]);
				msDelay(msg_buffer[5]);				
				SPIWrite(msg_buffer[11]);
				msDelay(msg_buffer[5]);				
			}
			else				//AT89S
			{
				SPIWrite(msg_buffer[10]);
				msDelay(msg_buffer[5]);				
				tmp=SPIWrite(msg_buffer[11]);
				msDelay(msg_buffer[5]);
			}
			if((tmp==msg_buffer[6])||(msg_buffer[7]==0))
			{
				i=0xFF;
				LED_OFF2;
				break;
			}
			else
			{
				spiEnable();
				msDelay(msg_buffer[2]);	
			}
		}
		num_bytes = 2;
		msg_buffer[0] = CMD_ENTER_PROGMODE_ISP;
		if(i==0xFF)
		{			
			msg_buffer[1] = STATUS_CMD_OK;			
		}
		else
		{			
			msg_buffer[1] = STATUS_CMD_FAILED;
		}		
	}
	//命令 CMD_LEAVE_PROGMODE_ISP
	else if(cmd==CMD_LEAVE_PROGMODE_ISP)
	{
		prgMode=0;		
		spiDisable();
		num_bytes = 2;
		msg_buffer[0] = CMD_LEAVE_PROGMODE_ISP;
		msg_buffer[1] = STATUS_CMD_OK;		
	}
	//命令CMD_CHIP_ERASE_ISP
	else if(cmd==CMD_CHIP_ERASE_ISP)
	{
		universalComm(msg_buffer[3],msg_buffer[4],msg_buffer[5],msg_buffer[6]);	
		//Newer AVR's seems to have a busy bit
		//cant test this because I don't have any of these new chips
		if(msg_buffer[2]==0)
		{
			msDelay(msg_buffer[1]);
		}
		else 	//if(msg_buffer[2]==1)
		{
			while(universalComm(0xF0,0x00,0x00,0x00)&1);
		}		
		num_bytes = 2;
		msg_buffer[0] = CMD_CHIP_ERASE_ISP;
		msg_buffer[1] = STATUS_CMD_OK;			
	}
	//命令CMD_PROGRAM_FLASH_ISP
	else if(cmd==CMD_PROGRAM_FLASH_ISP)
	{
		block_size = ((unsigned int)msg_buffer[1])<<8;
		block_size |= msg_buffer[2];
		mode = msg_buffer[3];
		LED_FLASH2;
		//如果是字寫(xiě)模式
		if((mode&1) == 0)
		{	
			for(i=0;i<block_size;i++)
			{	
				//If we have an uneven byte programm the
				//high byte			
				if(i&1)
				{
					SPIWrite(msg_buffer[5]|(1<<3));
				}
				else
				{
					SPIWrite(msg_buffer[5]);
				}
				SPIWrite16(address);
				SPIWrite(msg_buffer[i+10]);
				//Check if we can do polling
				if(msg_buffer[8]!=msg_buffer[i+10])
				{
					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{
						//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&0x0E) == 0x08)
				{
					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]);					
				}		
				//increment (word) address only when we have an uneven (byte) address
				if(i&1) address++;
			}			
		}
		//Page Mode
		else
		{
			for(i=0;i<block_size;i++)
			{
				//If we have an uneven(奇數(shù)) byte programm the
				//high byte			
				if(i&1)
				{
					SPIWrite(msg_buffer[5]|(1<<3));  	//高字節(jié)
				}
				else
				{
					SPIWrite(msg_buffer[5]);		//低字節(jié)
				}
				SPIWrite16(address);
				SPIWrite(msg_buffer[i+10]);
				//Check if we can do polling//用于數(shù)據(jù)輪尋,隨意找一個(gè)地址
				if(msg_buffer[8]!=msg_buffer[i+10])
				{
					//We have to check if we have an uneven byte. 

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美人与性动xxxx| 欧美v日韩v国产v| 狠狠色伊人亚洲综合成人| 亚洲美女偷拍久久| 欧美岛国在线观看| 欧美日韩一卡二卡三卡| 91亚洲精华国产精华精华液| 麻豆91精品视频| 偷拍一区二区三区四区| **性色生活片久久毛片| 久久一二三国产| 正在播放亚洲一区| 欧美三级欧美一级| 色婷婷综合久久久| 不卡电影免费在线播放一区| 国产一区视频在线看| 麻豆成人久久精品二区三区小说| 亚洲一区免费视频| 亚洲视频一区二区免费在线观看| 久久在线观看免费| 精品久久久三级丝袜| 欧美一级搡bbbb搡bbbb| 欧美色国产精品| 欧美在线观看一区二区| 不卡一二三区首页| 成人激情开心网| 岛国精品一区二区| 国产高清成人在线| 国产一区二区三区免费在线观看 | 亚洲国产日日夜夜| 日韩美女啊v在线免费观看| 中文在线一区二区| 国产片一区二区三区| 久久免费视频一区| 久久亚洲春色中文字幕久久久| 日韩精品一区二区三区在线播放| 欧美精品第1页| 欧美日韩高清一区| 欧美日韩精品欧美日韩精品一综合| 91国偷自产一区二区开放时间| 91理论电影在线观看| 在线免费一区三区| 欧美日韩视频专区在线播放| 欧美日韩高清一区二区| 欧美高清性hdvideosex| 国产午夜精品福利| 国产精品青草综合久久久久99| 国产视频在线观看一区二区三区| 欧美国产97人人爽人人喊| 中文字幕精品三区| 一区二区视频免费在线观看| 亚洲香肠在线观看| 日本一区中文字幕| 国产乱一区二区| 波多野洁衣一区| 在线亚洲一区二区| 在线不卡欧美精品一区二区三区| 日韩一级片网站| 国产三级精品视频| 亚洲视频免费在线| 石原莉奈一区二区三区在线观看| 免费久久99精品国产| 国产成人免费av在线| 91麻豆免费视频| 666欧美在线视频| xnxx国产精品| 亚洲激情自拍视频| 日韩和欧美一区二区| 国产成人在线电影| 在线观看视频一区二区欧美日韩| 日韩视频免费直播| 国产精品嫩草影院com| 午夜伦欧美伦电影理论片| 黄页网站大全一区二区| 色婷婷综合久色| 精品美女一区二区| 日韩美女视频一区| 蜜臀精品一区二区三区在线观看 | 久久99精品久久久久| www.色综合.com| 91精品国产麻豆国产自产在线| 久久精品欧美日韩| 一区二区免费视频| 国产成人免费在线观看不卡| 欧美网站一区二区| 国产亚洲婷婷免费| 亚洲 欧美综合在线网络| 国产麻豆精品视频| 欧美日韩美少妇| 国产精品福利一区| 美脚の诱脚舐め脚责91| 91国产视频在线观看| 国产视频一区二区三区在线观看| 五月综合激情日本mⅴ| 成人av综合在线| 精品处破学生在线二十三| 亚洲猫色日本管| 国产一区二区视频在线播放| 欧美亚洲一区三区| 中文一区一区三区高中清不卡| 日韩avvvv在线播放| 日本精品一区二区三区高清 | 欧美激情一区二区三区四区| 日韩在线观看一区二区| 色综合中文字幕国产 | 激情欧美一区二区三区在线观看| 91传媒视频在线播放| 国产日韩欧美高清| 麻豆国产精品官网| 欧美日韩国产片| 亚洲女人小视频在线观看| 国产精品伊人色| 欧美成人三级在线| 亚洲va欧美va人人爽午夜| 91欧美一区二区| 国产精品天美传媒| 国产黄色精品视频| 精品国产乱码久久久久久图片| 午夜伦欧美伦电影理论片| 欧美少妇一区二区| 亚洲一区二区三区在线| 在线日韩一区二区| 亚洲精品免费在线观看| 91同城在线观看| 国产精品欧美久久久久无广告| 国产麻豆精品久久一二三| 欧美一区二区视频在线观看2022| 亚洲丰满少妇videoshd| 欧美中文字幕一区| 一区二区三区欧美| 色婷婷综合视频在线观看| 亚洲美女偷拍久久| 色综合一个色综合亚洲| 一区二区三区免费在线观看| 色999日韩国产欧美一区二区| 亚洲欧洲成人精品av97| eeuss国产一区二区三区| 国产精品天美传媒| 91麻豆成人久久精品二区三区| 亚洲欧美日韩中文播放| 成人午夜激情在线| 国产精品久久三区| www.亚洲在线| 亚洲欧美乱综合| 色婷婷久久久久swag精品| 亚洲综合色自拍一区| 欧美日韩精品高清| 免费精品视频最新在线| 26uuuu精品一区二区| 国产福利一区二区三区视频| 一区在线观看视频| 色噜噜夜夜夜综合网| 天天综合网 天天综合色| 日韩一级片在线观看| 国产精品资源在线观看| 国产精品久久一级| 在线视频一区二区三| 欧美96一区二区免费视频| 精品处破学生在线二十三| 成人av集中营| 亚洲综合一区二区三区| 日韩一二在线观看| 成人伦理片在线| 亚洲风情在线资源站| 精品精品欲导航| 不卡的av电影在线观看| 亚洲综合成人网| 精品福利在线导航| eeuss国产一区二区三区| 五月婷婷久久丁香| 国产亚洲一二三区| 欧美无砖专区一中文字| 国产一区二区在线电影| 亚洲人妖av一区二区| 欧美一区二区黄| 成人性生交大片免费看视频在线 | 欧美xxxxx牲另类人与| 成人av网站在线观看免费| 首页亚洲欧美制服丝腿| 国产日产欧美一区二区视频| 欧洲人成人精品| 久久99精品国产.久久久久久| 中文字幕在线观看不卡| 91精品国产入口| 99综合电影在线视频| 免费成人av在线播放| 国产精品国产自产拍高清av| 91精品国产91综合久久蜜臀| 99视频超级精品| 激情av综合网| 午夜视频一区在线观看| 国产精品毛片无遮挡高清| 日韩你懂的在线播放| 色婷婷精品久久二区二区蜜臀av | 国产曰批免费观看久久久| 一区二区三区成人| 国产精品无遮挡| 久久综合九色综合欧美亚洲| 欧美日韩一卡二卡| 色女孩综合影院|