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

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

?? copyer.c

?? SST39VFXXX系列閃存拷貝機
?? C
字號:
#include "STC5X.H"
#include <intrins.h>
#include <absacc.h>

sbit SFLS =  P4^1;    //FLASH選擇
sbit CHIP =  P3^2;    //外接跳線芯片選擇,置0為4MbitFLASH,置1為2MbitFLASH,可由程序自定義不同的FLASH
sbit BUZ  =  P1^7;    //指示燈
sbit STAR =  P1^3;    //啟動按鈕

sbit A16  =  P1^0;    //FLASH高于bit15地址
sbit A17  =  P1^2;
sbit A18  =  P1^1;

#define   S_HZK          SFLS = 0
#define   S_SAV          SFLS = 1

#define   PAGE0  A18=0; A17=0; A16=0;
#define   PAGE1  A18=0; A17=0; A16=1;
#define   PAGE2  A18=0; A17=1; A16=0;
#define   PAGE3  A18=0; A17=1; A16=1;
#define   PAGE4  A18=1; A17=0; A16=0;
#define   PAGE5  A18=1; A17=0; A16=1;
#define   PAGE6  A18=1; A17=1; A16=0;
#define   PAGE7  A18=1; A17=1; A16=1;
#define   PAGER  A18=1; A17=1; A16=0;
#define   PAGEM  A18=1; A17=1; A16=1;

#define  BAUT9600     0xf4           //9600@22.1184M/6T
#define  FALSE        0
#define  TRUE         1
#define  false        0
#define  true         1

//這里如果有字符串寫起來會更簡潔
unsigned char code  EraseChip[18] = {0x0d,0x0a,'E','r','a','s','e',' ','c','h','i','p','.','.','.','.','.','.'};
unsigned char code  StartProgrammer[21] = {0x0d,0x0a,'S', 't', 'a','r','t',' ','p','r','o','g','r','a','m','.','.','.','.','.','.'};
unsigned char code  VerifyChip[19] = {0x0d,0x0a,'V','e','r','i','f','y',' ','c','h','i','p','.','.','.','.','.','.'};
unsigned char code  ProSuc[22] = {0x0d,0x0a,'V','e','r','i','f','y',' ','s','u','c','c','e','s','s','f','u','l','l','y','.'};
unsigned char code  ProFail[16] = {0x0d,0x0a,'V','e','r','i','f','y',' ','f','a','i','l','e','d','.'};
unsigned char code  Dot[1] = '.';
unsigned char       ledlen,ledfls,ledon;
    
/*================================================================
 * 函 數 名:  inichip
 * 參    數:  none
 * 功能描述:
 *            初始寄存器
 * 返 回 值:  none
 * 作    者:  uCore
 * 修改日期:  2008-10-21 00:21
===================================================================*/
void inichip(void)
 {
   SCON  = 0x50;       //SCON: serail mode 1, 8-bit UART, enable ucvr (REN=1)
   TMOD  = 0x21;       //TMOD: timer 1, mode 2, 8-bit reload

   TH1   = BAUT9600;   //Baud:4800  fosc=11.0592MHz
   IE    = 0xA0;       //EA - ET2 ES ET1 EX1 ET0 EX0
   TCON  = 0x54;       //TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0       //外部中斷1為跳變觸發

   T2CON=0x04;
   TH2 = 0x4b;               // 定時器初值
   TL2 = 0xfd;
   TR2 = 1;

   AUXR=0x03;               //禁用內部擴展RAM
 }
 
/*================================================================
 * 函 數 名:  timer2Int
 * 參    數:  none
 * 功能描述:
 *            定時器2中斷處理
 * 返 回 值:  none
 * 作    者:  uCore
 * 修改日期:  2008-10-21 00:21
===================================================================*/
void timer2Int(void) interrupt 5
 {
   TF2 = 0;     // 溢出標志必須由軟件清零
   EXF2 = 0;    // 捕獲標志必須由軟件清零
   TH2 = 0x4b;  // 定時器初值50mS
   TL2 = 0xfd;

   if(ledlen)          //這里由于不缺資源,這幾句效率可能不高,呵呵
     --ledlen;
     else
       {
         if(ledon)
           {
             BUZ = !BUZ;
             ledlen = ledfls;
           }
       }
 }
 
/*================================================================
 * 函 數 名:  SendPackageToCom
 * 參    數:  dat: 要發送的數據指針; slen: 長度
 * 功能描述:
 *            查詢方式發送數據串
 * 返 回 值:  none
 * 作    者:  uCore
 * 修改日期:  2008-10-21 00:22
===================================================================*/
void SendPackageToCom(unsigned char *dat, unsigned char slen)
 {
   unsigned char i;
   TI=0;
   i=0;
   while(i<slen)
     {
       SBUF=dat[i];
       while(!TI);           //Sending.......
       TI=0;
       ++i;
     }
 }
 
/*================================================================
 * 函 數 名:  TurnChipAdr
 * 參    數:  cadr: FLASH高于A15地址
 * 功能描述:
 *            選擇高地址
 * 返 回 值:  none
 * 作    者:  uCore
 * 修改日期:  2008-10-21 00:22
===================================================================*/
void TurnChipAdr(unsigned char cadr)
 {
   switch(cadr)
     {
       case 0:
              PAGE0;
              break;
       case 1:
              PAGE1;
              break;
       case 2:
              PAGE2;
              break;
       case 3:
              PAGE3;
              break;
       case 4:
              PAGE4;
              break;
       case 5:
              PAGE5;
              break;
       case 6:
              PAGER;
              break;
       case 7:
              PAGEM;
              break;
     }
 }
 
/*================================================================
 * 函 數 名:  Delay_1_0Milli_Seconds
 * 參    數:  none
 * 功能描述:
 *            延時10mS
 * 返 回 值:  none
 * 作    者:  ucore
 * 修改日期:  2006.11.29
===================================================================*/
void Delay_10_Milli_Seconds()
 {
   unsigned int i;
//   WDT_CONTR = 0x34;
   i=4000;
   while(i)--i;                      //10ts
 }

/*================================================================
 * 函 數 名:  Check_Toggle_Ready
 * 參    數:  dst: 地址
 * 功能描述:
 *            查詢FLASH忙狀態
 * 返 回 值:  none
 * 作    者:  uCore
 * 修改日期:  2008-10-21 00:22
===================================================================*/
void Check_Toggle_Ready (unsigned int Dst)
 {
   unsigned char Loop = TRUE;
   unsigned char PreData;
   unsigned char CurrData;
   unsigned long TimeOut = 0;

   PAGE0;
   PreData = XBYTE[Dst];
   PreData = PreData & 0x40;
   while ((TimeOut< 0x07FFFFFF) && (Loop))
     {
       CurrData = XBYTE[Dst];
       CurrData = CurrData & 0x40;
       if (PreData == CurrData)
               Loop = FALSE;   //ready to exit the while loop
       PreData = CurrData;
//       WDT_CONTR = 0x34;
       TimeOut++;
     }
 }

/*================================================================
 * 函 數 名:  Program_One_Byte
 * 參    數:  SrcByte: 數據 hadr:地址16-18 Dst: 地址A0-A15 
 * 功能描述:
 *            往FLASH寫入一個字節
 * 返 回 值:  none
 * 作    者:  uCore
 * 修改日期:  2008-10-21 00:26
===================================================================*/
void Program_One_Byte(unsigned char SrcByte,unsigned char hadr,unsigned int Dst)
{
   PAGE0;
   XBYTE[0x5555]=0xaa;
   XBYTE[0x2aaa]=0x55;
   XBYTE[0x5555]=0xa0;

   TurnChipAdr(hadr);

   XBYTE[Dst] = SrcByte;             // transfer the byte to destination
   Check_Toggle_Ready(Dst);    //wait for TOGGLE bit to get ready
}

/*================================================================
 * 函 數 名:  Erase_One_Sector
 * 參    數:  e_adr: 扇區地址 (39SF040:128,39SF020:64)
 * 功能描述:
 *            擦除一個扇區
 * 返 回 值:  none
 * 作    者:  uCore
 * 修改日期:  2008-10-21 00:22
===================================================================*/
int Erase_One_Sector(unsigned char e_adr)
{
        unsigned int  tmp;
        /*  Issue the Sector Erase command to 39VF040   */
        PAGE0;
        tmp=(e_adr%16)*0x1000;
        TurnChipAdr(e_adr/16);
        XBYTE[0x5555]=0xaa;
        XBYTE[0x2aaa]=0x55;
        XBYTE[0x5555]=0x80;
        XBYTE[0x5555]=0xaa;
        XBYTE[0x2aaa]=0x55;
        XBYTE[tmp] =0x30;                   /* write data 0x30 to the address       */

        Delay_10_Milli_Seconds();       /* check DATABOOK for the most  */
        Delay_10_Milli_Seconds();       /* check DATABOOK for the most  */
        Delay_10_Milli_Seconds();       /* check DATABOOK for the most  */
                                        /* accurate value -- Tse        */
}

