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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? w78e516b_iap.c

?? W78E516B 從4k Flash對(duì)64k主空間編程的完整程序
?? C
字號(hào):

                                       //5.1看門狗禁止以改寫完畢。
#include <reg54.h>
#include <absacc.h>
#define PROMCSLOW DECD=1;DECC=0;DECB=1;DECA=0;
#define PROMCSHIGH DECD=0;DECC=0;DECB=0;DECA=0;


sbit DOUT=P1^5;                        //原系統(tǒng)的din/dout定義與datasheet相反。
sbit DIN=P1^4;
sbit SCLK=P1^6;
sbit LED1=P4^3;
sbit LED2=P4^2;
sbit A16=P1^7;

sbit PROMSO=P1^5;
sbit PROMSI=P1^4;
sbit PROMSCK=P1^6;

sfr CHPCON=0xBF;                       //在編程特殊寄存器定義;
sfr CHPENR=0xF6;
sfr SFRAL=0xC4;
sfr SFRAH=0xC5;
sfr SFRFD=0xC6;
sfr SFRCN=0xC7;



sbit DECA=P1^0;                         //DECODER ,譯碼器;
sbit DECB=P1^1;
sbit DECC=P1^2;
sbit DECD=P1^3;


unsigned char TLOW,THIGH;               //在定時(shí)器0與各iap函數(shù)間傳遞定時(shí)參數(shù);
unsigned char receiveflag=3;            //在主函數(shù)與外部中斷0之間傳遞數(shù)據(jù)接收完成標(biāo)志;                                //3:接收程序數(shù)據(jù)低位,2:接收程序數(shù)據(jù)高位,1:數(shù)據(jù)0:接收完畢; 
unsigned char sizelow,sizehigh;         //下載程序大小高低位
unsigned int size;                      //下載程序總大小;
unsigned int cursor;                    // 下載數(shù)據(jù)存入外存地址,每次中斷后保存,所以定義為全局變量;


unsigned char byt8(unsigned char tx)     //向擴(kuò)3100寫入一個(gè)字節(jié)同時(shí)接收一個(gè)字節(jié);
{
    unsigned char i;
	unsigned char mask;
	unsigned char rx;

	DOUT=1;

	mask=0x80;
	rx=0;
	for(i=0;i<8;i++)                       //移位;
	{
		if(tx & mask)
			DIN=1;
		else
			DIN=0;
	
		SCLK=1;	
		mask=mask/2;

		if(DOUT)
		{
			rx=rx*2;
			rx=rx | 0x01;
		}
		else
			rx=rx*2;

		SCLK=0;

	}
	return(rx);
}

unsigned char utlk(unsigned char tx1,unsigned char tx2)    //talk to uart;
{
    unsigned char c;

	EX0=0;
   
    DECD=1; DECC=0;  DECB=0;   DECA=0;
    
	c=byt8(tx1);
	c=byt8(tx2);

    DECD=0;   DECC=0;  DECB=0;  DECA=0;

	EX0=1;
	return(c);

}

void WatchdogDisable()                         //此程序中延時(shí)全部從原函數(shù)中去掉了;
{
   	unsigned char i;

	PROMSCK=0;

	PROMCSLOW                               	//WREN
	for(i=0;i<5;i++)                        	//"00000"
	{
		PROMSI=0;
		PROMSCK=1;                              //時(shí)鐘上升沿輸入數(shù)據(jù)
		PROMSCK=0;                     
	}
	for(i=0;i<2;i++)                        	//"11"
	{
		PROMSI=1;
		PROMSCK=1;
		PROMSCK=0;
	}

	PROMSI=0;                                  	//"0"
	PROMSCK=1;
	PROMSCK=0;
    PROMCSHIGH 
    PROMCSLOW 									//WRSR

	for(i=0;i<7;i++)							//"0000000"
	{
		PROMSI=0;
		PROMSCK=1;
		PROMSCK=0;
	}
	PROMSI=1;           						 //"1";
	PROMSCK=1;
	PROMSCK=0;

	PROMSI=0;									//"0"
	PROMSCK=1;
	PROMSCK=0;

	PROMSI=0;									//"0"
	PROMSCK=1;
	PROMSCK=0;
                        						 //"11" for watchdog disable
	PROMSI=1;
	PROMSCK=1;
	PROMSCK=0; 

	PROMSI=1;
	PROMSCK=1;
	PROMSCK=0;
	for(i=0;i<4;i++)							//"0000"
	{
		PROMSI=0;
		PROMSCK=1;
		PROMSCK=0;
	}

    PROMCSHIGH 									//看門狗片選為高,片外ram片選為低,選中;
}
void Flash()           						    //指示燈1閃爍;
{
    unsigned int i;
    LED1=0;
    for(i=0;i<30000;i++);
    LED1=1;
    for(i=0;i<30000;i++);


}
void Light()             						//兩燈同步閃爍;
{
    unsigned int i;
    LED1=0;
    LED2=0;
    for(i=0;i<35000;i++);
     
	LED1=1;
	LED2=1;
	 
    for(i=0;i<35000;i++);

}

