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

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

?? ch11_at89cxx 刻錄程序徹底公開.c

?? 8051單片機刻錄程序徹底公開 用于單片機刻錄器
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* AT89CXX programmer for FLAG51 */
/* program name:AT2051.C        */
/* writtern by Lin Shen Mou        */
/* 1996/02/28 add AT89C2051,1051   */
/* 1997/08/15 add AT89S8252        */
/* 1999/06/18 add AT89C4051        */

#include "c8051io.h"
#include "c8051sr.h"


#define AT_PIN     40
#define rate       0xfd
#define t_of_delay 8
#define AUTOLOCK   1
#define AT2051     0
#define AT4051     1
#define AT1051     2
#define AT89C51    3
#define AT89C52    4
#define AT89S8252  5
#define AT90S1200  6

#define AVR_ERASE       0x80
#define AVR_PGM_FLASH   0x10
#define AVR_PGM_EEPROM  0x11
#define AVR_FLASH_READ  0x02
#define AVR_EEPROM_READ 0x03
#define AVR_FUSE        0x40
#define AVR_LOCK_BIT    0x20
#define AVR_STATUS_READ 0x04
#define AVR_SIGNATURE_READ 0x08

#define IN_BUF   0xa000 /* a000-bfff */
#define OUT_BUF  0xc000 /* c000-dfff */
#define BUFFER   0xa000 /* a000-bfff 8192 bytes */

#define PPIPA1   0x6000
#define PPIPB1   0x6001
#define PPIPC1   0x6002
#define PPICTL1  0x6003

#define PPIPA2   0x7000
#define PPIPB2   0x7001
#define PPIPC2   0x7002
#define PPICTL2  0x7003

#define COUNT   65536-10000 /* 10 mS */
#define TmsH    (COUNT)/256
#define TmsL    (COUNT)%256
#define CMD_LINE 23

extern struct   special_function_bits   SFB;

const char hex_table[20] = { "0123456789ABCDEF" };
const char command[25][80]={
{  "*********** AT89 Series of FLASH Microcontroller programmer ************"},
{  "? or /    - Commands list                                          "},
{  "B lank    - Blank check of AT89C5X/X051                            "},
{  "E rase    - Erase internal flash memory                            "},
{  "P rogram  - Programming from RAM BUFFER                            "},
{  "A uto     - Erase,Blank check,Programming then Lock bit1 & bit2    "},
{  "V erify   - Verify AT89CXX & RAM BUFFER                            "},
{  "s ignature- Read signature of the chip                             "},
{  "L file    - Download binary file from PC to RAM BUFFER             "},
{  "S file    - Upload RAM BUFFER to PC                                "},
{  "1         - Lock bit1 of AT89CXX   (Futher programming is disabled)"},
{  "2         - Lock bit1+2 of AT89CXX (Verify is disabled)            "},
{  "3         - Lock bit1+2+3 of AT89C51/AT89C52/AT89S8252             "},
{  "R ead     - Read then save at RAM BUFFER                           "},
{  "D isplay  - Display RAM BUFFER (A000H-BFFFH)                       "},
{  "C hecksum - Calculate RAM BUFFER checksum                          "},
{  "X         - Clear memory RAM BUFFER                                "},
{  "F use     - Serial programmable Fuse ENABLE/DISABLE setting of AT89S8252"},
{  "*         - Start programming loop life_test                       "},
{  "O         - back to DOS shell                                      "},
{  "Q uit     - Exit                                                   "},
{  "<SHIFT>+1,2,3,4,5,6-Select AT89C1051/2051/4051/51/52/89S8252/AT90S1200"},
{  "***********************************************************************"}
  };
const char dummy1[100]  = { "XXXXX" };
const char title0[80]    =
     { "ATMEL's AT89 Microcontroller programmer V7.0" };
const char title1[80]    =
     { "program written by Lin S.M.  '99/06/18" };

const char title2[80] =
     { "Any questions about ATMEL FLASH Microcontroller,please call:" };
const char title3[80] =
     { "Technical HOT-LINE :886-7-3955152"    };
const char title4[80] =
     { "          or E-mail:chipware@chipware.com.tw"     };
const char title5[80] =
     { "Please read [README] file in disk before you program AT89CXX" };

const char dummy2[40]  = { "XXXXX" };
const char msg_at90s1200[12]={ "AT90S1200" };
const char msg_at89s8252[12]={ "AT89S8252" };
const char msg_at89c51[10]  ={ "AT89C51" };
const char msg_at89c52[10]  ={ "AT89C52" };
const char msg_at89c4051[12]={ "AT89C4051" };
const char msg_at89c2051[12]={ "AT89C2051" };
const char msg_at89c1051[12]={ "AT89C1051" };

const char msg_erase[40]    ={ "Erase flash memory" };
const char msg_blank[40]    ={ "Blank check..." };
const char msg_no_blank[40] ={ "Blank check fail !!" };
const char msg_verify[40]   ={ "Verify..." };
const char msg_verify_ok[40]={ "Verify OK on code data" };
const char msg_no_match[40] ={ "Verify fail !!"      };
const char msg_pgm[40]      ={ "Programming ..." };
const char msg_pass[40]     ={ "FLASH MEMORY programmed successfully" };
const char msg_fail[40]     ={ "Fail in programming" };

int display_char(char);
int display_char_no_wait(char);
int display_addr(unsigned int);
int display_str(char *s,int lf);
int display(char *s);
int test_count=0;
int flash_type;
int pgm_length,eeprom_length;
int checksum=0;
int vpp=12;

