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

📄 at45db041.h

📁 一个关于AVR单片机的例程
💻 H
字号:
/*******************************************************************************
** Filename: at45db041.h
** Describe: Flash 存储器at45db041 头文件
** Author : 古欣 www.avrvi.com
** Time  :   2007-2-14
** ------------------------------------
** RESET  -- PA0
** CS -- PA1
** SCK -- PA2
** SI -- PA3
** SO -- PA4
** BUSY -- PA5
** si/so是相对于at45db41而言,对于单片机so对应脚应该是输入
*******************************************************************************/


#ifndef _AT45DB041_
#define _AT45DB041_ 1

#define AT4541_PORT  PORTA
#define AT4541_DDR   DDRA
#define AT4541_PIN   PINA

#define RESET_HIGH()   AT4541_PORT |= 0X01
#define RESET_LOW()    AT4541_PORT &=~ 0X01
#define CS_HIGH()      AT4541_PORT |= 0X02
#define CS_LOW()       AT4541_PORT &=~ 0X02
#define SCK_HIGH()     AT4541_PORT |= 0X04
#define SCK_LOW()      AT4541_PORT &=~ 0X04
//对应at45db41 SI,对单片机而言是输出
#define SI_HIGH()      AT4541_PORT |= 0X08
#define SI_LOW()       AT4541_PORT &=~ 0X08

#define CHEAK_BUSY 0x20
//((AT4541_PIN&CHEAK_BUSY)==CHEAK_BUSY) 说明准备好
#define CHEAK_BUSY_HIGH ((AT4541_PIN&CHEAK_BUSY)==CHEAK_BUSY)

#define SO_PIN 0X10
// ((AT4541_PIN&SO_PIN)==SO_PIN) 则说明从SO引脚输出了高电平
#define SO_PIN_HIGH  ((AT4541_PIN&SO_PIN)==SO_PIN)

//除SO之外,单片机的引脚都设为输出
#define DDR_RESET_SET() AT4541_DDR |= 0X01
#define DDR_CS_SET()    AT4541_DDR |= 0X02
#define DDR_SCK_SET()   AT4541_DDR |= 0X04
#define DDR_SI_SET()    AT4541_DDR |= 0X08
#define DDR_SO_SET()    AT4541_DDR &=~ 0X10




/**************************************
** 说明: 初始化at4541
** 设置端口输出模式,设置CS为低,reset为高
**************************************/
extern void at4541_init(void);

/**************************************
** 说明: 检查at45db041忙状态
** 输出: 1:准备好,0:忙中
**************************************/
extern unsigned char at4541_check_busy(void);

/**************************************
** 说明:发送操作命令 (0xe800读)(0x8200写)
** 数据格式:16位命令字,16位地址位,32位任意数
** 输入:命令字,地址位
**************************************/
extern void at4541_commond_send(unsigned int commond,unsigned int address);


/**************************************
** 说明:读出一个字符
** 
**************************************/
extern unsigned char at4541_read(void);


/**************************************
** 说明:写at45db041一个字符
** 
**************************************/
extern void at4541_write(unsigned char data);


/**************************************
** 说明: 检查at45db041寄存器
** 输入: command:操作指令,57H或D7H
** 输出: at45db041寄存器的值
**************************************/
extern unsigned char at4541_read_status(unsigned char commond);


/**************************************
** 说明:AT45DB04停止
** 无输入输出 延时500ms
**************************************/
extern void at4541_stop(void);


#endif

⌨️ 快捷键说明

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