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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main._c

?? Atmega系列單片機 BootLoader程序
?? _C
字號:
/******************************************************************************
Atmega系列單片機 BootLoader程序  
日  期:2007年4月
作  者:likeeavr
版權所有:avrvi論壇 www.avrvi.com  bbs.avrvi.com

說明:當前版本只針對本論壇M16開發板

上位機借用了馮建輝的程序。

/*****************************************************************************/
#include <macros.h>
#include "assembly.h"
 
#define  ChipType     Atmega16       
      
//*********************************************************
//選擇BOOT區大小  此必須與ICC options中的選項相對應
//#define  BootSize     'a'    //128   
//#define  BootSize     'b'    //256
//#define  BootSize     'c'    //512
#define    BootSize       'd'    //1024
//選擇BootLoad版本號
#define  BootVer        'f'    //1.0版本

//**********************************************************

#define  Atmega16       0x31

//*****************************************************************************
#define  InteClk                 //是否使用內部時鐘
#define  OscAddress     0x1fff   //時鐘校準值存儲地址

//*****************************************************************************
//7.3728M時鐘下的波特率為19200的設置,此設置可根據ICC生成,選對芯片,時鐘,波特率既可
//由此語句調用UBRR = BAU;
#define  BAU  23    // 7.3728M 19200
//#define  BAU  191 // 7.3728M 2400
//#define  BAU  95  // 7.3728M 4800
//#define  BAU  47  // 7.3728M 9600
//#define  BAU  31  // 7.3728M 14400
//#define  BAU  23  // 7.3728M 19200
//#define  BAU  15  // 7.3728M 28800

//#define  BAU  38  // 12M 19200

//*****************************************************************************

#include  <iom16v.h>
#define   PageByte 	 	 128    
#define   AddressShift 	 7
#define	INTVECREG	 	 GICR


void          FlashLoad        (void);
void          GetPageNumber    (void);
void          ExecCode         (void);
char          GetPage          (void);
void          WriteFlash       (void);
char          CheckFlash       (void);
unsigned char IsChar           (void);
void          SendChar         (unsigned char c);
void          delay            (void);                 //1ms延時函數
unsigned char RecChar          (void);

unsigned char PageBuffer[PageByte];
unsigned int  RealPageAddress;
unsigned int  PageAddress;

/*****************************************************************************/
//Flash編程								                     
/*****************************************************************************/
void FlashLoad(void)
  {
    SendChar('!');
    while (1)
    {
	 GetPageNumber();

	 if (RealPageAddress == 0xffff) 
	   return;
        
	 if (GetPage())
	  {
		WriteFlash();
	    if (CheckFlash()) 
		  SendChar('!');
	    else 
		  SendChar('@');
	  }
	 else 
	   SendChar('@');
    }
  }

/*****************************************************************************/
void GetPageNumber(void)
  {
    unsigned char PageAddressH;
    unsigned char PageAddressL;

    PageAddressH = RecChar();

    PageAddressL = RecChar();

    RealPageAddress=(int)((PageAddressH << 8) + PageAddressL);
	PageAddress=RealPageAddress<<AddressShift;
#ifdef RAMPZ_FLAG
    if (PageAddressH) 
	   RAMPZ = 1; 
    else 
	   RAMPZ = 0;
#endif	
  }

/*****************************************************************************/
char GetPage(void)
  {
    unsigned char i;
    unsigned char LocalCheckSum = 0;
    unsigned char CheckSum = 0;

    for (i=0;i<PageByte/2;i++)
	{
	 while(!IsChar());
	 PageBuffer[i]=RecChar();
	 LocalCheckSum ^= PageBuffer[i];
   	}
	for (i=0;i<PageByte/2;i++)
	{
	 while(!IsChar());
	 PageBuffer[i+PageByte/2]=RecChar();
	 LocalCheckSum ^= PageBuffer[i+PageByte/2];
   	}	   
    CheckSum = RecChar(); 
	
    if (LocalCheckSum == CheckSum) 
	  return 1;
    else 
	  return 0;
  }

/*****************************************************************************/
void WriteFlash(void)
  {
    unsigned int i;
    unsigned int TempInt;
    for (i=0;i<PageByte;i+=2)
      {
   	   TempInt=PageBuffer[i]+(PageBuffer[i+1]<<8);
   	   fill_temp_buffer(TempInt,i);    //call asm routine.
      } 
    write_page(PageAddress,0x03);       //擦除頁
    write_page(PageAddress,0x05);       //寫頁數據
   
    enableRWW();
  }

/*****************************************************************************/

char CheckFlash(void)
  {
    unsigned char i;							
    unsigned int TempInt;
    unsigned int TempInt2;

    for (i=0;i<PageByte;i+=2)
      {
	   TempInt = read_program_memory(PageAddress + i,0x00);
	   TempInt2 = PageBuffer[i] +(PageBuffer[i+1]<<8);
	   if (TempInt != TempInt2)
	     return 0;
      } 
    return 1;
  }
/*****************************************************************************/
/* Serial Port Code										                     */
/*****************************************************************************/
unsigned char IsChar(void)
{
   if(UCSRA & 0x80)
     return 1;
   else 
     return 0;	 
}
/*****************************************************************************/
/*  		字符輸入函數 		 */	
unsigned char RecChar(void)
  {
    while(!(UCSRA & 0x80));
    return UDR;
  }		
/*****************************************************************************/
void SendChar(unsigned char c)
  { 	 
    while (!(UCSRA&(1<<UDRE)));
    UDR=c;
  }
void delay(void)  
  {
    unsigned int i;
    for (i=0;i<65530;i++);
  }

/*****************************************************************************/
void ExecCode(void)
  {
#ifdef RAMPZ_FLAG 
    RAMPZ = 0;
#endif
    INTVECREG=0x01;           //中斷向量表移位允許
    INTVECREG=0x00;           //中斷向量指向應用程序區
    asm("jmp 0x0000");              
  }
		
