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

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

?? main.c

?? AVR單片機(jī)DIY編程器!源代碼及原理圖都有!
?? C
字號(hào):
/****************************************Copyright (c)**************************************************
**                               
**       小松工程出品    ilan2003@163.com 	2006-1-30                            
**                              
** 文   件    名: 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)非常精簡(jiǎn)的使用STK500_2 協(xié)議的MEGA16的bootloader.使用
		  ATMEL AVRStudio 4.xx STK500工具的進(jìn)行軟件升級(jí)。
		  
		  本軟件適合于個(gè)人學(xué)習(xí),用于商業(yè)用途建議加加密措施  
		  
		  注意事項(xiàng):在升級(jí)firmware后,進(jìn)行verify,總是出錯(cuò),這是正常現(xiàn)象
		  因?yàn)樯?jí)的firmware文件不含bootloader程序,而verify時(shí)將讀取整片
		  flash的內(nèi)容,所以總是校驗(yàn)出錯(cuò)。如果你不放心,讀取flash的內(nèi)容和
		  你燒寫(xiě)的firmware對(duì)比一下,看看哪里不一致就是了。
		  
		  大家看看有沒(méi)有什么寫(xiě)的不好的地方,請(qǐng)?zhí)岢鰧氋F的意見(jiàn)!

文件說(shuō)明:
main.c			//主函數(shù)串口命令處理函數(shù)
initial.c		//初始化函數(shù)				
self_prog.c		//自編程函數(shù)
uart.c			//串口驅(qū)動(dòng)函數(shù)

command.h		//STK500_2協(xié)議定義	
define.h		//常用的一些定義	
extern.h		//外部參數(shù)聲明	
function.h		//函數(shù)聲明	
para.h			//參數(shù)聲明

		
**********************************************************************************************************/
#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)
		{
			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ù)包的處理過(guò)程