void Erase()                                      //64flash擦除;
{
   SFRCN=0x22;
   TL0=0x3C;
   TH0=0xB0;
   TCON=0x10;
   PCON=0x01;
 
}
bit BlankCheck()                                   //64k flash 空白檢查;
{
   bit flag=1;
   unsigned int index;
   
   SFRCN=0x00;
   SFRAH=0x00;
   SFRAL=0x00;
   TLOW=0xFB;
   THIGH=0xFF;

   for(index=0;index<0xFFFF;index++)
   {
     TR0=1;
     PCON=0x01;
     if(SFRFD!=0xFF)
      {
        flag=0;
        break;
      }
     else
      {
        SFRAL++;
        if(SFRAL==0)
        SFRAH++;
      }
      
    }
 
 
 return(flag);
 
}

void Program()                        		 //編程函數(shù)兩分支共用,外存由A16區(qū)分,
{
    unsigned int index;

    SFRCN=0x21;                        	     //設(shè)定為寫操作;
    SFRAL=0x00;	
    SFRAH=0x00;
    TLOW=0x5A;                          	 //iap時(shí)間設(shè)定; 比標(biāo)準(zhǔn)時(shí)間略長(zhǎng);
    THIGH=0xFF;

    for(index=0;index<0xFFFF;index++)
     {

      SFRFD=XBYTE[index];
	  TR0=1;
	  PCON=0x01;
	  SFRAL++;
	  if(SFRAL==0)
	  SFRAH++;

     }


	SFRAL=0x00;	                            //第一個(gè)數(shù)據(jù)重新寫過,否則出錯(cuò),沒搞懂;
    SFRAH=0x00;
    TLOW=0x5A;                          	 //iap時(shí)間設(shè)定; 比標(biāo)準(zhǔn)時(shí)間略長(zhǎng);
    THIGH=0xFF;
	SFRFD=XBYTE[0x00];
	TR0=1;
	PCON=0x01;

	 

}
bit Verify()                                  //編程數(shù)據(jù)驗(yàn)證;
 {
    bit flag=1;
    unsigned int index;
    
    SFRCN=0x00;
    SFRAH=0x00;
    SFRAL=0x00;
    TLOW=0xFB;
    THIGH=0xFF;
    for(index=0;index<0xFFFF;index++)
     {
   	   TR0=1;
  	   PCON=0x01;
 	   if(SFRFD!=XBYTE[index])
   	    {
   		   flag=0;
    	   break;
        }
       else
        {
           SFRAL++;
           if(SFRAL==0)
           SFRAH++;
		 }
      }
    
	return(flag);
 }


void main()
{


    bit iapokflag=0; 						  //編程標(biāo)志位;
    unsigned int i;    						  //情外存地址信息;
    unsigned char pcon; 					  //chpcon;
    unsigned char times=3;					  //在編程失敗重復(fù)次數(shù);
 
	unsigned j;    //for test 
  


    WatchdogDisable(); 						  //此函數(shù)出來(lái),已選中片外ram
	TCON=0x00; 
	TMOD=0x01;
	IP=0x00;
    IE=0x82;
    CHPENR=0x87;
    CHPENR=0x59;
    pcon=CHPCON;
    pcon=pcon&0x80;
	for(j=0;j<60000;j++)   
	LED2=0;
    LED2=1;

    ////////////////////////////////////////////////////////////////////////////
   if(pcon==0)//   								 not f04k boot mode;從主程序轉(zhuǎn)來(lái)
    {    
       Flash();
       CHPENR=0;
                 								 //從64k 進(jìn)入,數(shù)據(jù)已準(zhǔn)備好在片外ram地址高端
     
 	   A16=1;
       while((iapokflag!=1)&&(times!=0))
       {
 
         Erase(); 								  //擦除片內(nèi)64k flash;
	  	 Flash();
         if(BlankCheck()==0) 
         {
           times--;
           continue;
         }

	     Flash();

         Program();

	 	 Flash();

         if(Verify()==0)                 
         {
           times--;
           continue;
         }
         Flash();
         iapokflag=1;
 
        }
 
     if(iapokflag==1)                           //在編程成功,軟件重啟,執(zhí)行64k程序;
     { 
        Flash();
	    Flash();
        CHPENR=0x87;
        CHPENR=0x59;
        CHPCON=0x83;
      }
 
     while(1)									  //如果再編程未成功,等常閃;
     Light();
     
  }

 ///////////////////////////////////////////////以下為f04k boot mode 處理,硬啟動(dòng)處理;    
   else
  {
      A16=0;                                     //選中片外ram低端;         
      for(i=0;i<0xFFFF;i++)
      XBYTE[i]=0xFF; 
      Flash();  
                                 				 //外存清空,閃爍指示;
	  EX0=1;                  			 	     //中斷設(shè)置;

      SCLK=0;                     
      utlk(0xC4,0x00);            				 //下載串口3100初始化          
	  sizelow=0;
	  sizehigh=0;
	  size=0;	
	  cursor=0;
	    	   
      while(receiveflag!=0);   					 //等所有數(shù)據(jù)接收完畢

	  EX0=0;
      utlk(0x80,sizehigh);     				     //數(shù)據(jù)接收完畢,返回?cái)?shù)據(jù)長(zhǎng)度;
	  utlk(0x80,sizelow);

	  
	  CHPCON=0x03;
	  CHPENR=0x00;
	                               				 //開始編程,數(shù)據(jù)位于片外ram低端;
	 
	  while((iapokflag!=1)&&(times!=0))
      {
 
        Erase();  								 //擦除片內(nèi)64k flash;
	
		Flash();
		                  
        if(BlankCheck()==0) 
        {
          times--;	           
          continue;
        }

	    Flash();
                 	                          //從串口再編程操作         
        Program();
	
		Flash();
		      
        if(Verify()==0)       //這個(gè)函數(shù)有問題!
        {
           times--;		       
           continue;
        }
	       
	
          Flash();	  
         iapokflag=1;
      }
 
   
      if(iapokflag==1)
	     {
	      Flash();
	      Flash();
		  Flash();
          while(1)
		   {
		     LED1=0; 						    //兩燈常亮,編程完畢;
		     LED2=0;
		   }
          }
	    else
		  {  
		     LED2=0; 						   //一燈閃,一燈常亮,編程失敗;
		     while(1)
			 Flash();
		  }

  }
    
  
 
}

 void DownLoad() interrupt 0                   //下載串口中斷服務(wù)程序;
 {
   
  unsigned char temp;
  temp=utlk(0x00,0x00);

  
  if(receiveflag==1)
   {
   XBYTE[cursor]=temp;
   cursor++;
   if(cursor==size)                            //程序數(shù)據(jù)扔到外存;
   receiveflag=0;                   		   //所有數(shù)據(jù)接收完畢,置標(biāo)志位為零;
   return; 
   }
  else 
  if(receiveflag==3)
    { 
	  sizelow=temp;          				   //程序數(shù)據(jù)長(zhǎng)度低位;
      receiveflag--;
	}
  else 
  if(receiveflag==2)
    {
	  sizehigh=temp;
	  receiveflag--;
	  size=sizehigh*256+sizelow;
	}
   


 }

 void Timer0() interrupt 1                       //定時(shí)器1中斷服務(wù)程序;  
{

   TR0=0;
   TL0=TLOW;
   TH0=THIGH;
}
 



?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕在线不卡视频| 国精品**一区二区三区在线蜜桃| 日本一区二区动态图| 国产日韩精品一区二区三区| 久久久精品综合| 国产精品毛片高清在线完整版 | 2021国产精品久久精品| 欧美电视剧免费全集观看| 欧美一区二区三区系列电影| 久久色在线视频| 亚洲人成精品久久久久| 亚洲成人免费在线观看| 国产一区在线观看视频| 国产成人午夜99999| 欧洲亚洲精品在线| 精品国产污网站| 亚洲六月丁香色婷婷综合久久| 亚洲成年人影院| 韩日av一区二区| 欧美综合久久久| 国产视频一区二区在线观看| 亚洲亚洲人成综合网络| 激情文学综合插| 欧洲在线/亚洲| 18欧美亚洲精品| 国产福利精品一区| 欧美撒尿777hd撒尿| 国产精品国产三级国产普通话蜜臀| 日韩伦理av电影| 国产成人aaa| 日韩视频一区二区| 亚洲综合另类小说| 91亚洲午夜精品久久久久久| 国产亚洲一二三区| 国产在线精品视频| 日韩一级二级三级| 午夜精品久久久久久久99水蜜桃 | 欧美一级高清大全免费观看| 欧美激情中文不卡| 国产suv一区二区三区88区| 精品捆绑美女sm三区| 日韩电影在线一区| 欧美亚洲禁片免费| 亚洲国产wwwccc36天堂| 在线中文字幕一区| 亚洲国产精品久久久久秋霞影院 | 色先锋资源久久综合| 亚洲天堂精品视频| 91麻豆国产自产在线观看| 亚洲欧美中日韩| 91啦中文在线观看| 亚洲国产精品久久人人爱| 欧美亚洲动漫制服丝袜| 亚洲自拍欧美精品| 欧美日本视频在线| 麻豆精品久久久| 国产亚洲精品超碰| 99精品在线观看视频| 亚洲一区在线观看免费观看电影高清| 欧洲人成人精品| 老司机免费视频一区二区三区| 精品国一区二区三区| av在线不卡免费看| 亚洲高清中文字幕| 精品国产一区二区亚洲人成毛片| 国产99久久久国产精品| 亚洲欧美激情一区二区| 国产精品网站导航| 色狠狠一区二区| 中文在线一区二区| 欧美色涩在线第一页| 精品一区二区精品| 亚洲人成7777| 2021国产精品久久精品| 欧美日韩一区二区不卡| 国产精品自拍一区| 午夜久久久久久久久 | 国产精品高潮呻吟| 3d成人动漫网站| 日本韩国欧美在线| 一二三四社区欧美黄| 久久理论电影网| 欧美午夜视频网站| 成人高清视频在线| 激情欧美一区二区| 午夜精品福利一区二区蜜股av| 国产精品国产三级国产普通话三级 | 国产成人在线看| 九九热在线视频观看这里只有精品| 亚洲免费观看高清完整版在线观看熊| 欧美高清激情brazzers| 91女人视频在线观看| 国产成人免费在线视频| 国产一区免费电影| 久久精品国产一区二区| 欧美aⅴ一区二区三区视频| 性做久久久久久免费观看| 亚洲最色的网站| 亚洲精品成人少妇| 亚洲一级二级三级| 一区二区三区四区在线免费观看| 国产精品剧情在线亚洲| 久久久精品影视| 国产精品久久国产精麻豆99网站| 国产三级一区二区| 国产精品欧美一级免费| 国产精品久久久久久久岛一牛影视| 精品国产乱码久久久久久久| 欧美精品一区二区三区四区| 久久精品一区二区三区不卡牛牛| 欧美国产精品一区二区三区| 国产精品久久久久久久久果冻传媒 | 国产一区二区在线免费观看| 久久9热精品视频| 高清shemale亚洲人妖| 91亚洲精品久久久蜜桃网站| 一本色道久久综合亚洲aⅴ蜜桃| 在线视频国内一区二区| 欧美精选一区二区| 久久久久久一二三区| 日本一区二区三级电影在线观看| 亚洲欧美福利一区二区| 视频一区视频二区中文| 国产成人夜色高潮福利影视| 91麻豆.com| 日韩三级视频在线观看| 国产精品午夜电影| 日韩激情视频网站| 91亚洲永久精品| 久久久影视传媒| 亚洲在线成人精品| 福利91精品一区二区三区| 欧美日韩精品专区| 中文字幕不卡在线观看| 蜜臀av一区二区| 欧美亚洲综合网| 国产欧美久久久精品影院| 亚洲免费看黄网站| 成人一级片在线观看| 欧美一区二区三区思思人| 亚洲人一二三区| 高清在线不卡av| 欧美电影免费观看高清完整版在 | 国产精品免费免费| 久久不见久久见免费视频7| 欧美一区三区四区| 久久久精品中文字幕麻豆发布| 亚洲国产精品欧美一二99| 99久久伊人精品| 国产色一区二区| 国产精品一二三四| 久久久久久亚洲综合影院红桃| 久久不见久久见免费视频1| 制服丝袜亚洲播放| 日韩高清一区二区| 欧美一级二级三级蜜桃| 秋霞电影一区二区| 欧美成人伊人久久综合网| 日韩不卡一二三区| 日韩亚洲欧美高清| 免费成人av在线| 精品免费99久久| 成人精品国产一区二区4080| 国产精品天美传媒沈樵| 91丝袜美腿高跟国产极品老师| 综合电影一区二区三区| 欧美三级午夜理伦三级中视频| 亚洲国产一区二区三区| 在线播放视频一区| 国产美女精品人人做人人爽| 中文字幕一区二区三区在线播放| 一本久久综合亚洲鲁鲁五月天| 亚洲成人午夜影院| 久久久国产精华| 欧美性猛片xxxx免费看久爱| 亚洲成国产人片在线观看| 日韩免费一区二区| 99re热这里只有精品视频| 亚洲小少妇裸体bbw| 亚洲精品在线免费播放| 色一情一乱一乱一91av| 久久99精品国产麻豆婷婷洗澡| 中文字幕欧美区| 日韩视频一区二区三区| 91丨九色丨蝌蚪富婆spa| 日产国产欧美视频一区精品| 国产精品水嫩水嫩| 欧美一区二区啪啪| 99re成人在线| 国内精品视频一区二区三区八戒| 亚洲视频香蕉人妖| 精品国产3级a| 欧美精品一卡二卡| 色婷婷一区二区| 成人免费观看av| 国内成人免费视频| 日韩电影免费在线看| 18成人在线视频| 1区2区3区国产精品| 欧美激情在线一区二区|