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

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

?? isp.c

?? AVR下載器設計progisp166
?? C
字號:
/*  isp.c - part of USBasp  Autor..........: Thomas Fischl <tfischl@gmx.de>   Description....: Provides functions for communication/programming                   over ISP interface  Licence........: Free under certain conditions. See Documentation.  Creation Date..: 2005-02-23  Last change....: 2005-04-20*/#include <avr/io.h>#include "isp.h"#include "clock.h"#define spiHWdisable() SPCR = 0void spiHWenable() {  	/* enable SPI, master, 375kHz SCK */   	SPCR = (1 << SPE) | (1 << MSTR) | (1 << SPR1);   	SPSR = (1 << SPI2X);}void ispSetSCKOption(uchar option) {  if (option == 0) {    /* use software spi */    ispTransmit = ispTransmit_sw;  } else {    /* use hardware spi */	ispTransmit = ispTransmit_hw;  }}  void ispDelay() {  uint8_t starttime = TIMERVALUE;  while ((uint8_t) (TIMERVALUE - starttime) < 12) { }}void ispDelay_5x() {  uint8_t starttime = TIMERVALUE;  while ((uint8_t) (TIMERVALUE - starttime) < 2) { }}void ispConnect() {  /* all ISP pins are inputs before */  /* now set output pins */  ISP_DDR |= (1 << ISP_RST) | (1 << ISP_SCK) | (1 << ISP_MOSI);	if(chip==ATM){			/* reset device */ 		ISP_OUT &= ~(1 << ISP_RST);   /* RST low */  	ISP_OUT &= ~(1 << ISP_SCK);   /* SCK low */  		/* positive reset pulse > 2 SCK (target) */  	ispDelay();  	ISP_OUT |= (1 << ISP_RST);    /* RST high */  	ispDelay();                  	ISP_OUT &= ~(1 << ISP_RST);   /* RST low */  	ispDelay();  	if(ispTransmit==ispTransmit_hw){    	spiHWenable();  	}else{spiHWdisable();}/////////////////////////////////////////////////////////////////////////////////////////////
	
	
	    }else{  	  /* reset device */
	spiHWdisable();/////////////////////////////////////////////////////////////////////////////////////////////  	ISP_OUT |= (1 << ISP_RST);   /* RST high */  	ISP_OUT &= ~(1 << ISP_SCK);   /* SCK low */  		/* positive reset pulse > 2 SCK (target) */  	ispDelay();  	ISP_OUT &= ~(1 << ISP_RST);    /* RST low */ 		ispDelay();                  	ISP_OUT |= (1 << ISP_RST);   /* RST high */  	ispDelay();	}}void ispDisconnect() {    /* set all ISP pins inputs */  ISP_DDR &= ~((1 << ISP_RST) | (1 << ISP_SCK) | (1 << ISP_MOSI));  /* switch pullups off */  ISP_OUT &= ~((1 << ISP_RST) | (1 << ISP_SCK) | (1 << ISP_MOSI));  /* disable hardware SPI */  spiHWdisable();}uchar ispTransmit_sw(uchar send_byte) {  uchar rec_byte = 0;  uchar i;  for (i = 0; i < 8; i++) {    /* set MSB to MOSI-pin */    if ((send_byte & 0x80) != 0) {      ISP_OUT |= (1 << ISP_MOSI);  /* MOSI high */    } else {      ISP_OUT &= ~(1 << ISP_MOSI); /* MOSI low */    }    /* shift to next bit */    send_byte  = send_byte << 1;    /* receive data */    rec_byte = rec_byte << 1;    if ((ISP_IN & (1 << ISP_MISO)) != 0) {      rec_byte++;    }    /* pulse SCK */    ISP_OUT |= (1 << ISP_SCK);     /* SCK high */    ispDelay();    ISP_OUT &= ~(1 << ISP_SCK);    /* SCK low */    ispDelay();  }      return rec_byte;}uchar ispTransmit_5x(uchar send_byte) {  uchar rec_byte = 0;  uchar i;  for (i = 0; i < 8; i++) {    /* set MSB to MOSI-pin */    if ((send_byte & 0x80) != 0) {      ISP_OUT |= (1 << ISP_MOSI);  /* MOSI high */    } else {      ISP_OUT &= ~(1 << ISP_MOSI); /* MOSI low */    }    /* shift to next bit */    send_byte  = send_byte << 1;    /* receive data */    rec_byte = rec_byte << 1;    if ((ISP_IN & (1 << ISP_MISO)) != 0) {      rec_byte++;    }    /* pulse SCK */    ISP_OUT |= (1 << ISP_SCK);     /* SCK high */    ispDelay_5x();    ISP_OUT &= ~(1 << ISP_SCK);    /* SCK low */    ispDelay_5x();  }      return rec_byte;}uchar ispTransmit_hw(uchar send_byte) {  SPDR = send_byte;    while (!(SPSR & (1 << SPIF)));  return SPDR;}uchar ispEnterProgrammingMode() {  uchar check;  uchar count=32;//這里改成32 其中16次嘗試高速模式,16次嘗試低速模式  chip=ATM;
  ispTransmit=ispTransmit_hw;////////////////////////////////////////////////////////////  while(count--){
  	ispConnect();/////////////////////////////////////////////////////////////////////////    ispTransmit(0xAC);    ispTransmit(0x53);    check=ispTransmit(0);    ispTransmit(0);       if(check==0x53){      return 0;    }
/****************************************************************************************/    if(count<16)//當高速模式無法工作時,采用低速模式
	{
	spiHWdisable();
	ispTransmit=ispTransmit_sw;//這里把編程速度調低
	}
/****************************************************************************************/
	spiHWdisable();        /* pulse SCK */    ISP_OUT|=(1<<ISP_SCK);     /* SCK high */    ispDelay();    ISP_OUT&= ~(1<<ISP_SCK);    /* SCK low */    ispDelay();    if(ispTransmit==ispTransmit_hw){      spiHWenable();    }    }//while(count--)  count=16;  chip=S5x;  if(ispTransmit==ispTransmit_hw){  	spiHWdisable();  	ispTransmit=ispTransmit_5x;  } 
  while(count--){
  	ispConnect();///////////////////////////////////////////////////////////////////////////////////    ispTransmit(0xAC);    ispTransmit(0x53);    ispTransmit(0);    check=ispTransmit(0);        if(check==0x69){      return 0;    }        /* pulse SCK */    ISP_OUT|=(1<<ISP_SCK);     /* SCK high */    ispDelay();    ISP_OUT&= ~(1<<ISP_SCK);    /* SCK low */    ispDelay();    }    return 1;  /* error: device dosn't answer */}uchar ispReadFlash(unsigned int address) {	if(chip==ATM){ 	 ispTransmit(0x20|((address & 1)<<3));  	ispTransmit(address>>9);  	ispTransmit(address>>1);  }else{  	ispTransmit(0x20);  	ispTransmit(address>>8);  	ispTransmit(address);  }  return ispTransmit(0);}uchar ispWriteFlash(unsigned int address, uchar data, uchar pollmode) {	if(chip==ATM){  	ispTransmit(0x40|((address&1)<<3));  	ispTransmit(address>>9);  	ispTransmit(address>>1);  	ispTransmit(data);  	if(pollmode==0)return 0;  	if(data == 0x7F){    	clockWait(15);    	return 0; 	  }else{    	uchar retries=30;    	uint8_t starttime=TIMERVALUE;    	while(retries!=0){    	  if(ispReadFlash(address)!=0x7F)return 0;         	  if((uint8_t)(TIMERVALUE-starttime)>CLOCK_T_320us){					starttime=TIMERVALUE;					retries--;    	  }    	}    }   }else{      ispTransmit(0x40);  	ispTransmit(address >> 8);  	ispTransmit(address);  	ispTransmit(data);  	return 0;   }   return 1; /* error */}uchar ispFlushPage(unsigned int address, uchar pollvalue) {  
  //ispSetSCKOption(ISP_SCK_SLOW);///////////////////////////////////
  ispTransmit(0x4C);  ispTransmit(address >> 9);  ispTransmit(address >> 1);  ispTransmit(0);   if (pollvalue == 0xFF) {    clockWait(15);    return 0;  } else {    /* polling flash */    uchar retries = 30;    uint8_t starttime = TIMERVALUE;    while (retries != 0) {      if (ispReadFlash(address) != 0xFF) {	//ispSetSCKOption(ISP_SCK_FAST);///////////////////////////////////////
	return 0;      };      if ((uint8_t) (TIMERVALUE - starttime) > CLOCK_T_320us) {	starttime = TIMERVALUE;	retries --;      }    }    return 1; /* error */  }    }uchar ispReadEEPROM(unsigned int address) {  ispTransmit(0xA0);  ispTransmit(address >> 8);  ispTransmit(address);  return ispTransmit(0);}uchar ispWriteEEPROM(unsigned int address, uchar data) {  ispTransmit(0xC0);  ispTransmit(address >> 8);  ispTransmit(address);  ispTransmit(data);  clockWait(30); // wait 9,6 ms   return 0;  /*   if (data == 0xFF) {    clockWait(30); // wait 9,6 ms     return 0;  } else {    // polling eeprom     uchar retries = 30; // about 9,6 ms     uint8_t starttime = TIMERVALUE;    while (retries != 0) {      if (ispReadEEPROM(address) != 0xFF) {	return 0;      };      if ((uint8_t) (TIMERVALUE - starttime) > CLOCK_T_320us) {	starttime = TIMERVALUE;	retries --;      }    }    return 1; // error   }  */}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人综合在线观看| 国产精品―色哟哟| 在线这里只有精品| 成人免费看黄yyy456| 久久电影网电视剧免费观看| 亚洲成av人片在www色猫咪| 亚洲欧美日韩国产中文在线| 亚洲男人的天堂网| 亚洲一区二区三区爽爽爽爽爽| 亚洲欧美激情小说另类| 亚洲午夜久久久久久久久久久 | 日韩国产精品久久| 日韩精品成人一区二区三区| 免费视频一区二区| 激情小说亚洲一区| 99久久伊人精品| 欧美午夜片在线观看| 91精品国产一区二区人妖| 欧美一区二区三区婷婷月色| 亚洲精品一区二区三区福利| 欧美高清在线精品一区| 一区二区三区精品在线观看| 日日夜夜精品视频天天综合网| 国产在线一区二区综合免费视频| 国产成人午夜精品影院观看视频| 91在线国产福利| 91精品国产综合久久精品性色| 久久久久国产成人精品亚洲午夜| 综合在线观看色| 久久国产夜色精品鲁鲁99| 不卡av在线免费观看| 欧美日韩一区二区欧美激情 | 国产美女精品一区二区三区| 99久久综合99久久综合网站| 欧美片在线播放| 中文字幕欧美激情一区| 天堂资源在线中文精品| 成人网在线免费视频| 91精品久久久久久蜜臀| 亚洲国产成人私人影院tom| 五月天中文字幕一区二区| 国产不卡一区视频| 日韩午夜在线影院| 一区二区激情视频| 福利视频网站一区二区三区| 宅男噜噜噜66一区二区66| 国产精品久99| 久久se这里有精品| 欧美日韩国产免费| 亚洲欧美视频一区| 国产精品一区二区久激情瑜伽| 欧美日韩在线不卡| 亚洲欧美激情小说另类| 国产成人亚洲综合a∨猫咪| 精品久久久久久久久久久院品网| 一区二区三区产品免费精品久久75| 国产一区二区三区免费| 在线不卡欧美精品一区二区三区| 亚洲六月丁香色婷婷综合久久| 国产成人综合在线观看| 欧美一级片免费看| 亚洲6080在线| 欧美日韩一区视频| 亚洲高清久久久| 欧洲精品一区二区三区在线观看| 国产精品免费网站在线观看| 国内精品不卡在线| 国产性做久久久久久| 国产呦萝稀缺另类资源| 26uuu国产日韩综合| 国产一区二区三区四| 久久夜色精品一区| 国模少妇一区二区三区| 久久久三级国产网站| 国产在线视频一区二区| 国产蜜臀97一区二区三区| 国产精品影视网| 欧美国产日韩精品免费观看| 国产精品一区在线| 国产精品久久久久婷婷二区次| 国产a级毛片一区| 国产精品成人一区二区三区夜夜夜| 成人免费的视频| 1区2区3区国产精品| 91福利国产成人精品照片| 亚洲综合激情网| 欧美区在线观看| 美女被吸乳得到大胸91| 久久久久国产成人精品亚洲午夜| 成人小视频在线| 国产精品免费看片| 在线一区二区三区做爰视频网站| 亚洲国产欧美日韩另类综合 | 欧美一区二区三区在线| 久久成人综合网| 欧美国产精品久久| 色国产综合视频| 图片区小说区国产精品视频| 欧美mv和日韩mv国产网站| 国产不卡在线一区| 一区二区三区国产| 亚洲精品在线一区二区| 成人毛片老司机大片| 亚洲成人激情社区| 久久久综合激的五月天| 成人av集中营| 丝袜美腿高跟呻吟高潮一区| 久久精品视频免费观看| 日本道色综合久久| 精品一区二区三区蜜桃| 一区二区在线观看免费视频播放| 欧美一级午夜免费电影| 一本色道久久综合亚洲91 | 久久久99久久精品欧美| 色婷婷久久久综合中文字幕| 看电视剧不卡顿的网站| 亚洲欧美激情插| 日韩欧美国产电影| 欧美三级韩国三级日本一级| 国产精品一区2区| 天天综合天天综合色| 国产精品色哟哟网站| 精品国产三级电影在线观看| 色综合久久久久综合体| 国产精品99精品久久免费| 日本va欧美va瓶| 亚洲一二三四在线| 最新日韩av在线| 国产拍揄自揄精品视频麻豆| 日韩一级二级三级| 欧美日韩成人高清| 色视频一区二区| av在线播放不卡| 国产成人一区在线| 经典一区二区三区| 日本一区中文字幕| 天天色天天操综合| 亚洲国产精品久久久久秋霞影院| 中文字幕欧美日本乱码一线二线| 精品国产一区二区三区久久久蜜月 | 久久超级碰视频| 婷婷久久综合九色综合绿巨人| 亚洲视频香蕉人妖| 国产精品久久影院| 国产精品乱人伦一区二区| 国产日韩精品久久久| 国产午夜精品一区二区三区视频| 精品日韩av一区二区| 欧美电影影音先锋| 欧美一级欧美三级在线观看 | 国产主播一区二区三区| 麻豆国产精品视频| 免费高清视频精品| 美女网站视频久久| 久久国产精品99精品国产| 麻豆精品一二三| 久久99久久久欧美国产| 国内成人免费视频| 国产精品自拍三区| 国产99精品国产| www.99精品| 在线一区二区视频| 欧美一区二区三区日韩| 精品久久久久久久久久久久包黑料 | 国产xxx精品视频大全| 精品制服美女丁香| 国产一区二区在线观看免费| 国产一区二区三区最好精华液| 蜜臀久久99精品久久久画质超高清| 美女精品自拍一二三四| 美腿丝袜在线亚洲一区| 国产一区二区调教| 99视频精品在线| 欧美午夜理伦三级在线观看| 欧美一级二级在线观看| 欧美丰满嫩嫩电影| 欧美精品一区二区不卡| 久久精品日产第一区二区三区高清版| 国产欧美精品一区二区三区四区| 国产精品视频线看| 一区二区在线免费| 另类小说色综合网站| av在线播放成人| 91精品在线免费| 国产片一区二区三区| 亚洲一区二区四区蜜桃| 国产美女在线精品| 在线区一区二视频| 久久久精品国产免大香伊| 亚洲伦理在线精品| 国内一区二区在线| 欧日韩精品视频| 国产精品色哟哟| 伦理电影国产精品| 日本高清免费不卡视频| 久久青草国产手机看片福利盒子| 亚洲美女一区二区三区| 久久精品国产99国产| 欧美视频在线观看一区二区| 国产偷国产偷精品高清尤物|