**********************************************************************/		
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;		
	}
	//命令CMD_PROGRAM_FLASH_ISP
	else if(cmd==CMD_PROGRAM_FLASH_ISP)
	{
		uint16 temp16; 
		LED_FLASH_2;
		boot_page_ew(address,0x03);						//擦除頁(yè)
		wait_page_rw_ok();                            	//等待擦除完成 
		for(i=0;i<(SPM_PAGESIZE<<1);i+=2)            		//將數(shù)據(jù)填入Flash緩沖頁(yè)中 
		{ 
				temp16=msg_buffer[i+11];
				temp16<<=8;
				temp16+=msg_buffer[i+10];
				boot_page_fill(i,temp16); 
    	}
		boot_page_ew(address,0x05);                    	//將緩沖頁(yè)數(shù)據(jù)寫(xiě)入一個(gè)Flash頁(yè) 
    	wait_page_rw_ok();                            	//等待寫(xiě)入完成 
		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)
	{
		LED_FLASH_2;
		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;		
	}
}                          
                                 
                                 
                                 

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区三区久久久久久久久不| 91久久精品国产91性色tv| 中文字幕av一区二区三区高| 色欧美乱欧美15图片| 美国精品在线观看| 亚洲欧美日韩在线不卡| 日韩精品一区二区三区在线观看| 91免费国产在线观看| 日本不卡一区二区三区| 国产精品久久久久影院老司| 欧美一区二区三区在线观看| 色94色欧美sute亚洲13| 国产剧情在线观看一区二区| 午夜不卡av在线| 亚洲少妇30p| 国产日产欧美一区| 欧美岛国在线观看| 欧美日韩一区三区四区| 色综合中文字幕国产 | 国产一区二区按摩在线观看| 亚洲成人免费在线观看| 亚洲乱码日产精品bd| 欧美激情一区二区三区| 欧美成人猛片aaaaaaa| 欧美另类变人与禽xxxxx| proumb性欧美在线观看| 色88888久久久久久影院按摩| 亚洲国产va精品久久久不卡综合| 亚洲日本韩国一区| 国产精品久久久久影院| 国产欧美一区二区精品仙草咪| 国产精品久久久久一区| 精品国产一区二区在线观看| 91精品婷婷国产综合久久| 欧美喷潮久久久xxxxx| 在线观看国产91| 在线免费一区三区| 欧美性欧美巨大黑白大战| 91福利国产精品| 91福利视频网站| 欧美日本一区二区| 欧美一区二区三区在线看| 日韩一区二区中文字幕| 欧美成人精品高清在线播放| 久久这里只有精品首页| 2021中文字幕一区亚洲| 久久久精品综合| 国产精品色哟哟| 亚洲欧美色一区| 一区二区三区 在线观看视频| 一区二区三区蜜桃网| 亚洲国产精品久久一线不卡| 午夜不卡在线视频| 精品无码三级在线观看视频 | 不卡视频在线看| 不卡视频在线观看| 在线免费观看日韩欧美| 欧美一区二区免费| 精品1区2区在线观看| 国产日韩v精品一区二区| 日韩伦理电影网| 亚洲电影第三页| 久久精品久久99精品久久| 国产成人精品免费网站| 91在线高清观看| 欧美日韩黄色一区二区| 欧美sm极限捆绑bd| 一区二区中文字幕在线| 亚洲午夜精品一区二区三区他趣| 日韩影院在线观看| 加勒比av一区二区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 五月天激情小说综合| 麻豆免费精品视频| www.成人在线| 欧美二区乱c少妇| 国产拍揄自揄精品视频麻豆| 亚洲黄色小视频| 久久精品免费观看| 91在线国产福利| 日韩欧美电影在线| 亚洲欧美日韩国产综合| 久久精品国产久精国产| 99综合影院在线| 日韩片之四级片| 自拍偷拍亚洲欧美日韩| 青青草一区二区三区| 成人毛片老司机大片| 69堂成人精品免费视频| 中文字幕精品—区二区四季| 香蕉影视欧美成人| www.99精品| 精品成人a区在线观看| 亚洲一区二区三区免费视频| 国产乱对白刺激视频不卡| 精品视频1区2区3区| 亚洲国产成人一区二区三区| 日韩综合一区二区| 色综合天天综合在线视频| 精品理论电影在线观看| 亚洲午夜久久久久久久久电影网| 国产成人精品免费| 精品少妇一区二区三区在线播放| 综合亚洲深深色噜噜狠狠网站| 日韩在线一二三区| 在线观看免费亚洲| 日韩理论电影院| 懂色av一区二区在线播放| 欧美一区二区三区视频| 成人丝袜高跟foot| 日韩一区二区三区视频在线观看| 26uuu精品一区二区在线观看| 一卡二卡三卡日韩欧美| 国产一区二区在线观看免费| 午夜电影久久久| 丁香啪啪综合成人亚洲小说| 678五月天丁香亚洲综合网| 1区2区3区国产精品| 国产另类ts人妖一区二区| 欧美一区二区三区成人| 亚洲一级不卡视频| 91久久线看在观草草青青| 亚洲国产精华液网站w| 国产一区二区在线观看免费| 欧美一区二区三区人| 亚洲二区在线视频| 色一情一伦一子一伦一区| 亚洲国产精品t66y| 大桥未久av一区二区三区中文| 日韩欧美电影一区| 免费观看91视频大全| 欧美高清hd18日本| 无码av中文一区二区三区桃花岛| 欧美日韩在线观看一区二区 | 国产精品对白交换视频 | 欧美日韩国产在线播放网站| 亚洲人成在线播放网站岛国| 成人涩涩免费视频| 中文字幕欧美日韩一区| 懂色av中文字幕一区二区三区| 久久精品视频在线看| 成人性生交大片免费看视频在线| 久久久午夜精品| 成人美女视频在线观看18| 国产精品理论片在线观看| 99久久免费视频.com| 亚洲免费在线视频| 欧洲视频一区二区| 亚洲成在人线在线播放| 欧美一区二区福利视频| 久国产精品韩国三级视频| 欧美一区二区三区性视频| 精品午夜一区二区三区在线观看 | 中文字幕日本乱码精品影院| eeuss鲁一区二区三区| 国产精品久久久久永久免费观看 | 欧美一区日本一区韩国一区| 久草精品在线观看| 中文久久乱码一区二区| 91老师国产黑色丝袜在线| 亚洲小说春色综合另类电影| 久久综合成人精品亚洲另类欧美| 欧美一级片免费看| 欧美成人在线直播| 日韩一级成人av| 欧美一区日韩一区| 色婷婷av久久久久久久| 成人午夜免费视频| 国产精品高潮久久久久无| 欧美在线观看视频一区二区三区| 五月婷婷另类国产| 国产色婷婷亚洲99精品小说| 一本色道亚洲精品aⅴ| 日韩不卡一区二区三区| 久久精品欧美一区二区三区不卡| 一本到高清视频免费精品| 免费在线成人网| 国产精品久久综合| 欧美精品在欧美一区二区少妇| 国产精品主播直播| 亚洲与欧洲av电影| 国产拍揄自揄精品视频麻豆| 精品视频在线看| 成人福利视频在线看| 日本亚洲三级在线| 最新不卡av在线| 精品国精品自拍自在线| 91啪亚洲精品| 另类欧美日韩国产在线| 中文字幕日韩精品一区| 国产成人精品免费看| 日韩电影一二三区| 亚洲欧美精品午睡沙发| 日韩视频免费直播| 色天天综合色天天久久| 国产成人在线视频网址| 亚洲成人精品在线观看| 亚洲午夜久久久久久久久久久 | 欧美精品v国产精品v日韩精品| 老司机午夜精品|