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

📄 k9f6408u0a.c

📁 单片机接口技术实用子程序配套源代码
💻 C
字号:
//-----------------------函数声明,变量定义--------------------------------------------------------
#include <reg51.h>
#include <stdio.h>
#include <intrins.h>
#include <reg51.h>
sbit FLASH_CLE=P1^0;
sbit FLASH_ALE=P1^1;
sbit FLASH_WE=P1^2;
sbit FLASH_WP=P1^3;
sbit FLASH_CE=P1^4;
sbit FLASH_RD=P1^5;
sbit FLASH_RB=P1^6;
void WriteCommand(unsigned char command);
void WriteAddress(
                   unsigned char H_ADR,          //A16~A23 列地址
                   unsigned char M_ADR,          //A8~A15
                   unsigned char L_ADR           //A0~A7  行地址 
				  );
void WRITEBYTE(unsigned char Wdata);              //写一个数据到FLASH
unsigned char READBYTE();             //从FLSAH读一个数据
void REC_data_process(unsigned char Rdata);           //接收数据处理,读一页时,每读一次处理一次
void READ_onepage1();                                  //连续读一页数据(528字节)

//--------------------------------------------------------------------------------------------------
// 函数名称: WriteCommand
// 入口参数: command命令字
// 函数功能: 写命令字,开始各种操作
//--------------------------------------------------------------------------------------------------
void WriteCommand(unsigned char command)
                 {
                   FLASH_ALE=0;
                   FLASH_CE=0;
                   FLASH_CLE=1;
                   FLASH_WE=0;
                   P0=command;
                   FLASH_WE=1;
                   FLASH_CLE=0;
                   FLASH_ALE=1;
                  } 
//--------------------------------------------------------------------------------------------------
// 函数名称: WriteAddress
// 入口参数: H_ADR,M_ADR,L_ADR 行列地址
// 函数功能: 写地址
//--------------------------------------------------------------------------------------------------
void WriteAddress(
                   unsigned char H_ADR,          //A16~A23 列地址
                   unsigned char M_ADR,          //A8~A15
                   unsigned char L_ADR           //A0~A7  行地址 
				  )
                   {
                   FLASH_WE=1;
                   FLASH_CE=0;
                   FLASH_CLE=0;
                   FLASH_ALE=1;
                   FLASH_WE=0;
                   P0=L_ADR;
                   FLASH_WE=1;
                   _nop_();
                   FLASH_WE=0;
                   P0=M_ADR;
                   FLASH_WE=1;
                   _nop_();
                   FLASH_WE=0;
                   P0=H_ADR;
                   FLASH_WE=1;
                   _nop_();
                   FLASH_ALE=0;
                   }
//--------------------------------------------------------------------------------------------------
// 函数名称: WRITEBYTE
// 入口参数: Wdata要写入 FLASH的数据
// 函数功能: 写一个数据到FLASH
//--------------------------------------------------------------------------------------------------
void WRITEBYTE(unsigned char Wdata)    //写一个数据到FLASH
                   {
                   FLASH_WE=1;
                   FLASH_CLE=0;
                   FLASH_CE=0;
                   FLASH_ALE=0;
                   FLASH_WE=0;
                   _nop_();
                   P0=Wdata;
                   _nop_();
                   FLASH_WE=1;
                   }
//--------------------------------------------------------------------------------------------------
// 函数名称: READBYTE
// 出口参数: Rdata从FLASH读出的数据
// 函数功能: 从FLSAH读一个数据
//--------------------------------------------------------------------------------------------------
unsigned char READBYTE()              //从FLSAH读一个数据
                   {
                   unsigned char Rdata;
                   FLASH_WE=1;
                   FLASH_CLE=0;
                   FLASH_ALE=0;
                   FLASH_CE=0;
                   FLASH_RD=0;      //准备好读入                  
                   _nop_();
                   _nop_();
                   while(!FLASH_RB)//当读信号无效时,等待      
                   {                                            
                   }    
                   Rdata=P0;     //把P0口读出的值存入ACC寄存器 
                        //插入2个机器周期
                   _nop_();
                   _nop_();
                   FLASH_RD=1;    //不再读入 
                   return(Rdata); 
                   }

                   unsigned char READ_Status()
                   {
                   unsigned char Status;
                   WriteCommand(0x70);
                   Status=READBYTE();
                   return(Status);
                   }
//--------------------------------------------------------------------------------------------------
// 函数名称: READ_onepage1
// 调用函数: WriteCommand
//            WriteAddress
//            REC_data_process();每接收一个数据,处理
// 函数功能: 连续读一页数据(528字节)
//--------------------------------------------------------------------------------------------------
void READ_onepage1()                                  //连续读一页数据(528字节)
                   {
                   unsigned char d=528;
                   unsigned char Rec_data;
                   WriteCommand(0x00);                //写读的命令0x00或0x01
                   WriteAddress(0x00,0x00,0x00);      //写读的地址
                   while(d>0)
                   {
                   Rec_data=READBYTE();
                   REC_data_process(Rec_data);               
                   d--;
                   }
                   FLASH_CE=1;
                   }
//--------------------------------------------------------------------------------------------------
// 函数名称: REC_data_process
// 入口参数: Rdata按页读时,每次读回的数据
// 函数功能:接收数据处理,读一页时,每读一次处理一次
//--------------------------------------------------------------------------------------------------

void REC_data_process(unsigned char Rdata)     //接收数据处理,读一页时,每读一次处理一次
                   {
                   } 







⌨️ 快捷键说明

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