void main(void)
  {
    unsigned char BootFlag;
    
#ifdef InteClk                //如果使用內部時鐘,讀取時鐘校準值
       OSCCAL=read_flash(OscAddress);
#endif
 
    UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //8位數據+1位停止
    UCSRB = (1<<RXEN)|(1<<TXEN);       //允許串口發送和接收
    UBRR = BAU;

 
    SendChar('>');              //通知PC機,BOOT下載準備就緒
    delay();                    //延時等待PC機響應
	delay();
	delay();
	delay();
	delay();
	delay();
	delay();
	delay();
	
    BootFlag=UDR;             
    if (BootFlag == '<') 
      {
	   SendChar(ChipType);
	   while (RecChar()!='N');
         SendChar(BootSize);
	   while (RecChar()!='N');	 
         SendChar(BootVer);
       while (1)
	   {
	     switch (RecChar())
	       {
	         case 'W': FlashLoad(); break;
	         case 'E': { 
	         	     SendChar('E');  //通知PC機,進入運用程序區
					 while (RecChar()!='N');
	         	     ExecCode();  
	         	   } break;
	         default : break;
	       }
	   }
      }
    SendChar('E');  //通知PC機,進入運用程序區
	//while (RecChar()!='N');
    delay();
	delay();
	delay();
	delay();
    ExecCode();
  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合激情成人伊人| 26uuu国产一区二区三区| 91丨porny丨首页| 成人综合在线网站| 国产精品一品二品| 国产真实乱子伦精品视频| 老司机免费视频一区二区| 日日嗨av一区二区三区四区| 日本不卡一区二区| 秋霞午夜av一区二区三区| 亚洲大片一区二区三区| 久久久国产午夜精品| 欧美日韩亚洲综合一区| 欧美性色综合网| 91蜜桃网址入口| www.亚洲人| 91免费在线看| 色综合色狠狠综合色| 色中色一区二区| 日本韩国一区二区| 色婷婷亚洲精品| 91精品办公室少妇高潮对白| 在线亚洲+欧美+日本专区| 色94色欧美sute亚洲13| 色噜噜夜夜夜综合网| 91成人在线观看喷潮| 欧美日韩免费观看一区三区| 欧美性猛交xxxx乱大交退制版 | av亚洲精华国产精华| 国产乱人伦偷精品视频免下载| 久久99最新地址| 另类专区欧美蜜桃臀第一页| 日本不卡高清视频| 免费高清成人在线| 国产精品一级片| 激情综合色播激情啊| 国模无码大尺度一区二区三区| 欧美一区二区女人| 91麻豆精品国产91久久久更新时间| 在线不卡欧美精品一区二区三区| 欧美一区二区在线不卡| 精品成人一区二区| 国产精品沙发午睡系列990531| 国产精品福利一区二区三区| 亚洲精品中文在线观看| 成人国产精品免费观看动漫| 日韩一区二区三区免费看| 欧美美女一区二区三区| 欧美丰满嫩嫩电影| 日韩欧美视频在线| 欧美一区二区三区喷汁尤物| 在线精品观看国产| 欧美色精品天天在线观看视频| 老司机免费视频一区二区三区| 国产精品综合网| 国产成人免费av在线| 国产精品99久久久久久久vr| 成人app在线| 日本精品一区二区三区高清 | 成人欧美一区二区三区视频网页 | 成人精品国产免费网站| 欧洲日韩一区二区三区| 一区二区三区四区蜜桃| av色综合久久天堂av综合| 北岛玲一区二区三区四区| 99v久久综合狠狠综合久久| 自拍偷拍欧美精品| 国产精品剧情在线亚洲| 中文字幕一区二区三区视频| 日韩黄色免费电影| 成人亚洲精品久久久久软件| 精品视频999| 国产精品每日更新| 婷婷综合另类小说色区| 激情久久五月天| 97久久超碰国产精品| 日韩欧美国产精品一区| 亚洲视频免费在线观看| 亚洲bt欧美bt精品777| 激情久久五月天| 国产成人啪午夜精品网站男同| 91免费看视频| 久久精品日产第一区二区三区高清版 | 亚洲国产wwwccc36天堂| 亚洲综合在线观看视频| 久久精品国产亚洲高清剧情介绍| 99久久国产综合精品色伊| 欧美网站大全在线观看| 7777精品伊人久久久大香线蕉的 | 欧美激情一区二区三区四区| 日本大胆欧美人术艺术动态| 91麻豆免费在线观看| 国产午夜精品福利| 麻豆视频观看网址久久| 欧美日韩美少妇| 综合欧美一区二区三区| 国产成人精品网址| 欧美第一区第二区| 午夜视频久久久久久| 一本色道久久综合亚洲91| 久久久久久久综合日本| 麻豆91免费观看| 337p亚洲精品色噜噜狠狠| 亚洲精品视频自拍| 91在线你懂得| 欧美国产日韩亚洲一区| 日韩在线观看一区二区| 91在线看国产| 国产在线播放一区二区三区| 亚洲午夜精品在线| 白白色 亚洲乱淫| 26uuu国产一区二区三区| 欧美精品一区二区久久婷婷| 国产日韩精品一区二区浪潮av| 美女精品一区二区| 欧美伦理影视网| 亚洲成在线观看| 色妹子一区二区| 亚洲日本一区二区| 成人app在线观看| 国产精品久久久久婷婷二区次| 成人深夜在线观看| 中文字幕av一区二区三区高| 不卡视频一二三四| 国产拍欧美日韩视频二区 | 亚洲精品日产精品乱码不卡| 色呦呦一区二区三区| 一区二区高清视频在线观看| 在线观看一区二区视频| 亚洲图片欧美一区| 欧美电影一区二区| 九一九一国产精品| 精品国产乱码久久久久久1区2区| 久久99精品国产麻豆婷婷洗澡| 欧美大片一区二区三区| 国产在线观看免费一区| 国产日韩欧美精品综合| 99久久综合国产精品| 亚洲欧美日韩国产中文在线| 9人人澡人人爽人人精品| 国产午夜精品在线观看| 91蜜桃在线免费视频| 亚洲高清一区二区三区| 日韩欧美国产不卡| 粉嫩av一区二区三区在线播放 | 综合分类小说区另类春色亚洲小说欧美| 99久久国产免费看| 亚洲一区二区三区影院| 91麻豆精品国产91久久久久久久久| 日韩av午夜在线观看| 精品国产99国产精品| 成人久久18免费网站麻豆| 依依成人综合视频| 69堂精品视频| 国产精品2024| 亚洲欧美国产高清| 欧美一级片免费看| 国产精品99久久久久久有的能看| 色狠狠桃花综合| 国产成人精品影视| 91麻豆精品国产| 在线看国产日韩| 久久久久88色偷偷免费| 884aa四虎影成人精品一区| 91丨porny丨首页| 欧美一级精品大片| 69久久99精品久久久久婷婷| 欧美日韩国产中文| 日韩欧美一区二区在线视频| 日韩电影在线一区| 欧美日韩三级视频| 成人黄色av电影| 久久99国产精品久久| 亚洲国产美女搞黄色| 国产日韩欧美a| 精品久久99ma| 欧美日韩色一区| 色婷婷国产精品综合在线观看| 国产麻豆精品在线| 日本欧美大码aⅴ在线播放| 夜夜夜精品看看| 国产精品久久免费看| 久久先锋影音av鲁色资源网| 91麻豆精品国产91久久久久久| 欧洲在线/亚洲| 成人免费视频网站在线观看| 国产一区久久久| 久久精品国产免费看久久精品| 亚洲午夜在线电影| 一区二区在线观看免费视频播放 | 中文字幕永久在线不卡| 国产亚洲一二三区| 欧美成人艳星乳罩| 欧美一二区视频| 9191成人精品久久| 精品视频在线视频| 欧美色倩网站大全免费| 在线一区二区三区做爰视频网站| 成年人国产精品| 国产精品99久久久久久宅男|