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

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

?? 1.c

?? SST25VF016B是一款外部flash芯片
?? C
字號:
#include<reg52.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int
#define ulong   unsigned long 	 
 ///////////引腳定義
sbit  SCLK =P2^7;
sbit  MISO =P2^6;
sbit  MISI =P2^5;
sbit  CS   =P2^4;
		
sbit  lcden=P0^2; 
sbit  lcdrs=P0^0;
sbit  rw=P0^1;


uchar dat[10]={1,2,3,4,5,6,7,8,9,1};
uchar add[3]={1,0,1};
uchar R_dat[10];
uchar code table0[]="成都信息工程學院";
uint num;

void Flash_init()  ;  	/* 程序功能:    用來將時鐘線初始化為低. 必須在將設備設置為模式0之前調用*/
void Flash_WRSR(uchar byte)  ;//寫狀態寄存器
uchar Flash_Read_Status_Register(void);   //讀狀態寄存器的值
void Flash_WREN_Check(void)  ; 	 	/* 功能: 檢查擦寫操作前WEL位是否為1  */   
void  Flash_WREN(void) ;  	 //寫使能命令
void Flash_Sector_Erase(ulong Dst) ;  /* 功能: Sector Erases the Chip.     4K         */
void Flash_Wait_Busy(void)  ;//等待 FLASH空閑
void Flash_Chip_Erase(void)   ;   	/* 功能: 擦除整個芯片               */  
void Flash_Block_Erase_32K(ulong Dst) ;  /* 功能: Block Erases 32 KByte of the Chip.           */
void Flash_Block_Erase_64K(ulong Dst) ;
void Flash_EWSR(void) ; //;使能改寫狀態寄存器 
void   Flash_WRDI(void)   ;//	禁止寫使能

void Flash_Send_Byte(uchar dat) ;//發送一個數據char 型 的  從51到FLASH
uchar  Flash_Get_Byte(void);// 接收一個char型的數據         51接收
uchar  Flash_Read(ulong Dst);//讀取一個措定地址內的一個數據  作為函數返回值
void Flash_Write(ulong Dst,uchar dat);	//向flash 內的一個地址內寫入一個數據

void Flash_Write_data(uchar  add[],uchar dat[],uchar size);	//向flash 內的一個基地址 add[3],add[0]放地址高八位         內寫入size個數據。

 //向從flash 內的一個基地址 add[3],add[0]放地址高八位         內讀出size個數據。	   放到dat[]中
void Flash_Read_data(uchar  add[],uchar R_dat[],uchar size);

//向從flash 內的一個基地址 add,      內讀出size個數據。	   放到dat[]中
void Flash_Read_data_add(ulong Dst,uchar R_dat[],uchar size);
void Flash_Write_data_add(ulong Dst,uchar dat[],uchar size);//向flash 內的一個基地址 add    


delay(uint z)
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
} 
void write_com(uchar com)
{
	lcdrs=0;
	P1=com;
	delay(5);
	lcden=1;
	delay(5);
	lcden=0;
}

void write_data(uchar date)      
{
	lcdrs=1;
	P1=date;
	delay(5);
	lcden=1;
	delay(5);
	lcden=0;
}
void init()
{
	lcden=0;
	rw=0;
	write_com(0x38);
	write_com(0x0c);
	write_com(0x06);
	write_com(0x80);
}
/*------------------顯示字符串--------------------------*/
void write(unsigned char  *s)
{ while(*s>0)
   {
    write_data(*s);
      s++;
      delay(30);
   }
}




////////////////////////////////////SPI讀寫驅動////////////////////////////////////////////////////////////////////////////////
void Flash_Send_Byte(uchar dat) //發送一個數據char 型 的  從51到FLASH
{
uchar i;
SCLK=0;
CS=0;
for(i=0;i<8;i++)
    { 
      if(dat & 0x80)
         {
             MISI=1;
         }
      else 
             MISI=0;
        dat<<=1;
        SCLK=1;	   //信號拉高讀進數據
        _nop_();
        
	    SCLK=0;    //將信號拉低
        _nop_();     
      }
SCLK=0;
}

uchar Flash_Get_Byte(void)   //接收一個char型的數據
{
uchar i;
uchar one_data=0;
CS=0;
// SCLK=1;
for(i=0;i<8;i++)
{	 
	one_data=one_data<<1;
	SCLK=0;
	_nop_();
	   _nop_();
	 if(MISO==1)
	 {
	 one_data=one_data | 0x01;
	 }
    SCLK=1;
    _nop_();	
}
SCLK=0;
//CS=1;
return one_data;
}

/************************************************************************/   
	/* 名稱: Read                         */     
	/* 功能: 讀取一個地址內一個字節的數據.返回讀取的數據*/   
	/* 輸入:      Dst:    Destination Address 000000H - 1FFFFFH       */   
	/* 返回:      byte                            */   
	/************************************************************************/   
uchar Flash_Read(ulong Dst)    
	{   
	    uchar byte = 0; 
		
		SCLK=1;   
	    CS =0;  
		        /* enable device */   
	    Flash_Send_Byte(0x03);        /* read command */   
	    Flash_Send_Byte(((Dst & 0xFFFFFF) >> 16));  /* send 3 address bytes */   
	    Flash_Send_Byte(((Dst & 0xFFFF) >> 8));   
	    Flash_Send_Byte(Dst & 0xFF);   
	    byte = Flash_Get_Byte();   
	    CS =1;          /* disable device */   
	    return byte;            /* return one byte read */   
	}   
////////////////////////////////////////////////////////////////////////////////////////////////
void Flash_Write(ulong Dst,uchar dat)	//向flash 內的一個地址內寫入一個數據。
{
CS=0;
        Flash_Send_Byte(0x02);        /* read command */   
	    Flash_Send_Byte(((Dst & 0xFFFFFF) >> 16));  /* send 3 address bytes */   
	    Flash_Send_Byte(((Dst & 0xFFFF) >> 8));   
	    Flash_Send_Byte(Dst & 0xFF); 
        Flash_Send_Byte(dat);///secd data to flash
CS=1;

}

void Flash_Write_data(uchar  add[],uchar dat[],uchar size)	//向flash 內的一個基地址 add[3],add[0]放地址高八位         內寫入size個數據。
{
uchar i;
ulong Dst=0;
for(i=0;i<2;i++)
{
Dst|=add[i];
Dst=Dst<<8;
}
Dst|=add[2];
		for(i=0;i<size;i++)
		{
		 Flash_WREN();
		 CS=0  ;
		  Flash_Send_Byte(0x02);        /* read command */   
		  Flash_Send_Byte(((Dst & 0xFFFFFF) >> 16));  /* send 3 address bytes */   
	      Flash_Send_Byte(((Dst & 0xFFFF) >> 8));   
	      Flash_Send_Byte(Dst & 0xFF); 
          Flash_Send_Byte(dat[i]);///secd data to flash
	    	Dst++;
		  CS=1;
		  Flash_WRDI();
		}
//CS=1;

}

 //向從flash 內的一個基地址 add[3],add[0]放地址高八位         內讀出size個數據。	   放到dat[]中
void Flash_Read_data(uchar  add[],uchar R_dat[],uchar size)
{
uchar i;
CS=0;
        Flash_Send_Byte(0x03);        /* read command */   
		for(i=0;i<3;i++)
		{
		  Flash_Send_Byte(add[i]); 
		}
		for(i=0;i<size;i++)
		{
       R_dat[i]=Flash_Get_Byte();   ///secd data to flash
		}
CS=1;

}



//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void Flash_init()    	/* 程序功能:    用來將時鐘線初始化為低. 必須在將設備設置為模式0之前調用*/
{   
	    uchar i;   
	   // P7 |= 0x7f; /* 設置SCK為低電平初始化狀態 */   
	   SCLK=0;
	    for(i=255;i>0;i--);   
	   // P7 &= 0x80;   
	   SCLK=1;
}   

void Flash_WREN_Check(void)   	 	/* 功能: 檢查擦寫操作前WEL位是否為1  */   
{   
	    uchar byte;   
	    byte = Flash_Read_Status_Register();  /* 讀取狀態register */   
	    if ((byte&0x02) != 0x02)        /* 檢查WEL位置位 */   
	    {   
	        Flash_WREN();   
	            //如果未置1進行相應處理,如對其進行寫使得操作    
	    }   
}   

void Flash_Chip_Erase(void)      	/* 功能: 擦除整個芯片               */  
{     
	Flash_EWSR();
	Flash_WRSR(0);//(Read_Status_Register())&0x83 ); 

                      
	    Flash_WREN_Check();   
	    CS =0;          
	    Flash_Send_Byte(0xc7);            /* 發送 Chip Erase命令 (60h or C7h) */   
	  	CS =1;
	    Flash_Wait_Busy();       
	    //CE =1;                
}   

void Flash_Sector_Erase(ulong Dst)   /* 功能: Sector Erases the Chip.     4K         */
{   
	    uchar i;   
	    Flash_WREN_Check();   
	    Flash_init();   
	    CS =0;                 
	    Flash_Send_Byte(0x20);            /* 發送Sector Erase 命令 */   
	    Flash_Send_Byte(((Dst & 0xFFFFFF) >> 16));  /* 發送地址 */   
	    Flash_Send_Byte(((Dst & 0xFFFF) >> 8));   
	    Flash_Send_Byte(Dst & 0xFF);   
	    for(i=100;i>0;i--);   
	    CS =1;   
	    Flash_Wait_Busy(); 
	//	CS=1;              
}   
/*void Flash_Block_Erase_32K(ulong Dst)   /* 功能: Block Erases 32 KByte of the Chip.           */
/*{   
	    Flash_WREN_Check();   
	    CS =0;                 
	    Flash_Send_Byte(0x52);            /* 發送32 KByte Block Erase命令*/   
	    /*Flash_Send_Byte(((Dst & 0xFFFFFF) >> 16));  /* 發送3bytes地址*/   
	    /*Flash_Send_Byte(((Dst & 0xFFFF) >> 8));   
	    Flash_Send_Byte(Dst & 0xFF);   
	    CS =1;   
	    Flash_Wait_Busy();           
} */  
	/************************************************************************/   
	/* 名稱: Block_Erase_64K                      */   
	/* 功能: Block Erases 64 KByte    */   
	/* 輸入:      Dst:        目標地址000000H - 1FFFFFH   */   
	/* 返回:      Nothing                         */   
	/************************************************************************/   
/*void Flash_Block_Erase_64K(ulong Dst)   
{   
	    Flash_WREN_Check();   
	    CS =0;             
	    Flash_Send_Byte(0xD8);            /* 發送64KByte Block Erase 命令 */   
	    /*Flash_Send_Byte(((Dst & 0xFFFFFF) >> 16));  /* 發送3 bytes地址 */   
	    /*Flash_Send_Byte(((Dst & 0xFFFF) >> 8));   
	    Flash_Send_Byte(Dst & 0xFF);   
	    CS =1;   
	    Flash_Wait_Busy();           
} */  

 uchar Flash_Read_Status_Register(void)   //讀狀態寄存器的值
	{   
	    uchar byte = 0;   
	    CS =0;          /* 使能設備 */   
	    Flash_Send_Byte(0x05);        /* 發送讀狀態寄存器的命令 */   
	    byte = Flash_Get_Byte();      /* 讀取狀態寄存器 */   
	    CS =1;          /* 禁止設備 */   
	    return byte;   
	}   

void Flash_WREN(void)   	 //寫使能命令
	{   
	    CS =0;             
	    Flash_Send_Byte(0x06);        /* 發送WREN命令 */   
	    CS =1;             
	}   
void Flash_WRSR(uchar byte)  //寫狀態寄存器
	{   
	    CS =0;          /* 使能設備 */   
	    Flash_Send_Byte(0x01);        /* 發送寫狀態寄存器 */   
	    Flash_Send_Byte(byte);        /* 改變寄存器里BPx或者BPL (只有2,3,4,5,7位可以改寫) */   
	    CS =1;          /* 禁止設備 */   
	}   

void Flash_WRDI(void)        //	禁止寫使能
	{   
	    CS =0;             
	    Flash_Send_Byte(0x04);        /* 發送WRDI命令*/   
	    CS =1;         
	}   

void Flash_Wait_Busy(void)   //等待 FLASH空閑
	{   
	    while ((Flash_Read_Status_Register())&0x01 == 0x01)   /* waste time until not busy */   
	        Flash_Read_Status_Register();   
	}   
void Flash_EWSR(void)  //使能改寫狀態寄存器 
	{   
	    CS =0;          /* 使能設備*/   
	    Flash_Send_Byte(0x50);        /* 發送使能寫寄存器的命令 */   
	    CS =1;          /* 禁止設備*/   
	}   
/*void Flash_Write_data_add(ulong Dst,uchar dat[],uchar size)	//向flash 內的一個基地址 add內寫入size個數據。
{
uchar i;
		for(i=0;i<size;i++)
		{
		  Flash_WREN();
		  CS=0  ;
		  Flash_Send_Byte(0x02);        /* read command */   
		 /* Flash_Send_Byte(((Dst & 0xFFFFFF) >> 16));  /* send 3 address bytes */   
	      /*Flash_Send_Byte(((Dst & 0xFFFF) >> 8));   
	      Flash_Send_Byte(Dst & 0xFF); 
          Flash_Send_Byte(dat[i]);///secd data to flash
	      Dst++; 
		  CS=1;	 
		  Flash_WRDI();	 
		}	
CS=1;
}*/	

//向從flash 內的一個基地址 add,      內讀出size個數據。	   放到dat[]中
/*void Flash_Read_data_add(ulong Dst,uchar R_dat[],uchar size)
{
uchar i;
CS=0;
        Flash_Send_Byte(0x03);              /* read command */   
		
	    /*Flash_Send_Byte(((Dst & 0xFFFFFF) >> 16));  /* send 3 address bytes */   
	    /*Flash_Send_Byte(((Dst & 0xFFFF) >> 8));   
	    Flash_Send_Byte(Dst & 0xFF); 
		for(i=0;i<size;i++)
		{
           R_dat[i]=Flash_Get_Byte();       ///secd data to flash
		}
CS=1;
}  */


void main()
{
uchar a;
	init();
	Flash_Chip_Erase();              //擦除整個芯片。
//	Flash_Write(0x01,7);
	Flash_Write_data(add,dat,10);	 //把dat 中的10個數寫到以add為基地址的falsh中
//	a=Flash_Read(1);
	Flash_Read_data(add,R_dat,10);   //把以add為基地址的falsh中	的	  10個數讀到dat	  
	write_com(0x80);
	write_data(0x30+R_dat[0]);
	write_data(0x30+R_dat[1]);
	write_data(0x30+R_dat[2]);
	write_data(0x30+R_dat[3]);
	write_data(0x30+R_dat[4]);
	write_data(0x30+R_dat[5]);
	write_data(0x30+R_dat[6]);
	write_data(0x30+R_dat[7]);
	write_data(0x30+R_dat[8]);
	write_data(0x30+R_dat[9]);
	write_com(0x90);
	write(table0);

 	while(1);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文一区二区完整视频在线观看| 欧美一区二区免费| 国产精品萝li| 91偷拍与自偷拍精品| 一区二区三区自拍| 欧美色区777第一页| 日韩成人免费电影| 精品88久久久久88久久久| 国产一区啦啦啦在线观看| 欧美大胆人体bbbb| 粉嫩嫩av羞羞动漫久久久 | 色香蕉久久蜜桃| 亚洲激情图片小说视频| 欧美日韩国产三级| 久久国内精品自在自线400部| 精品1区2区在线观看| 成人精品电影在线观看| 亚洲黄色小视频| 欧美一级片在线| 国产精品羞羞答答xxdd | 亚洲码国产岛国毛片在线| 色综合久久精品| 日本vs亚洲vs韩国一区三区二区| 久久只精品国产| 色综合一个色综合亚洲| 蜜臀a∨国产成人精品| 中文字幕在线不卡一区| 欧美日韩电影在线播放| 国产91色综合久久免费分享| 亚洲乱码中文字幕| 国产精品久久久一本精品| 欧美在线啊v一区| 久久99国产精品久久| 中文字幕一区二区三中文字幕| 欧美日韩在线综合| 国产激情91久久精品导航| 亚洲宅男天堂在线观看无病毒| 久久这里只有精品视频网| 在线免费视频一区二区| 国产成人av一区二区三区在线| 亚洲第一主播视频| 亚洲国产高清不卡| 欧美乱妇一区二区三区不卡视频| 粉嫩蜜臀av国产精品网站| 天堂一区二区在线免费观看| 国产精品国产三级国产aⅴ原创 | 成人av网站在线观看免费| 日韩影院精彩在线| 一区二区三区免费| 国产人成一区二区三区影院| 欧美久久高跟鞋激| 色综合天天视频在线观看| 国产精品资源在线观看| 秋霞av亚洲一区二区三| 亚洲一卡二卡三卡四卡五卡| 国产精品美女久久久久久2018| 日韩欧美国产午夜精品| 欧美日韩一本到| 久久综合色8888| 欧美日韩日日摸| 在线观看国产91| 色哟哟精品一区| 成人av电影免费在线播放| 久久99久久久久| 日本欧美韩国一区三区| 亚洲一区二区不卡免费| 亚洲综合图片区| 亚洲欧美二区三区| 最新久久zyz资源站| 欧美国产精品一区| 国产欧美一区二区精品秋霞影院| 日韩欧美亚洲国产另类| 欧美一区二区视频在线观看2020 | 国产不卡视频在线播放| 九一久久久久久| 蜜臀av性久久久久蜜臀av麻豆| 天堂成人国产精品一区| 午夜精品久久久久久久| 天堂va蜜桃一区二区三区漫画版| 亚洲电影第三页| 日本在线不卡视频| 日本美女一区二区| 青青草伊人久久| 美国毛片一区二区三区| 另类人妖一区二区av| 九色综合狠狠综合久久| 日韩欧美专区在线| 精品日韩欧美一区二区| 久久这里只有精品首页| 国产欧美中文在线| 国产精品欧美久久久久一区二区| 国产精品女主播av| 国产精品成人一区二区艾草| ...xxx性欧美| 五月开心婷婷久久| 蜜臀精品一区二区三区在线观看| 久久精品国内一区二区三区| 男男gaygay亚洲| 国产米奇在线777精品观看| 国产精品系列在线播放| caoporn国产一区二区| 一本久久a久久精品亚洲| 欧美日韩午夜在线视频| 日韩免费在线观看| 国产精品天干天干在观线| 一区二区三区四区精品在线视频| 五月天丁香久久| 黑人巨大精品欧美黑白配亚洲| 国产精品综合一区二区| 一本色道亚洲精品aⅴ| 欧美另类变人与禽xxxxx| 欧美精品一区二区三| 国产精品久久久久桃色tv| 亚洲国产中文字幕| 国产一区二区三区免费看 | 亚洲黄色免费电影| 日本美女一区二区| 成人av在线看| 日韩亚洲国产中文字幕欧美| 国产精品入口麻豆九色| 五月婷婷综合在线| 福利视频网站一区二区三区| 欧美三级一区二区| 国产视频一区二区三区在线观看| 亚洲一区二区三区三| 国产精品一区二区在线观看网站| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 色综合久久综合网97色综合| 91精品国产一区二区| 国产精品视频yy9299一区| 亚洲香肠在线观看| 国产精品18久久久久久vr| 欧美唯美清纯偷拍| 中文av一区二区| 日本成人在线不卡视频| 91丨porny丨在线| 久久亚洲精华国产精华液 | 777欧美精品| 亚洲欧洲av另类| 国产在线看一区| 777a∨成人精品桃花网| 亚洲女人****多毛耸耸8| 国产伦精一区二区三区| 91精品视频网| 亚洲曰韩产成在线| 91视频www| 中文字幕巨乱亚洲| 国产一区在线精品| 欧美大片在线观看一区| 日本人妖一区二区| 在线观看91av| 婷婷久久综合九色综合绿巨人| 91丨porny丨户外露出| 国产日韩三级在线| 国产乱一区二区| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 51精品秘密在线观看| 一区二区三区精品视频在线| 成人精品免费网站| 国产午夜亚洲精品理论片色戒| 久久精品国产99国产| 欧美一区二区三区四区高清| 亚洲一区二区三区美女| 欧美三区在线视频| 亚洲图片欧美综合| 欧美在线观看禁18| 亚洲成人免费电影| 欧美日韩午夜影院| 五月激情丁香一区二区三区| 欧美片网站yy| 日本不卡高清视频| 欧美一级高清大全免费观看| 日韩成人免费看| 日韩精品综合一本久道在线视频| 日本麻豆一区二区三区视频| 欧美一区二区三区影视| 日本女人一区二区三区| 欧美一级夜夜爽| 久久99日本精品| 国产欧美一区二区精品性| 成人免费的视频| 椎名由奈av一区二区三区| 91网页版在线| 午夜精品久久久久久久蜜桃app | 91黄色激情网站| 亚洲国产综合91精品麻豆| 91精品久久久久久蜜臀| 麻豆精品视频在线观看视频| 久久久久久久久久久久久女国产乱 | 国产欧美视频在线观看| 成人永久免费视频| 亚洲精品日韩综合观看成人91| 在线一区二区视频| 日韩高清不卡一区二区| 久久网站热最新地址| 97精品久久久久中文字幕 | 日韩电影网1区2区| 久久综合九色综合97婷婷女人 | 国产成人精品aa毛片| 亚洲人妖av一区二区|