- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AT45DB161FM25CL64读写程序C51
主函数部分:
#includereg51.h
#includestdio.h
#includeserial.h
#define uchar unsigned char
#define uint unsigned int
#define WREN 0x06//写使能操作码
#define WRITE 0x02//写存储器操作码
#define READ 0x03//读存储器操作码
#define READ_PAGE_MAIN 0XD2//主存储器页读
#define WRITE_MAIN_BYBUFF1 0X82//写主存储器通过缓冲器1
#define WRITE_MAIN_BYBUFF2 0X85//写主存储器通过缓冲器2
#define READ_STAT 0XD7//读状态寄存器
#define READ_MEMTOBUF 0x53//读主存储器的一页数据到缓冲器
#define WRITE_BUF 0x84//写缓冲器命令
#define WRITE_MAIN_FROMBUF 0x83//将缓冲器内数据写到住存储器命令
sfr P4SW=0xbb;//设置P4.6和P4.6为IO口的寄存器
/*sbit SO = P1^0;//芯片串行输出脚
sbit SI = P1^1;//芯片串行输入脚
sbit SCK = P1^2;//时钟线
sbit CS_45DB161D=P2^6;//45DB161DCS的片选线CS,用来存储一年的数据*/
sbit SO = P1^4;//芯片串行输出脚
sbit SI = P1^5;//芯片串行输入脚
sbit SCK = P4^4;//时钟线
sbit CS_45DB161D=P4^6;//45DB161DCS的片选线CS,用来存储一年的数据
sbit CS_FM25CL64=P2^7;//FM25CL64片选线CS,用来存储一个月的数据
uchar xdata page_data_write[528];//528个字节的写存储器的数据
uchar xdata page_data_write2[528];//528个字节的写存储器的数据
uchar xdata page_data_read[528];//528个字节的读存储器的数据
/*发送命令子程序,我们用的命令包括WREN,WRITE,READ命令*/
void send_operate_command(uchar command)//
{
uchar i;
SCK=0;//上升沿数据移到芯片的SI脚
for(i=0;i8;i++)//把WREN的8位从高位到低位进行发送
{
SCK=0;
if((commandi)0x80)
{
SI=1;
}
else SI=0;
SCK=1;//上升沿数据移到了SPI芯片中
}
}
/*发送一个字节的数据子程序,通过控制器控制时钟SCK来让数据一位一位的移动到芯片的SI脚*/
void send_data(uchar data_to_send)//发送一个字节的数据到SPI芯片
{
uchar i;
SCK=0;//也是上升沿发送数据到芯片的SI脚
for(i=0;i8;i++)
{
SCK=0;
if((data_to_sendi)0x80)//从高位往低位发送,如果该位为1,发送1
{
SI=1;
}
else //如果该位为0,发送0
{
SI=0;
}
SCK=1;
}
}
/*发送写内存或读内存的8位地址*/
void send_address(uchar data_to_send)//发送8位的地址
{
uchar i;
SCK=0;
for(i=0;i8;i++)//8位地址从高位往地位进行发送
{
SCK=0;
if((data_to_sendi)0x80)
{
SI=1;
}
else SI=0;
SCK=1;
}
}
/*读内存时,在时钟的下降沿从SO读取8位数据接收*/
uchar read_data(void)//从SO一位一位的读取数据,把数据保存起来,结束后返回
{
uchar i,read_data=0;
SCK=1;//下降沿从芯片读取一位数据
for(i=0;i8;i++)
{
SCK=0;
if(SO==1)//接到的是1,先左移一位再和0x01或一下即为结果,这样做是因为接收到得数据MSB在前
{
read_data=read_data1;//由于接收的数据是MSB在前,所以每次读到数据往左移一位
read
您可能关注的文档
- 英语四年级上复习.ppt
- 3工商企业评级方法—中小企业评级.doc
- 教学比武征文.doc
- 三年级《安全教育》教学工作计划.doc
- SAP-04健康与安全管理程序-B.doc
- 四川某别墅住宅区项目防扬尘方案.doc
- 秘奥服装进销存管理软件客户关系管理介绍.doc
- 电控试题(补充).doc
- 14.2009顺义一模.doc
- 承台钢板桩计算.doc
- 冀教版英语九年级全一册教学课件.pptx
- 外研版高中英语选择性必修第三册全册同步教学课件(2025年7月修订).pptx
- 网页UI设计-教学课件全套 1--4 -项目一页面草图绘制 - 项目四 App产品原型设计.pptx
- 嵌入式系统基础与实践——基于 ARM Cortex-M3 内核的 STM32 微控制器(第2版) 课件全套 第1--12章 嵌入式系统概述 - 从模块到项目 .pptx
- 信息可视化设计 课件 项目 3 信息可视化设计流程 .pptx
- 《装配式建筑施工技术》课件全套 第1--5章 装配式建筑概述 --- 装配式建筑施工安全管理.pptx
- 信息可视化设计 课件全套 项目1--9 认识信息可视化--- 信息可视化应用与发展.pptx
- 信息可视化设计 课件 项目 4 时间信息可视化 .pptx
- 《装配式建筑施工技术》课件 第五章 装配式建筑施工安全管理.pptx
- 《装配式建筑施工技术》课件 第一章 装配式建筑概述.pptx
文档评论(0)