STC单片机内部FLASH读写程序

发布者:咖啡狐狸最新更新时间:2016-01-22 来源: eefocus关键字:STC单片机  内部FLASH  读写程序 手机看文章 扫描二维码
随时随地手机看文章
//#i nclude "STC89C51.h"

//#i nclude


#define ERROR   0
#define OK      1


#define WAIT_TIME  0x00    //mcu clock 40mhz
//#define WAIT_TIME  0x01    //mcu clock 20mhz
//#define WAIT_TIME  0x02    //mcu clock 10mhz
//#define WAIT_TIME  0x03    //mcu clock 5mhz



#define HOUR  0x8000
#define MINUTE 0x8001



void ISP_EN(void)
{
 EA 0;               //  关中断   
 ISP_CONTR ISP_CONTR & 0x18;        // 0001,1000
 ISP_CONTR ISP_CONTR | WAIT_TIME;
 ISP_CONTR ISP_CONTR | 0x80;        // 1000,0000
}


void ISP_DI(void)
{
 ISP_CONTR ISP_CONTR & 0x7f;     // 0111,1111
 ISP_TRIG 0x00;
 EA     1;                    // 开中断
}


unsigned char Byte_read(unsigned int byte_addr)
{
 ISP_ADDRH (unsigned char)(byte_addr >> 8);
 ISP_ADDRL (unsigned char)(byte_addr & 0x00ff);

 ISP_CMD  ISP_CMD 0xf8;         // 1111,1000
 ISP_CMD  ISP_CMD 0x01;          // 0000,0001  字节读数据存储区

 ISP_EN();

 ISP_TRIG 0x46;
 ISP_TRIG 0xb9;
 _nop_();

 ISP_DI();
 return (ISP_DATA);
}


void Sector_erase(unsigned int Sector_addr)
{
 unsigned char addre;
 addre   (unsigned char)(Sector_addr >> 8);  // 1111,1110,0000,0000; 取扇区地址
 ISP_ADDRH = addre&0xfe;
 ISP_ADDRL 0x00;
 
 ISP_CMD ISP_CMD 0xf8;       // 1111,1000
 ISP_CMD ISP_CMD 0x03;       // 0000,0011  扇区擦除数据存储区
 
 ISP_EN();
 
 ISP_TRIG 0x46;               // 触发ISP_IAP命令
 ISP_TRIG 0xb9;              // 触发ISP_IAP命令
  _nop_();

 ISP_DI();
}


void Byte_program(unsigned int byte_addr, unsigned char DataBuf)
{
 ISP_ADDRH (unsigned char)(byte_addr >> 8);
 ISP_ADDRL (unsigned char)(byte_addr & 0x00ff);

 ISP_CMD  ISP_CMD 0xf8;         // 1111,1000
 ISP_CMD  ISP_CMD 0x02;      // 0000,0010  字节编程数据存储区
 ISP_DATA DataBuf;

 ISP_EN();
 
 ISP_TRIG 0x46;               // 触发ISP_IAP命令
 ISP_TRIG 0xb9;               // 触发ISP_IAP命令
 _nop_();

 ISP_DI();
}


unsigned char ByteProgramVerify(unsigned int byte_addr, unsigned char DataBuf)
{
 ISP_ADDRH (unsigned char)(byte_addr >> 8);
 ISP_ADDRL (unsigned char)(byte_addr & 0x00ff);

 ISP_CMD  ISP_CMD 0xf8;          // 1111,1000
 ISP_CMD  ISP_CMD 0x02;      // 0000,0010  字节编程数据存储区
 ISP_DATA DataBuf;

 ISP_EN();

 ISP_TRIG 0x46;
 ISP_TRIG 0xb9;
 _nop_();

 ISP_DATA 0x00;

 ISP_CMD  ISP_CMD 0xf8;          // 1111,1000
 ISP_CMD  ISP_CMD 0x01;          // 0000,0001

 ISP_TRIG 0x46;               // 触发ISP_IAP命令
 ISP_TRIG 0xb9;               // 触发ISP_IAP命令
 _nop_();

 ISP_DI();

 if(ISP_DATA==DataBuf) return OK;
 else return ERROR;
}

关键字:STC单片机  内部FLASH  读写程序 引用地址:STC单片机内部FLASH读写程序

上一篇:单片机定时器中断原理和C语言代码详解
下一篇:STC单片机IO管脚毁坏动态自检程序

推荐阅读最新更新时间:2024-03-16 14:45

