📄 flash.c
字号:
//本程序在每个Flash操作子函数中都加入了口线的方向配置。
#include "msp430x14x.h"
#include "flash.h"
//****************************************************
//往FLASH中写入sequential data input命令字
//****************************************************
void WriteSequentialDataInputCommandToFlash(void)
{
DataPortDirection=0xFF;
ControlPortDirection=(~FlashRB);
OutputToFlash=FlashSequentialDataInput;
FlashControlPort=CommandInputInWriteMode;
FlashControlPort&=~FlashWE;
FlashControlPort|=FlashWE;
}
//****************************************************
//往FLASH中写入读模式1命令字并选中A区
//****************************************************
void WriteRead1ACommandToFlash(void)
{
DataPortDirection=0xFF;
ControlPortDirection=(~FlashRB);
OutputToFlash=FlashRead1A;
FlashControlPort=CommandInputInReadMode;
FlashControlPort&=~FlashWE;
FlashControlPort|=FlashWE;
}
//****************************************************
//往FLASH中写入读模式1命令字并选中B区
//****************************************************
void WriteRead1BCommandToFlash(void)
{
DataPortDirection=0xFF;
ControlPortDirection=(~FlashRB);
OutputToFlash=FlashRead1B;
FlashControlPort=CommandInputInReadMode;
FlashControlPort&=~FlashWE;
FlashControlPort|=FlashWE;
}
//****************************************************
//往FLASH中写入读模式2命令字并选中C区
//****************************************************
void WriteRead2CommandToFlash(void)
{
DataPortDirection=0xFF;
ControlPortDirection=(~FlashRB);
OutputToFlash=FlashRead2;
FlashControlPort=CommandInputInReadMode&(~FlashSE);
FlashControlPort&=~FlashWE;
FlashControlPort|=FlashWE;
}
//****************************************************
//读取FLASH的ID
//****************************************************
void WriteReadIDCommandToFlash(void)
{
DataPortDirection=0xFF;
ControlPortDirection=(~FlashRB);
OutputToFlash=FlashReadID;
FlashControlPort=CommandInputInReadMode;
FlashControlPort&=~FlashWE;
FlashControlPort|=FlashWE;
}
//****************************************************
//往FLASH中写入复位命令字
//****************************************************
void WriteReadResetCommandToFlash(void)
{
DataPortDirection=0xFF;
ControlPortDirection=(~FlashRB);
OutputToFlash=FlashReset;
FlashControlPort=CommandInputInReadMode;
FlashControlPort&=~FlashWE;
FlashControlPort|=FlashWE;
}
//****************************************************
//往FLASH中写入块擦除命令字
//****************************************************
void WriteBlockEraseCommandToFlash(unsigned short FlashRowAddress)
{
DataPortDirection=0xFF;
ControlPortDirection=(~FlashRB);
OutputToFlash=FlashBlockErase1cycle;
FlashControlPort=CommandInputInWriteMode;
FlashControlPort&=~FlashWE;
FlashControlPort|=FlashWE;
OutputToFlash=FlashRowAddress;
FlashControlPort=AddressInputInWriteMode;
FlashControlPort&=~FlashWE;
FlashControlPort|=FlashWE;
OutputToFlash=(FlashRowAddress>>8);
FlashControlPort&=~FlashWE;
FlashControlPort|=FlashWE;
OutputToFlash=FlashBlockErase2cycle;
FlashControlPort=CommandInputInWriteMode;
FlashControlPort&=~FlashWE;
FlashControlPort|=FlashWE;
}
//****************************************************
//往FLASH中写入读取状态命令字
//****************************************************
void WriteReadStatusToFlash(void)
{
DataPortDirection=0xFF;
ControlPortDirection=(~FlashRB);
OutputToFlash=FlashReadStatus;
FlashControlPort=CommandInputInReadMode;
FlashControlPort&=~FlashWE;
FlashControlPort|=FlashWE;
}
//****************************************************
//往FLASH中写入页编程命令字
//****************************************************
void WritePageProgramCommandToFlash(void)
{
DataPortDirection=0xFF;
ControlPortDirection=(~FlashRB);
OutputToFlash=FlashPageProgram;
FlashControlPort=CommandInputInWriteMode;
FlashControlPort&=~FlashWE;
FlashControlPort|=FlashWE;
}
//****************************************************
//往FLASH中写入地址的程序(读模式)
//****************************************************
void WriteReadModeAddressToFlash(unsigned short FlashRowAddress,unsigned short FlashColumnAddress)
{
DataPortDirection=0xFF;
ControlPortDirection=(~FlashRB);
OutputToFlash=FlashColumnAddress;
FlashControlPort=AddressInputInReadMode;
FlashControlPort&=~FlashWE;
FlashControlPort|=FlashWE;
OutputToFlash=FlashRowAddress;
FlashControlPort&=~FlashWE;
FlashControlPort|=FlashWE;
OutputToFlash=(FlashRowAddress>>8);
FlashControlPort&=~FlashWE;
FlashControlPort|=FlashWE;
}
//****************************************************
//往FLASH中写入地址的程序(读模式)
//****************************************************
void WriteWriteModeAddressToFlash(unsigned short FlashRowAddress,unsigned short FlashColumnAddress)
{
DataPortDirection=0xFF;
ControlPortDirection=(~FlashRB);
OutputToFlash=FlashColumnAddress;
FlashControlPort=AddressInputInWriteMode;
FlashControlPort&=~FlashWE;
FlashControlPort|=FlashWE;
OutputToFlash=FlashRowAddress;
FlashControlPort&=~FlashWE;
FlashControlPort|=FlashWE;
OutputToFlash=(FlashRowAddress>>8);
FlashControlPort&=~FlashWE;
FlashControlPort|=FlashWE;
}
//****************************************************
//为读取数据作准备
//****************************************************
void PrepareForReadDataFromFlash(void)
{
ControlPortDirection=(~FlashRB);
FlashControlPort=PrepareForDataOutput&(~FlashSE);
}
//****************************************************
//写入数据到Flash作准备(不包括C区域)
//****************************************************
void PrepareForWriteDataToFlashNoCArea(void)
{
ControlPortDirection=(~FlashRB);
FlashControlPort=PrepareForDataInput|FlashSE;
}
//****************************************************
//写入数据到Flash作准备(包括C区域)
//****************************************************
void PrepareForWriteDataToFlashIncludeCArea(void)
{
ControlPortDirection=(~FlashRB);
FlashControlPort=PrepareForDataInput&(~FlashSE);
}
//****************************************************
//组合函数
//****************************************************
//****************************************************
//读取Flash中的状态寄存器,其中返回值在InputDataFromFlash中
//****************************************************
void ReadStatusFromFlash(void)
{
WriteReadStatusToFlash();
DataPortDirection&=~0xFF;
FlashControlPort&=~FlashRE;
FlashControlPort|=FlashRE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -