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

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

?? main.c

?? 程序下載在M16中后
?? C
字號:
/****************************************Copyright (c)**************************************************                                                 
**                              
** 文   件    名: main.c
** 描         述: M16_BOOTLOADER
** 版	      本: V1.0
** 主  控  芯 片: M16  晶振頻率:7.3728MHZ, 波特率115200
** 編  譯  環(huán) 境:ICCAVR 6.31A	

描    述:使用STK500_2 協(xié)議的bootloader,監(jiān)控芯片 M16,數(shù)據(jù)通訊RS232
		  已經(jīng)非常精簡的使用STK500_2 協(xié)議的MEGA16的bootloader.使用
		  ATMEL AVRStudio 4.xx STK500工具的進(jìn)行軟件升級。
		  	
**********************************************************************************************************/
#include <iom16v.h>
#include <macros.h>
#include <string.h>
#include "define.h"
#include "function.h"
#include "command.h"
#include "para.h"



/**********************************************************************
functionName:void main(void)
description:主函數(shù)
**********************************************************************/
void main(void)
{
	uint08 rec_data;
	static uint16 msgCounter;
	allInit();
	while(1)
	{
		rec_data=getChar();
		if(statusMachine == ST_START)
		{
		 	flag = 1;
			TCCR1B = 0x00;
			if(rec_data==MESSAGE_START)
			{
				statusMachine = ST_GET_SEQ_NUM;	
				checkSum = MESSAGE_START;
			}
		}
		else if(statusMachine == ST_GET_SEQ_NUM)
		{
			seqNumber = rec_data;
			checkSum ^= rec_data; 
			statusMachine = ST_MSG_SIZE_1;
		}
		else if(statusMachine == ST_MSG_SIZE_1)
		{
			msgSize = rec_data;
			msgSize <<=8;
			checkSum ^= rec_data;
			statusMachine = ST_MSG_SIZE_2;	
		}
		else if(statusMachine == ST_MSG_SIZE_2)
		{
			msgSize |= rec_data;
			checkSum ^= rec_data;
			statusMachine = ST_GET_TOKEN;	
		}
		else if(statusMachine == ST_GET_TOKEN)
		{
			if(rec_data==TOKEN)
			{
				checkSum ^= rec_data;
				statusMachine = ST_GET_DATA;
				msgCounter=0;
			}
			else
			{
				statusMachine = ST_START;
			}
		}
		else if(statusMachine == ST_GET_DATA)
		{
			msg_buffer[msgCounter++]=rec_data;
			checkSum ^= rec_data;
			if(msgCounter==msgSize)
			{
				statusMachine = ST_GET_CHECK;
			}
		}
		else if(statusMachine == ST_GET_CHECK)
		{
			if(rec_data == checkSum)
			{
				packageProcess(seqNumber);
			}		
			statusMachine = ST_START;	
		}
	}
}

	
	

/**********************************************************************
functionName:void packageProcess(uint08 seqNum) 
description:數(shù)據(jù)包的處理過程
**********************************************************************/		
void packageProcess(uint08 seqNum) 
{
	uint08 cmd;
	uint08 tmp=0;
	uint16 i;
	uint16 num_bytes=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)
	{
		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_RESET_POLARITY:
				tmp = resetPolarity;
				break;
			case PARAM_VTARGET:				//目標(biāo)電壓
				tmp = 50;
				break;	
			case PARAM_VADJUST:
				tmp = 50;				//參考電壓
				break;
			/*case PARAM_TOPCARD_DETECT:
				tmp = TOP_CARD_STK520;
				break;
			case PARAM_CONTROLLER_INIT:
				tmp = paramControllerInit;
				break;
			case PARAM_SCK_DURATION:
				tmp = clockSpeed;
				break;*/
			default:
				tmp = CONFIG_PARAM_SW_MAJOR;
				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_CHIP_ERASE_ISP
	else if(cmd==CMD_CHIP_ERASE_ISP)
	{		
		num_bytes = 2;
		msg_buffer[0] = CMD_CHIP_ERASE_ISP;
		msg_buffer[1] = STATUS_CMD_OK;		
	}
	//命令CMD_ENTER_PROGMODE_ISP
	else if(cmd == CMD_ENTER_PROGMODE_ISP)
	{
		num_bytes = 2;
		msg_buffer[0] = CMD_ENTER_PROGMODE_ISP;
		msg_buffer[1] = STATUS_CMD_OK;
	}
	//命令 CMD_LEAVE_PROGMODE_ISP
	else if(cmd==CMD_LEAVE_PROGMODE_ISP)
	{
		num_bytes = 2;
		msg_buffer[0] = CMD_LEAVE_PROGMODE_ISP;
		msg_buffer[1] = STATUS_CMD_OK;	
			
		flag = 0;
		TCNT1 = 0x735F;
		TCCR1B = 0x05;
	}
	//命令CMD_PROGRAM_FLASH_ISP
	else if(cmd==CMD_PROGRAM_FLASH_ISP)
	{
		uint16 temp16; 
		boot_page_ew(address,0x03);						//擦除頁
		wait_page_rw_ok();                            	//等待擦除完成 
		for(i=0;i<(SPM_PAGESIZE<<1);i+=2)            		//將數(shù)據(jù)填入Flash緩沖頁中 
		{ 
				temp16=msg_buffer[i+11];
				temp16<<=8;
				temp16+=msg_buffer[i+10];
				boot_page_fill(i,temp16); 
    	}
		boot_page_ew(address,0x05);                    	//將緩沖頁數(shù)據(jù)寫入一個Flash頁 
    	wait_page_rw_ok();                            	//等待寫入完成 
		address+=(SPM_PAGESIZE<<1);
		num_bytes = 2;
		msg_buffer[0] = CMD_PROGRAM_FLASH_ISP;
		msg_buffer[1] = STATUS_CMD_OK;
	}
	//命令CMD_READ_FLASH_ISP
	else if(cmd==CMD_READ_FLASH_ISP)
	{
		for(i=0;i<(SPM_PAGESIZE<<2);i++)
		{
			msg_buffer[i+2] = read_program_memory (address+i,0x00);
		}
		address+=SPM_PAGESIZE<<2;
		num_bytes = (SPM_PAGESIZE<<2)+3;
		msg_buffer[0] = CMD_READ_FLASH_ISP;
		msg_buffer[1] = STATUS_CMD_OK;
		msg_buffer[(SPM_PAGESIZE<<2)+2] = STATUS_CMD_OK;
	}
	//命令CMD_READ_FUSE_ISP
	else if(cmd==CMD_READ_FUSE_ISP)
	{	
		switch(msg_buffer[2])		
		{
			case 0x50:
				msg_buffer[2] =	read_program_memory(0x0000,1);			//讀熔絲位
				break;
			case 0x58:	
				msg_buffer[2] =	read_program_memory(0x0003,1);			//讀高熔絲位
				break;
			default:
				break;			
		}
		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)
	{
		write_lock_bits (msg_buffer[4]|0xC0);
		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)
	{
		msg_buffer[2] = read_program_memory(0x0001,1);
		num_bytes = 4;
		msg_buffer[0] = CMD_READ_LOCK_ISP;
		msg_buffer[1] = STATUS_CMD_OK;		
		msg_buffer[3] = STATUS_CMD_OK;
	}
	//傳送緩沖區(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;		
	}
}                          
                                 
                                 
                                 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩和欧美的一区| 99久久精品情趣| 国产精品一级二级三级| 精品污污网站免费看| 中文字幕精品在线不卡| 日本不卡123| 在线不卡a资源高清| 一区二区三区免费在线观看| 国产乱码精品1区2区3区| 日韩美女天天操| 香蕉加勒比综合久久| 国产a精品视频| 精品黑人一区二区三区久久 | 国产盗摄女厕一区二区三区| 欧美高清性hdvideosex| 国产婷婷一区二区| 成人福利在线看| 久久先锋影音av| 亚洲第一福利一区| 欧美日韩黄视频| 蜜桃视频在线观看一区| 色菇凉天天综合网| 亚洲不卡在线观看| 欧美一二三区精品| 国产91精品精华液一区二区三区| 欧美一三区三区四区免费在线看| 久久精品理论片| 久久精品一二三| 色综合天天视频在线观看| 亚洲猫色日本管| 日韩欧美的一区| 色综合久久综合网欧美综合网| 亚洲精品国产a| 精品久久久久一区| caoporn国产精品| 奇米精品一区二区三区在线观看| 国产欧美一区二区精品秋霞影院 | 成人在线一区二区三区| 国产精品看片你懂得| 欧美美女bb生活片| 国产精品一区二区久久精品爱涩| 亚洲欧洲另类国产综合| 欧美一级日韩免费不卡| 91老师片黄在线观看| 国模一区二区三区白浆| 亚洲成av人片在线观看| 国产精品高潮呻吟| 国产三级一区二区| 欧美一级二级在线观看| 欧美日韩一区精品| 在线视频你懂得一区| 成人激情免费网站| 蜜乳av一区二区| 亚洲欧美一区二区视频| 久久毛片高清国产| 久久久综合激的五月天| 2020国产精品自拍| 久久夜色精品国产噜噜av| 欧美特级限制片免费在线观看| 日本丶国产丶欧美色综合| 99精品一区二区三区| 在线观看av一区| 日本高清无吗v一区| 在线视频你懂得一区| 日本电影欧美片| 欧美伦理视频网站| 日韩欧美色综合网站| 国产亚洲福利社区一区| 国产精品日日摸夜夜摸av| 国产精品麻豆欧美日韩ww| 亚洲视频网在线直播| 亚洲一区二区三区四区的| 美腿丝袜亚洲色图| 国产成人午夜99999| 在线观看国产日韩| 97久久超碰国产精品| 99精品1区2区| 欧美日韩高清在线播放| 国产精品午夜在线观看| 日本一道高清亚洲日美韩| 成人蜜臀av电影| xf在线a精品一区二区视频网站| 一区二区在线电影| 国产激情91久久精品导航 | 在线一区二区三区| 中文字幕中文乱码欧美一区二区| 看片的网站亚洲| 国产69精品一区二区亚洲孕妇 | 久久草av在线| 成人综合激情网| 欧美电影免费观看高清完整版在线观看 | 国产丝袜欧美中文另类| 亚洲男帅同性gay1069| 国产精品一线二线三线| 日韩小视频在线观看专区| 午夜av一区二区三区| 欧洲一区二区av| 亚洲精品成人a在线观看| 成人午夜电影网站| 国产精品久久久久久久第一福利 | 一二三四区精品视频| 91免费看视频| 亚洲精品成人少妇| 在线视频一区二区三区| 亚洲一区国产视频| 777奇米成人网| 日日欢夜夜爽一区| 欧美男女性生活在线直播观看| 伊人色综合久久天天人手人婷| 欧美亚洲丝袜传媒另类| 午夜欧美一区二区三区在线播放| 欧美精品三级日韩久久| 国产一区二区三区日韩| 国产午夜亚洲精品羞羞网站| 成人一级片在线观看| 一区二区三区电影在线播| 欧美人与禽zozo性伦| 天堂一区二区在线免费观看| 26uuu色噜噜精品一区| 国产99一区视频免费| 亚洲午夜精品在线| 久久综合av免费| 欧美揉bbbbb揉bbbbb| 国产一区91精品张津瑜| 一区二区高清在线| 久久亚洲精品小早川怜子| 91视频国产观看| 国产乱人伦精品一区二区在线观看| 亚洲黄色av一区| 国产日韩精品久久久| 欧美一激情一区二区三区| 91黄色免费网站| 99精品黄色片免费大全| 韩国理伦片一区二区三区在线播放| 亚洲一区二区三区爽爽爽爽爽| 国产亚洲女人久久久久毛片| 亚洲精品一二三区| 国产精品免费视频观看| 欧美电影免费观看完整版 | 日韩成人午夜电影| 国产精品热久久久久夜色精品三区| 91精品国产高清一区二区三区蜜臀| 在线精品视频小说1| 欧美性视频一区二区三区| yourporn久久国产精品| 久久99国内精品| 毛片基地黄久久久久久天堂| 亚洲妇熟xx妇色黄| 亚洲地区一二三色| 日韩毛片一二三区| 国产精品丝袜一区| 亚洲精品成a人| 日本欧美肥老太交大片| 久久99精品久久只有精品| 免费在线看一区| 韩国视频一区二区| 国产91在线|亚洲| 成人激情午夜影院| 91在线视频观看| 欧美日韩国产区一| 欧美电影精品一区二区| 精品国产91乱码一区二区三区| 亚洲精品在线电影| 国产精品成人在线观看| 午夜精品久久一牛影视| 青娱乐精品视频在线| 国产精品一区一区| 色8久久精品久久久久久蜜| 99久久777色| 久久影院午夜片一区| 亚洲欧美日本韩国| 日韩高清国产一区在线| 国产91丝袜在线观看| 欧美亚洲丝袜传媒另类| 国产日韩精品一区二区三区在线| 国产精品国产自产拍高清av| 日本不卡在线视频| 色婷婷综合中文久久一本| 欧美在线视频全部完| 国产日韩欧美综合一区| 麻豆成人91精品二区三区| 欧美天堂一区二区三区| 综合av第一页| a美女胸又www黄视频久久| 2021久久国产精品不只是精品| 日韩高清电影一区| 欧美久久久久久蜜桃| 亚洲啪啪综合av一区二区三区| 国产丶欧美丶日本不卡视频| 日韩三级视频在线看| 另类的小说在线视频另类成人小视频在线| 91蜜桃视频在线| 日韩一区日韩二区| av一二三不卡影片| 国产精品久久久久久久久快鸭 | 2020国产精品自拍| 精品一区二区三区日韩| 欧美不卡一区二区三区| 国产一区二区影院| 国产农村妇女毛片精品久久麻豆|