int main()
{
 int result;
 int s_in;
 int q;
 int prompt;

        init_8255(0x92,0x82);
        flash_type=read_CODE(0x7fff) & 0x07;
        if (flash_type<0 || flash_type>3) flash_type=AT89C51;
        select_pgm_length();

        for (q=1;q<=0x80;q*=2)
        { P1=q; delay(10); }
        P1=0;

        enable_int0();
        power_on_message();

        line_feed();
        display_str(title0,1);
        display_str(title1,1);
        line_feed();
        delay(200);
        display_str(title2,1);
        display_str(title3,1);
        display_str(title4,1);
        display_str(title5,1);
        line_feed();

        display_str("System ROM(0000H-7FFFH) checksum ",0);
        clear_buffer(8192);
/*      check_rom();    */

        display_str("OK!",1);
        display_str("System RAM(8000H-FFFFH) R/W function test -",1);
        check_mem();

        display_prompt();
 beep_start();

        while (1) {
         if (flash_type==AT2051 || flash_type==AT4051|| flash_type==AT1051 )
         {
          check_read_and_verify_sw();
          check_pgm_sw();
         }

        if (SFB.RI==1) {
        s_in=SBUF; /* read a command */
        SFB.RI=0;  /* reset RI flag */
        prompt=1;
        switch(s_in) {
         case '*':
                  line_feed();
                  life_test();
                  break;
         case 'F':
         case 'f':
                  line_feed();
                  if (flash_type==AT89S8252) {
                   beep_start();
                   result=read_at89s8252_SPF();
                   if (result==0) select_SPF(1); /* enable-> disable */
                   else           select_SPF(0); /* disable->enable  */
                   }
                  else beep_err();
                  break;
         case 'L':
         case 'l':
                  download_file();
                  beep_ok();
                  break;
         case 's':
                  line_feed();
                  show_signature(0);
                  beep_ok();
                  break;
         case 'r':
         case 'R':
                  line_feed();
                 display_str("Read then save into RAM BUFFER",1);
                  if (flash_type!=AT90S1200) checksum=chip_read();
                  else                       checksum=avr_flash_reading();
                  display_str("Checksum = ",0);
                  display_addr((unsigned int)checksum);
                  line_feed();
                  beep_ok();
                  break;
         case 'E':
         case 'e':
                  line_feed();
                  display_str(msg_erase,1);
                  if (flash_type !=AT90S1200) result=chip_erase();
                  else
                   { avr_erase();
                     result=avr_flash_blank();
                   }
                  if (result==0) display_str("Erase completed",1);
                  else           display_str("Erase fail!",1);
                  if (result==0) beep_ok();
                  else           beep_err();
                  break;
         case 'P':
         case 'p':if (flash_type !=AT90S1200) {
                   line_feed();
                   beep_start();
                   display_str(msg_erase,1);
                   result=chip_erase();
                   if (result==0) result=programming();
                  }
                  else
                  {
                   line_feed();
                   display_str("Programming AT90S1200...",1);
                   avr_flash_programming();
                   result=avr_flash_verify();
                  }

                  if (result==0) display_str(msg_pass,1);
                  else           display_str(msg_fail,1);
                  if (result==0) beep_ok();
                  else           beep_err();
                  if (result!=0)
                   {
                    show_fail_in_programming();
                    show_mail_box();
                   }
                  break;
         case 'S':
                  for (q=0;q<200;q++) delay_10ms();
                  upload_file();
                  break;
         case 'A':
         case 'a':
                  line_feed();
                  beep_start();
                  display_str(msg_erase,1);
                  chip_erase();
                  result=blank_check(32);
                  if (result==0) {
                   result=programming();
                  }
                  if (result==0) display_str(msg_pass,1);
                  else           display_str(msg_fail,1);

                  if (result==0) beep_ok();
                  else           beep_err();
                  if (result!=0)
                  {
                   show_fail_in_programming();
                   show_mail_box();
                  }
                 if (result==0) {
                  display_str("Lock bit1",1);
                  lock_bit1();
                  display_str("Lock bit2",1);
                  lock_bit2();
                  }
                  break;

         case 'V':
         case 'v':
                  line_feed();
                  if (flash_type !=AT90S1200)
                      result=verify(0); /* break if error happen */
                  else result=avr_flash_verify();

                  if (result==0) display_str(msg_verify_ok,1);
                  else           display_str(msg_no_match,1);
                  if (result==0) beep_ok();
                  else           beep_err();
                  break;
         case 'B':
         case 'b':
                  line_feed();
                  display_str("Blank checking...",1);
                  if (flash_type !=AT90S1200) result=blank_check(pgm_length);
                  else                        result=avr_flash_blank();
                  if (result==0) display_str("This chip is BLANK",1);
                  else           display_str("This chip is NOT BLANK!",1);
                  if (result==0) beep_ok();
                  else           beep_err();
                  show_signature(1);
                  break;
         case 'D':
         case 'd':
                   line_feed();
                   display_str("Display RAM BUFFER",1);
                   checksum=display_mem_block(BUFFER,BUFFER+pgm_length-1);
                   delay(50);
                   display_str("RAM BUFFER checksum = ",0);
                   display_addr((unsigned int)checksum);
                   line_feed();
                   break;
         case 'C':
         case 'c':
                  line_feed();
                  display_str("Calculate checksum = ",0);
                  checksum=calculate_checksum();
                  display_addr_woh((unsigned int)checksum);
                  line_feed();
                  break;
         case 'X':
         case 'x':
                  line_feed();
                  display_str("Clear RAM BUFFER to 00H",1);
                  clear_buffer(pgm_length);
                  beep_ok();
                  break;
         case '?':
         case '/':
                  line_feed();
                  command_list();
                  break;
         case '1':
                  line_feed();
                  display_str("Lock bit1",1);
                  lock_bit1();
                  beep_ok();
                  break;
         case '2':
                  line_feed();
                  display_str("bit2",1);
                  lock_bit2();
                  beep_ok();
                  break;
         case '3':
                  line_feed();
                  display_str("Lock bit3",1);
                  beep_ok();
                  break;
/*
         case 't':
         case 'T':
                  line_feed();
                  switch (flash_type)
                   {
                    case AT1051: flash_type=AT2051;
                                 display_str("Change type to AT89C2051 (2K)",1);
                                 break;
                    case AT2051: flash_type=AT4051;
                                 display_str("Change type to AT89C4051 (4K)",1);
                                 break;
                    case AT4051: flash_type=AT89C51;
                                 display_str("Change type to AT89C51 (4K)",1);
                                 break;
                    case AT89C51:flash_type=AT89C52;
                                 display_str("Change type to AT89C52 (8K)",1);
                                break;
                    case AT89C52:flash_type=AT89S8252;
                                 display_str("Change type to AT89S8252 (8K)",1);
                                 break;
                    case AT89S8252:flash_type=AT1051;
                                 display_str("Change type to AT89C1051 (2K)",1);
                                 break;
                    default:     break;
                   }
                  program_setting();
                  break;
*/
         case '!': line_feed();
                   flash_type=AT1051;
                   display_str("Change type to AT89C1051 (1K)",1);
                   program_setting();
                   break;
         case '@': line_feed();
                   flash_type=AT2051;
                   display_str("Change type to AT89C2051 (2K)",1);
                   program_setting();
                   break;
         case '#': line_feed(); flash_type=AT4051;
                   display_str("Change type to AT89C4051 (4K)",1);
                   program_setting();
                   break;
         case '$': line_feed(); flash_type=AT89C51;
                   display_str("Change type to AT89C51 (4K)",1);
                   program_setting();
                   break;
         case '%': line_feed(); flash_type=AT89C52;
                   display_str("Change type to AT89C52 (8K)",1);
                   program_setting();
                   break;
         case '^': line_feed(); flash_type=AT89S8252;
                   display_str("Change type to AT89S8252 (8K)",1);
                   program_setting();
                   break;
         case '&': line_feed();
                   flash_type=AT90S1200;
                   display("Change type to AT90S1200 (1K) ");
                   program_setting();
                   avr_8255_mode();
                   avr_read_mode();
                   break;
         case 0x0d:
         case 0x0a:
         case 0x00:
                  line_feed();
                  break;
         default:
                  line_feed();
                  display("Type '?' or '/' for help !");
                  beep_err();
                  break;
         }; /* end of switch */
         if (prompt==1) display_prompt();
        }
       } /* end of while (1) */
       return(0);
}    /* end of main program */


/* AT90S1200 programming code */
int avr_8255_mode()
{
        init_8255(0x80,0x82);   /* PPI1 all output,PPI2(PA,PC out),PB in */
        p20_rst_low();
        avr_bs_low();
        p20_rst_hi();
}

int avr_read_byte()
{
 int d;
        d=read_XDATA(PPIPB2);
        return(d);
}

int avr_read_mode()
{
        p20_write_byte(0xff); /* let PB out=FFH */
        avr_oe_hi();
        avr_wr_hi();
       avr_bs_low();
        p20_xtal1_low();
}

int avr_write_mode()
{
        avr_oe_hi();
        avr_wr_hi();
        avr_bs_low();
        p20_xtal1_low();
}

int avr_signature_reading()
{
 int d1,d2,d3;

/*      avr_8255_mode();        */
        p20_rst_12v();
        avr_command(AVR_SIGNATURE_READ);
        avr_load_lowaddr(0);
        avr_read_mode();
         avr_oe_low();
         d1=avr_read_byte();          /* read low byte */
         avr_oe_hi();

        avr_load_lowaddr(1);
        avr_read_mode();
         avr_oe_low();
         d2=avr_read_byte();          /* read low byte */
         avr_oe_hi();

        avr_load_lowaddr(2);
        avr_read_mode();
         avr_oe_low();
         d3=avr_read_byte();          /* read low byte */
         avr_oe_hi();

        p20_rst_hi();
        avr_idle();

        display_str("The AT90S1200 chip signatures are :",0);
        display_str(" (000H)=",0);  display_hex(d1);
        display_str("H,(001H)=",0); display_hex(d2);
        display_str("H,(002H)=",0); display_hex(d3);
        display_str("H",1);
}

int avr_flash_blank()
{
 int m,n,data;
 int err;

/*      avr_8255_mode();        */
        p20_rst_12v();
        avr_command(AVR_FLASH_READ);

        for (m=0,n=0,err=0;n<pgm_length;m+=1,n+=2)
        {
         avr_load_addr(m);
        p20_write_byte(0xff);
         avr_oe_low();  avr_bs_low();
         data=avr_read_byte();          /* read low byte */
         if (data!=0xff) { err=1; break; }

/*       avr_read_mode();       */
        p20_write_byte(0xff);
         avr_bs_hi();
         data=avr_read_byte();          /* read high byte */
         avr_oe_hi();
         if (data!=0xff) { err=1; break; }
         if ((m & 0x007f)==0) display_char('B');
        }
        line_feed();

        p20_write_byte(0xff);
        p20_rst_hi();
        return(err);
}

int avr_flash_verify()
{
 int m,n,data;
 int v,err;

       avr_8255_mode();
        p20_rst_12v();
        avr_command(AVR_FLASH_READ);

        for (m=0,n=0,err=0;n<pgm_length;m+=1,n+=2)
        {
         avr_load_addrall(m);
        p20_write_byte(0xff);
         avr_oe_low();  avr_bs_low();
         data=avr_read_byte();          /* read low byte */
         v=read_XDATA(BUFFER+n);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91.成人天堂一区| 欧美美女一区二区在线观看| 91香蕉视频在线| 日韩欧美在线综合网| 18欧美亚洲精品| 国产呦精品一区二区三区网站| 一本色道综合亚洲| 国产丝袜欧美中文另类| 日韩免费电影网站| 中文文精品字幕一区二区| 日韩黄色在线观看| 色老头久久综合| 日本女优在线视频一区二区| av高清不卡在线| 国产欧美综合在线| 国产精品综合一区二区三区| 欧美一区二区三区人| 丝袜a∨在线一区二区三区不卡| 91蜜桃视频在线| 亚洲欧美在线aaa| 成人禁用看黄a在线| 久久夜色精品国产欧美乱极品| 婷婷国产在线综合| 欧美亚洲日本国产| 亚洲综合一区二区精品导航| 91传媒视频在线播放| 亚洲天堂福利av| 99精品国产91久久久久久| 久久理论电影网| 国产麻豆精品视频| 中文字幕第一区综合| 国产一区二区三区最好精华液| 精品国产一区二区三区久久久蜜月 | 日韩国产精品久久久| 欧美午夜理伦三级在线观看| 亚洲精品视频在线观看免费| 91玉足脚交白嫩脚丫在线播放| 中文字幕在线不卡一区| 成人sese在线| 亚洲精品中文字幕乱码三区| jlzzjlzz欧美大全| 精品久久久久av影院| 久久99热这里只有精品| 日韩美女视频一区二区在线观看| 免费xxxx性欧美18vr| 欧美一区二区三区四区高清 | 99在线精品视频| 日韩一区欧美小说| 欧美日韩综合在线| 麻豆91精品视频| 久久久亚洲欧洲日产国码αv| 成人精品鲁一区一区二区| 国产精品女主播在线观看| 色婷婷亚洲综合| 日本视频中文字幕一区二区三区| 2欧美一区二区三区在线观看视频| 国产一区二区成人久久免费影院 | 欧美日精品一区视频| 天天色 色综合| 久久久久久久综合狠狠综合| 91免费视频网址| 免费成人在线观看| 国产精品久久久久久久久动漫| 欧美亚洲一区二区在线观看| 久久国产福利国产秒拍| 国产精品国产三级国产a| 欧美日韩国产高清一区二区| 高清不卡一区二区| 亚洲小少妇裸体bbw| 久久久美女毛片 | 一本色道**综合亚洲精品蜜桃冫 | 99久久综合精品| 日韩国产欧美在线播放| 欧美国产禁国产网站cc| 91精品国产一区二区人妖| 国产成人精品三级| 日韩 欧美一区二区三区| 国产精品久久久久永久免费观看| 91精品久久久久久久99蜜桃| jiyouzz国产精品久久| 麻豆成人久久精品二区三区红| 日韩久久一区二区| 精品国产电影一区二区| 欧美三级中文字| 91在线一区二区三区| 九九视频精品免费| 亚洲国产三级在线| 国产精品久久久久三级| 欧美大白屁股肥臀xxxxxx| 欧洲精品视频在线观看| 成人h动漫精品| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲美女区一区| 国产精品拍天天在线| 国产天堂亚洲国产碰碰| www国产亚洲精品久久麻豆| 欧美日韩国产三级| 欧美日韩在线播放一区| 色婷婷一区二区| 99精品视频一区| 成人av片在线观看| 成人福利视频在线看| 国产成人精品免费网站| 国产精品一区一区三区| 韩国v欧美v日本v亚洲v| 精彩视频一区二区三区| 久久狠狠亚洲综合| 久久99精品久久久久久久久久久久| 亚洲成av人片| 日韩精品成人一区二区三区 | 综合激情网...| 中文字幕中文乱码欧美一区二区| 国产日本欧美一区二区| 亚洲国产精品v| 国产精品伦一区| 亚洲欧美在线高清| 一区二区在线观看免费| 亚洲一区二区三区四区五区中文| 一级特黄大欧美久久久| 午夜精品免费在线观看| 性做久久久久久免费观看欧美| 丝袜美腿亚洲一区| 久久精品国产免费| 国产成人精品免费一区二区| 99国产欧美另类久久久精品| 色哦色哦哦色天天综合| 欧美酷刑日本凌虐凌虐| 欧美大片在线观看一区| 久久久高清一区二区三区| 国产精品久久久久久久久动漫| 亚洲精选一二三| 性欧美疯狂xxxxbbbb| 经典三级视频一区| aaa国产一区| 欧美精品v国产精品v日韩精品| 精品sm在线观看| 国产精品女主播av| 亚洲国产精品久久艾草纯爱| 久久精品久久综合| 国产91丝袜在线观看| 一本久久a久久精品亚洲| 日韩一区国产二区欧美三区| 中文字幕乱码日本亚洲一区二区| 有坂深雪av一区二区精品| 蜜桃精品视频在线| av在线不卡免费看| 欧美一区二区三区在线观看| 欧美国产成人在线| 日韩va亚洲va欧美va久久| 国产精品亚洲午夜一区二区三区| 欧美中文字幕久久| 亚洲精品在线免费播放| 亚洲美女免费在线| 国产精一品亚洲二区在线视频| 色老头久久综合| 精品久久久久一区二区国产| 亚洲摸摸操操av| 精品一二三四区| 欧美中文字幕不卡| 欧美国产精品久久| 蜜桃av噜噜一区| 在线观看免费视频综合| 久久久亚洲精品一区二区三区| 亚洲成人777| 99在线热播精品免费| 欧美精品一区视频| 亚洲成人av免费| 日本精品视频一区二区三区| 久久久久久久久伊人| 日韩av一级电影| 欧美性欧美巨大黑白大战| 国产精品成人一区二区三区夜夜夜| 久久99精品国产| 在线不卡免费欧美| 曰韩精品一区二区| 成+人+亚洲+综合天堂| 日韩精品中文字幕在线一区| 午夜精品久久久久久久久久| 91麻豆成人久久精品二区三区| 国产亚洲短视频| 精品亚洲免费视频| 日韩一区二区三区观看| 亚洲成a人片在线不卡一二三区| 97久久人人超碰| 国产精品免费丝袜| 成人午夜私人影院| 久久精品人人做人人综合| 久久成人综合网| 欧美一级电影网站| 视频一区视频二区中文字幕| 欧美日韩色综合| 亚洲香肠在线观看| 欧美日韩国产免费一区二区| 五月婷婷久久丁香| 在线成人小视频| 蜜臀av在线播放一区二区三区| 日韩欧美一级在线播放| 久久精品国产999大香线蕉| 欧美成人a视频| 国产露脸91国语对白|