/*================================================================
 * 函 數 名:  main
 * 參    數:  none
 * 功能描述:
 *            主函數
 * 返 回 值:  none
 * 作    者:  uCore
 * 修改日期:  2008-10-21 00:15
===================================================================*/
void main(void)
 {
   unsigned char sectors; 
   unsigned int raddr,waddr;
   unsigned char idata datbuf[128];
   unsigned char i,j;
   unsigned char pages;

   inichip();
   if(CHIP)                  //FLASH型號查詢
     sectors = 64;           //256K,64扇區
     else
       sectors = 128;        //512K

   BUZ = 1;
   while(1)
     {
       STAR = 1;
       if(!STAR)            //啟動
         {    
           ledon = 1;       //點亮LED,
           ledfls = 20;     //每秒開關一次
           SendPackageToCom(EraseChip,18);
           for(i=0; i<sectors; ++i)  //擦除
             {
               Erase_One_Sector(i);
               SendPackageToCom(Dot,1);
             }
           
           SendPackageToCom(StartProgrammer,21);
           pages = sectors/16;
           for(i=0; i<pages; ++i)                     //寫入
             {
               raddr = 0;
               waddr = 0;
               do{
                   //read;
                   TurnChipAdr(i);
                   S_HZK;                       //選擇源
                   j = 0;
                   while(j<128)                         //讀128byte
                     {
                       datbuf[j] = XBYTE[raddr+j];
                       ++j;
                     }
                   raddr = raddr + 128;
                   
                   //write
                   S_SAV;                    //選中目標
                   j = 0;
                   while(j<128)                         //讀128byte
                     {
                       Program_One_Byte(datbuf[j],i,waddr+j);
                       ++j;
                     }
                   waddr = waddr + 128;
                   if(raddr%4096==0)
                     SendPackageToCom(Dot,1);
                 }while(raddr != 0);
             }
           SendPackageToCom(VerifyChip,19);
           pages = sectors/16;
           for(i=0; i<pages; ++i)               //校驗
             {
               raddr = 0;
               TurnChipAdr(i);
               do{
                   //read;
                   S_HZK;
                   j = 0;
                   while(j<128)                         //讀128byte
                     {
                       datbuf[j] = XBYTE[raddr+j];
                       ++j;
                     }
                   
                   //write
                   S_SAV;
                   j = 0;
                   while(j<128)                         //讀128byte
                     {
                       if(datbuf[j] != XBYTE[raddr+j])goto FAIL;           //校驗失敗,退出
                       ++j;
                     }
                   raddr = raddr + 128;
                   if(raddr%4096==0)
                     SendPackageToCom(Dot,1);
                 }while(raddr != 0);
             }
FAIL:
           if((i == pages) && (raddr == 0))               //成功
             {
               SendPackageToCom(ProSuc,22);               
               ledon = 0;                                  //關閉LED
             }
             else
               {
                 SendPackageToCom(ProFail,16);
                 ledfls = 10;                              //出錯,LED閃爍速度加快
               }
         }
     }
 }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精彩视频一区二区| 欧美日韩www| 欧美精品tushy高清| 国产婷婷色一区二区三区四区| 亚洲天天做日日做天天谢日日欢| 日韩黄色一级片| 91毛片在线观看| 欧美韩国日本不卡| 奇米一区二区三区av| av不卡免费电影| www精品美女久久久tv| 午夜精品一区二区三区三上悠亚| 丁香婷婷综合色啪| 日韩免费成人网| 一区二区高清在线| 成人夜色视频网站在线观看| 91精品蜜臀在线一区尤物| 日韩美女视频一区| 国产69精品久久久久毛片| 日韩丝袜情趣美女图片| 亚洲成人激情综合网| 91天堂素人约啪| 中文字幕一区二区在线观看| 国产一区 二区 三区一级| 欧美一区二区三区精品| 亚洲国产一二三| 91精彩视频在线观看| 国产精品高潮久久久久无| 国产成人精品免费一区二区| 久久女同互慰一区二区三区| 午夜视频在线观看一区二区 | 国产精品色噜噜| 免费欧美日韩国产三级电影| 欧美性猛交xxxx黑人交| 亚洲综合在线观看视频| 色综合咪咪久久| 一区二区在线观看免费视频播放| 成人av在线播放网址| 国产精品超碰97尤物18| 成人免费va视频| 最新日韩在线视频| 色综合久久中文字幕综合网| 亚洲精品老司机| 欧美在线高清视频| 午夜精品久久久久久久久| 欧美日韩国产综合久久| 亚洲一区二区三区四区在线免费观看 | 成人永久aaa| 国产精品美女一区二区| 99精品视频在线观看免费| 亚洲三级在线播放| 欧美日韩午夜精品| 国产综合色产在线精品| 国产精品每日更新| 欧美日韩一区在线观看| 看片的网站亚洲| 久久精品一区四区| av网站一区二区三区| 亚洲福利视频一区二区| 日韩精品一区二区三区三区免费 | 日韩一区二区高清| 国产精品伊人色| 亚洲男同性视频| 3d动漫精品啪啪一区二区竹菊| 看片网站欧美日韩| 亚洲图片你懂的| 日韩小视频在线观看专区| 国产精品99久久久久久有的能看| 亚洲丝袜另类动漫二区| 91精品国产综合久久久久| 国产综合一区二区| 亚洲一二三区不卡| 国产午夜亚洲精品羞羞网站| 91香蕉视频在线| 麻豆91在线观看| 亚洲欧美激情小说另类| 91精品国产免费| av亚洲精华国产精华精| 精品一区二区国语对白| 最新国产精品久久精品| 日韩精品最新网址| 色88888久久久久久影院野外| 日本美女一区二区三区视频| 国产精品理伦片| 欧美大片在线观看一区二区| 99re8在线精品视频免费播放| 男人操女人的视频在线观看欧美| 国产精品污污网站在线观看| 欧美一级日韩一级| 在线亚洲高清视频| 国产精品一区不卡| 精品一区二区免费在线观看| 亚洲一区av在线| 中文字幕中文字幕一区二区| 久久久久九九视频| 欧美大片顶级少妇| 欧美日韩精品欧美日韩精品一综合| 国产成都精品91一区二区三| 麻豆视频一区二区| 日韩av电影免费观看高清完整版| 亚洲天天做日日做天天谢日日欢| 久久夜色精品一区| 精品欧美久久久| 91麻豆精品久久久久蜜臀| 欧洲人成人精品| 一本色道久久综合亚洲aⅴ蜜桃| 东方aⅴ免费观看久久av| 毛片不卡一区二区| 青青草97国产精品免费观看无弹窗版| 亚洲女人小视频在线观看| 国产精品拍天天在线| 国产欧美日产一区| 久久精品视频免费| 国产视频一区二区三区在线观看| 欧美α欧美αv大片| 日韩免费一区二区| 日韩一区二区三区视频在线观看| 正在播放亚洲一区| 91精品国产综合久久精品麻豆 | 成人avav影音| 福利电影一区二区| 成人性视频免费网站| 成人精品免费视频| 91亚洲永久精品| 一本高清dvd不卡在线观看| 91色porny蝌蚪| 91黄色激情网站| 欧美日韩亚洲综合一区二区三区| 欧美日韩免费在线视频| 欧美日韩国产首页| 欧美电影免费观看高清完整版 | 日韩毛片在线免费观看| 亚洲精品视频在线观看网站| 亚洲一级二级三级| 图片区日韩欧美亚洲| 蜜桃视频免费观看一区| 国产一区在线不卡| 国产高清成人在线| 99re66热这里只有精品3直播 | 亚洲麻豆国产自偷在线| 亚洲观看高清完整版在线观看 | 午夜激情久久久| 麻豆精品久久久| 成a人片亚洲日本久久| 91福利国产成人精品照片| 欧美日韩高清在线播放| 精品久久久久久亚洲综合网| 久久九九99视频| 亚洲综合精品自拍| 国产精品99久久久久久有的能看| 99久久99久久精品免费看蜜桃 | 日本人妖一区二区| 成人性视频免费网站| 欧美影视一区二区三区| 日韩片之四级片| 亚洲欧美自拍偷拍色图| 午夜av一区二区| 成人午夜大片免费观看| 欧美日韩亚洲另类| 国产精品每日更新在线播放网址| 视频一区国产视频| 成人福利视频网站| 日韩欧美中文字幕精品| 国产精品久线在线观看| 蜜臀av性久久久久蜜臀av麻豆 | 亚洲综合网站在线观看| 捆绑变态av一区二区三区| 色视频成人在线观看免| 亚洲精品在线电影| 亚洲超丰满肉感bbw| 成人午夜私人影院| 日韩视频123| 午夜影院久久久| 99久久99久久免费精品蜜臀| 精品久久久久久无| 肉色丝袜一区二区| 欧美日韩一级二级| 亚洲视频在线一区二区| 国产精品中文字幕欧美| 欧美精品视频www在线观看| 亚洲欧美综合色| 国产白丝网站精品污在线入口| 日韩一级二级三级| 亚洲成人免费观看| 在线观看91精品国产入口| 国产精品伦一区| 狠狠狠色丁香婷婷综合激情| 7777女厕盗摄久久久| 亚洲一二三四在线观看| 色噜噜夜夜夜综合网| 中文字幕一区二区在线观看| 国产成人精品一区二区三区四区 | 精品日韩一区二区三区| 日本aⅴ精品一区二区三区| 欧美日韩另类国产亚洲欧美一级| 亚洲人成影院在线观看| 成人av网站免费观看| 国产精品久久久久影视| 成人性视频免费网站| 国产精品麻豆久久久|