STC单片机内部EEPROM程序

发布者:真实幻想最新更新时间:2015-04-24 来源: 51hei关键字:STC单片机  内部EEPROM  控制寄存器 手机看文章 扫描二维码
随时随地手机看文章
#include
#include
#define uchar unsigned char
#define uint unsigned int
 
sfr ISP_DATA  = 0x00E2;    //EEPORM数据寄存器
sfr ISP_ADDRH = 0x00E3;    //地址寄存器高八位
sfr ISP_ADDRL = 0x00E4;    // 地址寄存器低八位
sfr ISP_CMD   = 0x00E5;    //EEPORM命令寄存器
sfr ISP_TRIG  = 0x00E6;    //EEPROM(ISP/IAP) 命令触发寄存器
sfr ISP_CONTR = 0x00E7;    //(ISP/IAP)控制寄存器
 
/********打开ISP,IAP功能********/
void ISP_IAP_enable(void)
{
  //  EA=0;
      ISP_CONTR |= 0X18;
      ISP_CONTR |= 0X00;
      ISP_CONTR |= 0X80;
}
/********关闭ISP,IAP功能********/
void ISP_IAP_disable(void)
{
      ISP_CONTR &= 0X7f;
      ISP_TRIG   = 0X00;
  //  EA=1;  
}
/********公用的触发代码*********/
void ISPgoon(void)
{
      ISP_IAP_enable();
      ISP_TRIG = 0X46;
      ISP_TRIG = 0Xb9;
      _nop_();_nop_();
}
/*******读字节*****************/
uchar byte_read(uint byte_adder)
{
      ISP_ADDRH = (uchar)(byte_adder>>8);
      ISP_ADDRL = (uchar)(byte_adder & 0x00ff);
      ISP_CMD   = ISP_CMD & 0xf8;
      ISP_CMD   = ISP_CMD | 0X01;
      ISPgoon();
      ISP_IAP_disable();
      return(ISP_DATA); 
}
/********擦除扇区*************/
void SectorErase(uint sector_adder)
{
      static uint iSector;
      iSector     = sector_adder & 0xfe00;
      ISP_ADDRH   = (uchar)(iSector>>8);
      ISP_ADDRL   = 0X00;
      ISP_CMD    &= 0XF8;
      ISP_CMD    |= 0X03;
      ISPgoon();
      ISP_IAP_disable(); 
}
/***********写字节***********/
void byte_write(uint byte_adder,uchar orginal_data)
{
      ISP_ADDRH    =  (uchar)(byte_adder>>8);
      ISP_ADDRL    =  (uchar)(byte_adder & 0X00FF);
      ISP_CMD     &= 0xf8;
      ISP_CMD     |= 0x02;
      ISP_DATA     =  orginal_data;
      ISPgoon();
      ISP_IAP_disable();
}
关键字:STC单片机  内部EEPROM  控制寄存器 引用地址:STC单片机内部EEPROM程序

上一篇:STC12C5A60S2单片机的10位AD转换程序
下一篇:51单片机控制8位LED数码管做9999累加的程序

推荐阅读最新更新时间:2024-03-16 13:59

ATmega88 MCU控制寄存器SMCR
MCU 控制寄存器包含了电源管理的控制位。 · Bits 7..4 Res 保留位: ATmega88中的这些位都没有使用到,读返回值始终是 0”。 · Bits 3、2、1-SM2..0 : 休眠模式选择位 2、 1 和 0 。如 Table18 所示,这些位用于选择具体的休眠模式。 · Bit 0 – SE: 休眠使能 为了使MCU 在执行SLEEP 指令后进入休眠模式, SE 必须置位。为了确保进入休眠模式是程序员的有意行为,建议仅在SLEEP 指令的前一条指令置位SE。MCU 一旦唤醒立即清除SE。
[单片机]
ATmega88 MCU<font color='red'>控制</font><font color='red'>寄存器</font>SMCR
STC单片机程序下载问题汇总
失败现象: Chinese:正在尝试与 MCU/单片机 握手连接 ... 打开串口失败! Chinese: 串口已被其它程序打开或该串口不存在。 解决方法: 1,检查USB下载模块的连接是否正常,模块上的绿色和红色LED灯都亮起表示连接正常。绿色LED灯不亮表示USB驱动程序出现问题,可以拔下USB模块重插一次。红色LED灯不亮表示模块没有供电,或是USB模块后面的电源输出端(3.3V、+5V、GND)有短路。 2,在控制面板---》系统---》硬件管理器中找到 端口 ---》CP2101串口,了解括号里的 COM号。如果括号里显示COM4,那在STC-ISP软件里也要选择COM4才行。 STC-ISP软件: 3,有时由于STC-
[单片机]
STC单片机控制BH1750测量光照强度程序
/****备注:此程序最低值为00212lux,时序可能还有一些问题,有时候乱改的话还会出现一直是00212或者00000的情况,****/ /****且数据变化是不连续的00212,00425,00639,00852,01065等等****/ /****2016.10.18日补充:后来发现是BH1750_Write_Byte最后6句写的不对****/ /****2016.10.18日补充:通过修改BH1750_Write_Byte函数的最后6句,程序已经能够正常测试****/ #include reg51.h #include intrins.h bit write=0; sbit SDA=P2^0; sbit S
[单片机]
<font color='red'>STC单片机</font><font color='red'>控制</font>BH1750测量光照强度程序
基于STM32F4单片机USART寄存器控制的设计
USART又叫通用同步异步收发器,塔提供了一种灵活的方法与工业使用标准NRZ异步春航数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择,支持同步单向通信和半双工单线通信,也支持LIN(局部互联网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范以及调制解调器(CTS/RTS)操作,它还允许多处理器通信,使用多换成器配置的DMA方式,可以实现高速数据通信。 USART寄存器控制框图如下 可通过对 USART_CR1 寄存器中的 M 位进行编程来选择 8(置0) 位或 9(置1) 位的字长。TX 引脚在起始位工作期间处于低电平状态。在停止位工作期间处于高电平状态。
[单片机]
基于STM32F4单片机USART<font color='red'>寄存器</font><font color='red'>控制</font>的设计
AVR单片机内部EEPROM方法
/************************************************************** ;eeprom.c 在AVR单片机中可以用在ATMEGA16和ATMEGA8中都可以用,在GCC下 ;编译通过。09年11月1号! 陈永飞已测试过! ;读/写atmega8515内部EEPROM的例子 ;将数据0....9写入eeprom中,再读出用数码管显示出来 ***************************************************************/ #include avr/io.h #include avr/eeprom.h #define uchar u
[单片机]
STC89C52单片机内部EEPROM驱动
STC89C52单片机自身带有4K的存储空间,分为8个扇区,每个扇区512字节,第一扇区起始地址为:0x2000, 结束地址为:21FF, 第八扇区起始地址为0x2E00,结束地址是2FFF #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int /******************定义命令字节******************/ #define Read_COM 0x01 //字节读数据命令 #define Prog_COM 0x02 //字节编
[单片机]
STC单片机下载不成功的原因分析
刚刚接触单片机,选用了号称目前下载最方便的国产stc单片机,这种单片机是用串口下载的,比起at的要那10根线的isp接头确实方便了不少,于是我就蠢蠢欲动准备自己动手丰衣足食,试着做点硬件的时候,总觉得串口下载是个难关。写好的程序能不能顺利的下进出,心里总有些没把握。最近有涉及到这方面的一点东东,随意总结一下以便给51hei的朋友分析和日后之用。 程序下不进去的原因有几点: 1 RS232的问题,这里包括几点 ,可能是芯片的损坏,无法正常工作,可能是电路连接不对,导致烧写电压不足。查看烧写电压的大小,要不低于正负8V,其次是查看芯片的IN和OUt,要与串口头相对应。一般人是不会犯着错误的,我除外,因为我不一般嘛,哈哈 。 2 复位
[单片机]
STC单片机精确延时参数测定方法
在使用STC单片机的时候,大家是不是会遇见一个问题:延时往往很难把握。当然可以使用延时函数产生波形输出到示波器观察来修改延时参数,但是没有示波器时有没有方法来确定延时参数呢。我这里自创了个办法,发到这与大家分享一下。 其方法是这样,首先设置好定时器的定时时间,在调用延时函数前打开定时器,定时器中断函数中读取出延时参数,然后通过串口将延时参数输出。具体代码如下: //程序说明:测试stc单片机延时常数,串口输出 //作者:mjx //注:程序测量精度高,适用stc这种指令不固定的单片机 #include STC12C5A60S2.h #include intrins.h int i,j,ii,jj;//ii,jj作为定
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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