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

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

?? isp.c

?? 絕對完整的UsbISP的下載線制做過程和資料.rar
?? 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 = 0

void 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;
    //    spiHWdisable();

  } else {

    /* use hardware spi */
    ispTransmit = ispTransmit_hw;

  }
}
  
void ispDelay() {

  uint8_t starttime = TIMERVALUE;
  while ((uint8_t) (TIMERVALUE - starttime) < 12) { }
}

void ispConnect() {

  /* all ISP pins are inputs before */
  /* now set output pins */
  ISP_DDR |= (1 << ISP_RST) | (1 << ISP_SCK) | (1 << ISP_MOSI);

  /* 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 */

  if (ispTransmit == ispTransmit_hw) {
    spiHWenable();
  }
}

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_hw(uchar send_byte) {
  SPDR = send_byte;
  
  while (!(SPSR & (1 << SPIF)));
  return SPDR;
}
    
uchar ispEnterProgrammingMode() {
  uchar check;
  uchar count = 32;

  while (count--) {
    ispTransmit(0xAC);
    ispTransmit(0x53);
    check = ispTransmit(0);
    ispTransmit(0);
    
    if (check == 0x53) {
      return 0;
    }

    spiHWdisable();
    
    /* pulse SCK */
    ISP_OUT |= (1 << ISP_SCK);     /* SCK high */
    ispDelay();
    ISP_OUT &= ~(1 << ISP_SCK);    /* SCK low */
    ispDelay();

    if (ispTransmit == ispTransmit_hw) {
      spiHWenable();
    }
  
  }
  
  return 1;  /* error: device dosn't answer */
}

uchar ispReadFlash(unsigned int address) {
  ispTransmit(0x20 | ((address & 1) << 3));
  ispTransmit(address >> 9);
  ispTransmit(address >> 1);
  return ispTransmit(0);
}


uchar ispWriteFlash(unsigned int address, uchar data, uchar pollmode) {

  /* 0xFF is value after chip erase, so skip programming 
  if (data == 0xFF) {
    return 0;
  }
  */

  ispTransmit(0x40 | ((address & 1) << 3));
  ispTransmit(address >> 9);
  ispTransmit(address >> 1);
  ispTransmit(data);

  if (pollmode == 0)
    return 0;

  if (data == 0x7F) {
    clockWait(15); /* wait 4,8 ms */
    return 0;
  } else {

    /* polling flash */
    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 --;
      }

    }
    return 1; /* error */
  }

}


uchar ispFlushPage(unsigned int address, uchar pollvalue) {
  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) {
    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一区二区三区免费野_久草精品视频
亚洲精品成人少妇| 国产大陆亚洲精品国产| 久久不见久久见中文字幕免费| 风间由美一区二区av101| 欧美性色黄大片手机版| 国产喂奶挤奶一区二区三区| 亚洲成年人影院| av综合在线播放| 久久影院电视剧免费观看| 亚洲综合色视频| 91色porny蝌蚪| 国产欧美视频一区二区三区| 久久精品72免费观看| 欧美日韩黄色一区二区| 一区二区三区在线观看欧美| 粉嫩13p一区二区三区| 2020日本不卡一区二区视频| 蜜臀av在线播放一区二区三区| 欧美在线观看一区二区| 亚洲日本在线视频观看| 高清不卡一区二区在线| 久久久久国产精品厨房| 国内成+人亚洲+欧美+综合在线 | 天天av天天翘天天综合网色鬼国产| 成人三级在线视频| 中文字幕高清不卡| 国产.欧美.日韩| 国产精品无人区| 成人av在线观| 亚洲免费观看高清完整版在线观看熊| 不卡高清视频专区| 国产精品成人免费| 91蜜桃视频在线| 亚洲精品亚洲人成人网 | 欧美一区二区三区四区高清| 亚洲午夜精品久久久久久久久| 色综合激情五月| 亚洲免费视频成人| 欧美日本韩国一区二区三区视频| 亚洲v精品v日韩v欧美v专区| 欧美精品tushy高清| 喷水一区二区三区| 欧美v亚洲v综合ⅴ国产v| 久久爱www久久做| 国产午夜精品久久久久久久 | 91精品中文字幕一区二区三区 | 亚洲黄色免费电影| 欧美在线小视频| 裸体健美xxxx欧美裸体表演| 欧美电影免费观看高清完整版在| 激情亚洲综合在线| 国产精品色哟哟网站| 91麻豆国产香蕉久久精品| 午夜电影久久久| 欧美成人高清电影在线| 国产.精品.日韩.另类.中文.在线.播放| 欧美激情中文字幕| 欧美天天综合网| 国产一区欧美一区| 亚洲久草在线视频| 9191精品国产综合久久久久久 | 欧美亚洲综合一区| 另类的小说在线视频另类成人小视频在线| 久久综合狠狠综合久久综合88| 高清av一区二区| 三级久久三级久久| 国产精品久久久久久久久免费樱桃 | 蜜桃av噜噜一区| 国产精品麻豆视频| 91精品国模一区二区三区| 国产不卡在线视频| 午夜激情久久久| 亚洲国产高清在线观看视频| 制服丝袜亚洲播放| 99精品视频一区二区三区| 丝袜a∨在线一区二区三区不卡| 2023国产一二三区日本精品2022| 在线观看欧美黄色| 国产在线精品一区二区三区不卡| 18涩涩午夜精品.www| 精品久久久三级丝袜| 欧洲视频一区二区| 丁香婷婷综合网| 蜜桃精品在线观看| 亚洲福中文字幕伊人影院| 国产精品网曝门| 精品久久久久久久人人人人传媒| 欧美中文字幕亚洲一区二区va在线| 韩国av一区二区三区四区| 亚洲va欧美va人人爽| 国产精品美女久久久久久久久久久| 日韩午夜电影av| 欧美亚洲国产一卡| 91视频观看免费| 成人中文字幕合集| 国产精品综合一区二区三区| 青青国产91久久久久久 | 日韩一区二区精品葵司在线| 在线免费精品视频| av中文字幕不卡| 成人av在线一区二区三区| 韩国视频一区二区| 蜜桃精品在线观看| 久久精品国产**网站演员| 日韩av午夜在线观看| 五月激情综合色| 亚洲国产精品一区二区久久| 亚洲精品日日夜夜| 亚洲综合精品自拍| 一区二区三区蜜桃| 亚洲国产精品久久艾草纯爱| 一区二区激情小说| 亚洲风情在线资源站| 一区二区三区欧美日| 一区二区三区鲁丝不卡| 亚洲一区二区三区四区在线| 亚洲综合色婷婷| 日韩va欧美va亚洲va久久| 日韩黄色片在线观看| 美日韩一区二区| 国产精一区二区三区| heyzo一本久久综合| 91丨porny丨国产| 在线观看免费视频综合| 欧美日韩日日摸| 欧美精品粉嫩高潮一区二区| 欧美一级黄色片| 久久久久久99精品| 亚洲视频中文字幕| 亚洲国产精品自拍| 久久成人18免费观看| 成人av集中营| 欧美偷拍一区二区| 欧美sm极限捆绑bd| 中文字幕免费不卡在线| 一区二区三区四区视频精品免费 | 五月婷婷激情综合网| 日本欧美韩国一区三区| 国产精品一品二品| 99vv1com这只有精品| 欧美日韩高清在线| 久久久久国产一区二区三区四区| 中文字幕综合网| 五月婷婷综合激情| 成人精品国产福利| 在线电影院国产精品| 国产日韩精品一区二区浪潮av| 国产午夜精品一区二区三区嫩草| 国产精品免费丝袜| 日韩和欧美一区二区三区| 国产成人av一区二区三区在线| 91久久精品午夜一区二区| 欧美一卡在线观看| 国产精品乱人伦中文| 亚洲午夜激情av| 国产伦精品一区二区三区免费迷| 91丨porny丨户外露出| 91精品国产91热久久久做人人 | 26uuu色噜噜精品一区二区| 自拍偷拍国产精品| 极品美女销魂一区二区三区免费| 97成人超碰视| 精品日韩一区二区三区免费视频| 亚洲欧美国产高清| 国产乱人伦精品一区二区在线观看| 91在线视频播放| 久久亚洲精精品中文字幕早川悠里 | 国内一区二区视频| 欧美日韩一区二区三区视频| wwwwxxxxx欧美| 日本中文字幕一区二区视频| va亚洲va日韩不卡在线观看| 欧美一级搡bbbb搡bbbb| 一区二区三区**美女毛片| 国产成人在线电影| 欧美一级免费大片| 亚洲一区二区三区四区不卡| 成人免费视频caoporn| 欧美不卡一区二区三区| 一区二区三区电影在线播| 粉嫩久久99精品久久久久久夜| 欧美一级二级三级蜜桃| 丝袜美腿一区二区三区| 91女人视频在线观看| 欧美激情艳妇裸体舞| 久久黄色级2电影| 91精品国产入口| 亚洲777理论| 色94色欧美sute亚洲线路二 | 欧美在线免费观看亚洲| 国产精品短视频| 成人国产视频在线观看| 51精品秘密在线观看| 亚洲午夜视频在线观看| 色婷婷久久久亚洲一区二区三区| 欧美经典一区二区| 成人性生交大片免费看视频在线| 精品成人佐山爱一区二区| 蜜臀va亚洲va欧美va天堂| 欧美一区二区三区日韩|