资源简介
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
相关资源
- 51单片机-双机串行通信注释版
- 基单片机汇编的停车计费系统
- 51单片机红外通信
- lcd12864最全中文资料
- 基于51单片机的红外循迹小车
- 51定时器计算器
- Mstcpip.h免费
- 基于stc8单片机的密码锁源码.rar
- 基于51单片机的自动化灌溉系统程序
- STC12C5A60S2的内部AD和PWM的程序
- Altium Designer 的 PCB Logo Creator脚本文件
- 基于51单片机的RC522rfid门禁系统
- 四个开关流水灯
- 8088/8086 8255控制小灯亮灭
- 8088/8086单片机 DAC0832三角波 汇编程序
- 单片机仿真抢答器.zip
- 蓝桥杯单片机
- PIC16F877A和LCD1602液晶显示以及mpx4250压
- 单片机内部资源的C51编程.ppt
- PIC单片机的复位系统模块
- 基于单片机的线阵CCD驱动及采集系统
- 画出用74ls194a组成16位双向移位寄存器
- 基于LabVIEW的单片机温度自动测试系统
- 51单片机驱动步进电机(汇编语言)
- 51单片机秒脉冲程序
- 基于STC15W408AS的串口DS1302时钟
- 基于AT89S52单片机交通灯控制系统的设
- 基于STC15F2K60S2单片机的温湿度+CO2测量
- 51单片机HMC5883和qmc5883来做电子指南针
- Proteus模拟基于51单片机的波形发生器
评论
共有 条评论