资源简介
stc8a8k64s4a12自带的IAP功能,相当于EEPROM的功能,实现掉电保存、读取

代码片段和文件信息
#include “intrins.h“
#include “urt1.h“
#define size 5
char pt[size] = {1};
char a[5] = {02468};
//
#define WT_30M 0x80
#define WT_24M 0x81
#define WT_20M 0x82
#define WT_12M 0x83
#define WT_6M 0x84
#define WT_3M 0x85
#define WT_2M 0x86
#define WT_1M 0x87
sbit Instruction = P0^0;
void IapIdle()
{
IAP_CONTR = 0; //关闭IAP功能
IAP_CMD = 0; //清除命令寄存器
IAP_TRIG = 0; //清除触发寄存器
IAP_ADDRH = 0x80; //将地址设置到非IAP区域
IAP_ADDRL = 0;
}
char IapRead(int addr)
{
char dat;
IAP_CONTR = WT_12M; //使能IAP
IAP_CMD = 1; //设置IAP读命令
IAP_ADDRL = addr; //设置IAP低地址
IAP_ADDRH = addr >> 8; //设置IAP高地址
IAP_TRIG = 0x5a; //写触发命令(0x5a)
IAP_TRIG = 0xa5; //写触发命令(0xa5)
_nop_();
dat = IAP_DATA; //读IAP数据
IapIdle(); //关闭IAP功能
return dat;
}
void IapProgram(int addr char dat)
{
IAP_CONTR = WT_12M; //使能IAP
IAP_CMD = 2; //设置IAP写命令
IAP_ADDRL = addr; //设置IAP低地址
IAP_ADDRH = addr >> 8; //设置IAP高地址
IAP_DATA = dat; //写IAP数据
IAP_TRIG = 0x5a; //写触发命令(0x5a)
IAP_TRIG = 0xa5; //写触发命令(0xa5)
_nop_();
IapIdle(); //关闭IAP功能
}
void IapErase(int addr)
{
IAP_CONTR = WT_12M; //使能IAP
IAP_CMD = 3; //设置IAP擦除命令
IAP_ADDRL = addr; //设置IAP低地址
IAP_ADDRH = addr >> 8; //设置IAP高地址
IAP_TRIG = 0x5a; //写触发命令(0x5a)
IAP_TRIG = 0xa5; //写触发命令(0xa5)
_nop_(); //
IapIdle(); //关闭IAP功能
}
void delay(int xx)
{
int xy;
for(x=xx;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
char i = 0;
Uart1_Init();
for(i=0;i {
pt[i] = IapRead(0x0040+i);
}
//写入数据
IapErase(0x0040);//从首地址擦除
for(i=0;i {
IapProgram(0x0040+ia[i]);//填充数据
delay(300);
Instruction = 0xfe;//程序进程指示
}
//串口打印数据
i=0;
while(i {
Send_num(pt[i]);
i++;
}
Instruction = 1;
while (1);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-01-23 23:33 掉电保存\
文件 55733 2019-01-23 23:32 掉电保存\IAP.uvopt
文件 13626 2018-12-31 20:32 掉电保存\IAP.uvproj
文件 43879 2018-12-29 22:19 掉电保存\STC8.H
文件 42512 2019-01-23 23:33 掉电保存\URT1
文件 12101 2019-01-23 23:33 掉电保存\URT1.M51
文件 1816 2019-01-23 23:33 掉电保存\URT1.hex
文件 53 2019-01-23 23:33 掉电保存\URT1.lnp
文件 3045 2019-01-23 23:33 掉电保存\URT1.lst
文件 20198 2019-01-23 23:33 掉电保存\URT1.obj
文件 461 2019-01-23 23:33 掉电保存\URT1.plg
目录 0 2018-12-31 13:21 掉电保存\USER\
目录 0 2018-12-31 13:20 掉电保存\USER\oled\
文件 9154 2017-08-04 16:51 掉电保存\USER\oled\oled.c
文件 1668 2018-12-29 22:32 掉电保存\USER\oled\oled.h
文件 16837 2017-08-04 16:39 掉电保存\USER\oled\oledfont.h
目录 0 2018-12-31 13:20 掉电保存\USER\uart1\
文件 1130 2019-01-01 01:09 掉电保存\USER\uart1\URT1.c
文件 223 2019-01-01 01:10 掉电保存\USER\uart1\URT1.h
文件 5724 2019-01-23 23:33 掉电保存\main.LST
文件 23161 2019-01-23 23:33 掉电保存\main.OBJ
文件 2905 2019-01-03 23:35 掉电保存\main.c
文件 17951 2018-12-29 23:05 掉电保存\oled.lst
文件 36916 2018-12-29 23:05 掉电保存\oled.obj
相关资源
- STC8951系列单片机中方指南
- Omron ETN21模块进行modbustcp通讯
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- 51单片机PWM程序,占空比、周期可调整
- 单片机和adc0809数字电压表
- PIC单片机完成的电子密码锁
- 基于MFC扩展CListCtrl子项显示图片并叠
- 单片机、ADC0808809设计简易数字电压表
- 51单片机多功能自行车测速仪
- 单片机做的6位时分秒数字钟
- 单片机电子时钟 闹钟 日历
- 音乐代码转换软件 单片机编程时用
- 单片机课程设计 篮球计分器
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 单片机与温度传感器DS18B20的程序设计
- 51单片机基于protues的几个仿真实例
- 基于52单片机的直流电压测量
- 38k单片机红外发送代码、keil
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 武汉理工大学 单片机课程设计 16*16点
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- 浙江工业大学2005-2006学年单片机习题
- 单片机与PC机串口通讯仿真
评论
共有 条评论