avr的SD卡基本读写程序(一)
/* SD Code for M32L */ /* By pasyong */ /* 2006-4 */ /* Base ICC6.31A */ /************************************************************/ #include iom32v.h #include macros.h #include 1011.h #define uchar unsigned char #define uint unsigned int #define MMC_CS_PIN BIT(4) //PORTB.4 #define MMC_PORT PORTB uchar reading=
[单片机]
STC单片机内部EEPROM的应用
单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RAM中的数据是无法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用EEPROM或FLASHROM等存储器来实现。在传统的单片机系统中,一般是在片外扩展存储器,单片机与存储器之间通过IIC或SPI等接口来进行数据通信。这样不光会增加开发成本,同时在程序开发上也要花更多的心思。在STC单片机中内置了EEPROM(其实是采用IAP技术读写内部FLASH来实现EEPROM),这样就节省了片外资源,使用起来也更加方便。下面就详细介绍STC单片机内置EEPROM及其使用方法。 STC各型号单片机内置的EEPROM的容量各有不同,见下表: 单片机芯
[单片机]
stc单片机看门狗喂狗程序
*划时代 51单片机 喂狗*/ /**/ #include STC.h #define LED_PORT P2//定义LED控制端口为P2口 /*************************/ void Delay(void) { unsigned char i,j; for(i = 0;i 130;i ++) { for(j = 0;j 255;j ++); } } /****************************/ void WDTInit(void) { WDT_CONTR = 0x35;//使能看门狗,预分频64 } /**********************
[单片机]
STC单片机知识点
1.单片机内部三大资源:FLASH(程序存储空间也叫ROM),RAM(内存),SFR(特殊功能寄存器)。我们对单片机的操作基本都是对SFR的操作。 2.stc89c52 特点:8K FLASH,512B RAM,1个UART,2个定时器,8个中断源,P0口无上拉功能。 3.对FLASH的写操作,一般都是按页擦除,只有先把一页数据擦除后 才能写入,相当于先把数据清理后才能写。 4.对于一款新的单片机,要用sizeof,测试char,short,int等类型所占的空间大小。
[单片机]
STC12C5A60S2.H stc单片机keil头文件下载
STC12C5A60S2.H是stc公司最新的高性能高速单片机STC12C5A60S2的头文件,支持在keil软件里面调用,这个软件可是我找了半天才找到的一个真正能用的版本,大家保存好 下载地址是: http://www.51hei.com/f/STC12C5A60S2.H 右键另存为即可下载 下面是这个文件的内容: //-------------------------------------------------------------------------------- //新一代 1T 8051系列 单片机内核特殊功能寄存器 C51 Core SFRs // 7 6 5
[单片机]
STC单片机EEPROM功能模块
// STC单片机EEPROM功能模块 #include STCSTC12C2052AD.h #include intrins.h // 声明与IAP相关的SFR sfr IAP_DATA = 0xE2; sfr IAP_ADDRH = 0xE3; sfr IAP_ADDRL = 0xE4; sfr IAP_CMD = 0xE5; sfr IAP_TRIG = 0xE6; sfr IAP_CONTR = 0xE7; // 定义ISP/IAP/EEPROM命令 #define CMD_IDLE 0 #define CMD_READ 1 #define CMD_PROGRAM 2 #define CMD_ERASE 3 //
[单片机]
STC单片机学习】第九课:单片机按键使用
1.9.1.按键相关知识 按键很常见,也是很简单的设备,就是一个输入设备,里面是个弹簧! 1.9.1.1、按键工作原理 (1)内部机械结构 相当于只有两个引脚,只有这两个引脚可以接外面的电路! (2)电路连接与原理图中图标 可以理解成共阴! (3)按键电路接法、上拉电阻。 这才是按键完整电路! 上拉是为了让引脚默认是高电平(保证输入),但是上拉的力量扛不住接地(安泰俄斯),所以按键没有按下时上拉保证了IO引脚输入为1,而按下后绝对为0. 这下知道了,按下按键,给单片机传入的值是0! 按下和弹起的区别就是接不接地的问题,也就是引脚输入为1还是0的问题。 (4)按键这个设备对我们的意义:按键对于我们CPU来
[单片机]
【<font color='red'>STC单片机</font>学习】第九课:单片机按键使用
基于STC单片机的智能LED路灯控制器设计
  当前巨量的能源消耗和由此引起的能源短缺、价格上涨等已使得节约能源成为一项十分迫切的任务。各国消耗的能源中很大一部分用于照明,其中城市公共照明(主要是道路照明和景观照明)在我国照明耗电中占30%.有资料显示,每年用于照明的电力在3 000 亿度以上,若采用LED 照明,每年就可以节约1/3 的照明用电,基本上相当于总投资规模超过2 000 亿元的三峡工程的全年发电量。综合以上优点,LED光源自然成为城市公共照明的首选,同时目前国内大部分城市的道路照明管理系统直至现在仍在沿用简单的光控、钟控等传统控制方式。这些系统普遍存在着难以反馈路灯运行状态信息、难以进行远程控制等局限,基本没有节电效果,并且采用传统的人工巡检,不仅使路灯管理部
[电源管理]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved