📄 main.c
字号:
//======================================================================
// The information contained herein is the exclusive property of
// Sunnnorth Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
// (C) COPYRIGHT 2003 SUNNORTH TECHNOLOGY CO.
// ALL RIGHTS RESERVED
// The entire notice above must be reproduced on all authorized copies.
//=======================================================================
//=======================================================================
// 工程名称: ex6_SPR4096_FLASH
// 功能描述: 《实验仪指导书》模组实验,
// SPR4096A FLASH的擦除及其读写
// SPR4096 的FLASH存储开机次数
// 涉及的库: CMacro1016.lib
// 组成文件: main.c
// 4096.asm
// SPCE061A.INC
// SPCE061A.H
// 硬件连接: CF7->DGND
// SDA->IOB1
// SCK->IOB0
// LED_SEG接口的IOA0~IOA7与a~h连接
// LED_DIG接口的IOB6与DIG5连接
// 维护记录: 2005-10-21
//=======================================================================
//=======================================================================
// 文件名称: main.c
// 功能描述: SPR4096 的FLASH存储功能
// 维护记录: 2005-10-21 v1.0
//=======================================================================
extern void SP_SIOInitial(void);
extern void SP_SIOMassErase(void);
extern void SP_SIOSectorErase(unsigned int uiSector);
extern void SP_SIOSendAWord(unsigned long int ulAddr,unsigned int uiData);
extern void SP_SIOSendAByte(unsigned long int ulAddr,unsigned int uiData);
extern unsigned int SP_SIOReadAWord(unsigned long int ulAddr);
extern unsigned int SP_SIOReadAByte(unsigned long int ulAddr);
#define M_SECTOR 0 //第几个扇区(0~255)
#include "SPCE061A.H"
//========================================================================
// 语法格式: int main(void)
// 实现功能: 主程序
// 参数: 无
// 返回值: 无
//========================================================================
int main(void)
{
unsigned long int ulStartAddr;
unsigned int uiData,uiBuffer;
for(uiData=0;uiData<10000;uiData++); //延时
uiData=0;
SP_SIOInitial(); //SIO初始化,函数定义在4096.asm中
*P_IOA_Dir = 0xffff; //初始化IOA口为同相低电平输出口
*P_IOA_Attrib = 0xffff;
*P_IOA_Data = 0x0000;
*P_IOB_Dir |= 0x0040; // IOB6输出高电平
*P_IOB_Attrib |= 0x0040;
*P_IOB_Buffer |= 0x0040;
ulStartAddr=0x800*(M_SECTOR);
uiData=SP_SIOReadAWord(ulStartAddr); //读4096的第M_SECTOR个扇区的首地址一个Word的数据
SP_SIOSectorErase(M_SECTOR); //对4096的第M_SECTOR个扇区进行擦除
*P_IOA_Data = uiData; //点亮与IOA0相连的LED
uiData++;
SP_SIOSendAWord(ulStartAddr,uiData); //往4096的第M_SECTOR个扇区的首地址写入一个Word的数据
while(1)
{
*P_Watchdog_Clear=0x1; //清看门狗
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -