ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:21.08KB ,
资源ID:21306628      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21306628.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(关于断电延时和EEPROM数据保存STC掉电保存数据程序Word格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

关于断电延时和EEPROM数据保存STC掉电保存数据程序Word格式.docx

1、x,y;for(x=112;x0;x-)for(y=z;yy-);init_232(void)/串口初始化SCON0x50;TMOD|=0x20;TH10xfa;/波特率9600TL1PCON0x80;EA1;ESTR1send_char(ucharw)/串口发送一个字符SBUFw;while(TI=0);TIsend_string(uchar*s,uintstring_length)/串口发送一个字符串idosend_char(*(s+i);i+;while(istring_length);/*EEPROM字符读取*/eeprom_read(ucharx,y)ISP_ADDRHx;ISP_A

2、DDRLy;ISP_CONTR0x9b;ISP_CMD0x01;ISP_TRIG0x46;0xb9;_nop_();ISP_CONTR=0;ISP_CMD=0;ISP_TRIG=0;return(ISP_DATA);/*EEPROM字符写入*/eeprom_write(ucharx,y,z)ISP_DATAz;0x02;/*EEPROM扇区擦除*/eeprom_erase(uchar0x03;main()init_232();0;delay(10);while(1)if(p120)&(i0)eeprom_erase(0x10,0x00);/擦除第一扇区delay(1);eeprom_write

3、(0x10,0x00,0x88);/在第一扇区写入88/*串口接收中断函数*/RS232()interrupt4chif(RI)SBUF;RIsend_char(ch);switch(ch)case1:send_char(eeprom_read(0x10,0x00);/串口助手输入16进制1,读EEPROM第一扇区break;2:send_char(eeprom_read(0x12,0x00);/串口助手输入16进制2,读EEPROM第2扇区3:eeprom_write(0x10,0x00,0x55);/串口助手输入16进制3,写EEPROM第一扇区554:eeprom_write(0x12,

4、0x00,0x66);/串口助手输入16进制4,写EEPROM第2扇区665:/串口助手输入16进制5,擦除EEPROM第一扇区6:eeprom_erase(0x12,0x00);/串口助手输入16进制6,擦除EEPROM第2扇区default:这是一段stc单片机EEPROM掉电存储程序,麻烦大家帮我看看哈,怎么调用时输出有问题啊,希望给个调用的例子悬赏分:0 - 提问时间2010-8-21 19:32 #include absacc.h intrins.h #include .h_fileseeprom.h /*/void isp_iap_enable ( void ) EA = 0 ;

5、/*关中断*/ ISP_CONTR = ISP_CONTR & 0x18 ; ISP_CONTR = ISP_CONTR | WAIT_TIME ; ISP_CONTR = ISP_CONTR | 0x80 ; /*ISPEN = 1*/void isp_iap_disable ( void ) 0x7f ; /*ISPEN = 0*/ ISP_TRIG = 0x00 ; EA = 1 ; /*开中断*/void isp_iap_goon ( void ) isp_iap_enable ( ) ; /*打开ISP,IAP功能*/ ISP_TRIG = 0x46 ; /*触发ISP,IAP命令字

6、节1*/ ISP_TRIG = 0xb9 ; /*触发ISP,IAP命令字节2*/ _nop_ ( ) ; UINT8 byte_read ( UINT16 byte_addr ) ISP_ADDRH = ( UINT8 ) ( byte_addr 8 ) ; /*地址赋值*/ ISP_ADDRL = ( UINT8 ) ( byte_addr & 0x00ff ) ; ISP_COMD = ISP_COMD & 0xf8 ; /*清除低3位*/ ISP_COMD = ISP_COMD | RE_COMMAND ; /*写入读命令*/ isp_iap_goon ( ) ; /*触发执行*/ i

7、sp_iap_disable ( ) ; /*关闭ISP,IAP功能*/ return ( ISP_DATA ) ; /*返回读到的数据*/void sector_erase ( UINT16 sector_addr ) UINT16 i_sector_addr ; i_sector_addr = ( sector_addr & 0xfe00 ) ; /*取扇区地址*/ ISP_ADDRH = ( UINT8 ) ( i_sector_addr ISP_ADDRL = 0x00 ; /*清空低3位*/ ISP_COMD = ISP_COMD | ER_COMMAND ; /*擦除命令3*/vo

8、id byte_write ( UINT16 byte_addr , UINT8 original_data ) /*取地址*/ ISP_COMD = ISP_COMD | PR_COMMAND ; /*写命令2*/ ISP_DATA = original_data ; /*写入数据准备*/ 提问者: smu_east - 一级网友推荐答案/*/reg52.hstdio.hstring.h#define Uchar unsigned char#define Uint unsigned int#define Ulong unsigned long/定义Flash 操作等待时间及允许IAP/ISP

9、/EEPROM 操作的常数#define ENABLE_ISP 0x83 /系统工作时钟12MHz 时,对IAP_CONTR 寄存器设置此值sfr IAP_DATA = 0xE2;sfr IAP_ADDRH = 0xE3;sfr IAP_ADDRL = 0xE4;sfr IAP_CMD = 0xE5;sfr IAP_TRIG = 0xE6;sfr IAP_CONTR = 0xE7;/全局变量及共用体变量Uchar buff8;Uchar buff18=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;union union_temp16 Uint un_temp1

10、6;Uchar un_temp82;my_unTemp16;/定义共用体,给存储eeprom使用/函数声明区void Read_8byte(Uchar *buf,Uint add,Uchar bitt); /读多个字节,调用前需打开IAP 功能void Program_8byte(Uchar *buf,Uint add,Uchar bitt);/写多个字节,调用前需打开IAP 功能void Sector_Erase(Uint add); /擦除扇区void IAP_Disable(); /关闭IAP 功能void Delay(); /延时函数void mcu_ini(void);/mcu初始化

11、函数/主函数区void main (void) Uchar i; P1 = 0xF0; /演示程序开始,让 P13:0 控制的灯亮 Delay(); /延时 P1 = 0x0F; /演示程序开始,让 P17:4 控制的灯亮 Delay() ; Sector_Erase(0x4000); /擦除整个扇区 Program_8byte(buff1,0x4000,8); P2 = 0x55;/P2.7亮 Read_8byte(buff,0x4000,8); while (1)/CPU 在此无限循环执行此句 P0 = buffi; /延时 i+; if(i=8)i=0;P2 = 0xff;Delay()

12、; /*/读一字节,调用前需打开IAP 功能,入口:DPTR = 字节地址,返回:A = 读出字节Uchar Byte_Read(Uint add) IAP_DATA = 0x00; IAP_CONTR = ENABLE_ISP; /打开IAP 功能, 设置Flash 操作等待时间 IAP_CMD = 0x01; /IAP/ISP/EEPROM 字节读命令 my_unTemp16.un_temp16 = add; IAP_ADDRH = my_unTemp16.un_temp80; /设置目标单元地址的高8 位地址 IAP_ADDRL = my_unTemp16.un_temp81; /设置目

13、标单元地址的低8 位地址 /EA = 0; IAP_TRIG = 0x46; /先送 5Ah,再送A5h 到ISP/IAP 触发寄存器,每次都需如此 IAP_TRIG = 0xB9; /送完A5h 后,ISP/IAP 命令立即被触发起动 _nop_(); /EA = 1; return (IAP_DATA);/读多个字节,调用前需打开IAP 功能,入口:void Read_8byte(Uchar *buf,Uint add,Uchar bitt) Uchar i; for (i=0;ibitt;i+) bufi= Byte_Read(add+i); IAP_Disable(); /关闭IAP 功能, 清相关的特殊功能寄存器,使CPU 处于安全状态, /一次连续的IAP 操作完成之后建议关闭IAP 功能,不需要每次都关/字节编程,调用前需打开IAP 功能,入口:DPTR = 字节地址, A= 须编程字节的数据void Byte_Program(Uint add, Uchar ch) /打开 IAP 功能, 设置Flash 操作等待时间 IAP_CMD = 0x02; /IAP/ISP/EEPROM 字节编程命令 IAP_DATA = ch; /要编程的数据先送进IAP_DATA 寄存器

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1