⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flash_m16.h

📁 一个LED特效显示程序
💻 H
字号:
/*对FLASH进行读写的函数
* 器件:AVR AT MEAG16  373锁存   
* FLASHROM:W49F002U  
* PA0~7,PC0~7地址和数据线
* PD5 读始能 PD6 写始能  PD7 ALE 
*  
*/


#define ALE_HIGH()   PORTD |=0X01;           //定义ALE管脚
#define ALE_LOW()    PORTD &=0XFE;             
#define W_EN_HIGH()  PORTD |=0B00000010;     //定义写始能
#define W_EN_LOW()   PORTD &=0B11111101;
#define R_EN_HIGH()  PORTD |=0B00000100;     //定义读始能
#define R_EN_LOW()   PORTD &=0B11111011;
//**************************************************************/
unsigned char FlashRead(long int data_adress);          //定义FLASH读函数
void FlashWrite(unsigned int data_adress,unsigned char data);//定义FLASH写函数
void ChipErase(void);      	  //片擦除
void SectoErase(char sector); //区擦除
void BootBlockLockout(void);  
void AdressSend(long int adress);
void DataIN(long int data_adress,char data);
/***************************************************************/
//按BIT读FLASHROM
unsigned char FlashRead(long int data_adress)
{
	char data;
	R_EN_HIGH();                //读始能关闭
	W_EN_HIGH();                //写始能关闭
	AdressSend(data_adress);    //送地址
	R_EN_LOW();                 //读始能打开,低电平有效
	DDRA =0X00;                 //
	data =PINA;                 //从A口读数据
	return data;                //返回数据
}
//按BIT写FLASHROM
void FlashWrite(unsigned int data_adress,unsigned char data)
{
	DataIN(0x5555,0XAA);
	DataIN(0x2AAA,0X55);
	DataIN(0x5555,0XA0);
	DataIN(data_adress,data);
}
//片擦除
void ChipErase(void)
{
	R_EN_HIGH();                 	//读始能关闭
	DataIN(0x5555,0XAA);
	DataIN(0x2AAA,0X55);
	DataIN(0x5555,0X80);
	DataIN(0x5555,0XAA);
	DataIN(0x2AAA,0X55);
	DataIN(0x5555,0X10);
}
//送地址到FLASH和373
void AdressSend(long int adress)
{
    ALE_HIGH();                		//ALE设置为高  
    DDRA =0XFF;                     //设定A口为输出
	DDRC =0XFF;                     //设定C口为输出
	DDRD =0XFF;                     //设定D口为输出
	PORTA =adress&0xff;        		//送底8位地址A0~A7   PA0~7
    PORTC =(adress>>8)&0xff;   		//送中间8位地址A8~A15    PC0~7
    PORTD =(PORTD&0xE7)|((adress>>13)&0x18);   //送地址A16~A17    PD3~4
    ALE_LOW();                 				   //锁存数据
}
void DataIN(long int data_adress,char data)
{
    W_EN_HIGH();                	//写始能关闭
	AdressSend(data_adress);    	//送地址
	W_EN_LOW();                     //写始能打开,低电平有效
	DDRA =0XFF;
	PORTA =data;
	W_EN_HIGH();                	//写始能关闭
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -