开机次数统计c语言代码大全,STC单片机内部EEPROM记录开机次数(c语言).doc

STC单片机内部EEPROM记录开机次数(c语言)

/*STC单片机内部EEPROM八位数码管显示开机次数。本文档仅以学习交流之用。*/

#include

#include

typedef unsigned char BYTE;

typedef unsigned int WORD;

sfr IAP_DATA =0XE2;//STC15系列为0XC2

sfr IAP_ADDRH=0XE3;//STC15系列为0XC3

sfr IAP_ADDRL=0XE4;//STC15系列为0XC4

sfr IAP_CMD=0XE5;//STC15系列为0XC5

sfr IAP_TRIG=0XE6;//STC15系列为0XC6

sfr IAP_CONTR=0xe7;//STC15系列为0XC7

#define CMD_IALE 0

#define CMD_READ 1

#define CMD_PROGRAM 2

#define CMD_ERASE 3

#define ENABLE_IAP 0X81//根据单片机的频率选。详细见数据手册。我为12MHZ

STC15系列:

STC89C51:

#define IAP_ADDRESS 0X2000//自己选择的扇区

unsigned char code dofly_table[10]={0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0X7f};//对应显示1~。

void IapIdle();

BYTE IapReadByte(WORD addr);

void IapProramByte(WORD addr,BYTE dat);

void IapErasector(WORD addr);

void main()

{ BYTE i;

i=IapReadByte(IAP_ADDRESS);

IapErasector(IAP_ADDRESS);

i++;

IapProramByte(IAP_ADDRESS,i);

P1=dofly_table[i];

while(1);

}

void IapIdle()

{

IAP_CONTR=0;

IAP_CMD=0;

IAP_TRIG=0;

IAP_ADDRH=0X80;

IAP_ADDRL=0;

}

BYTE IapReadByte(WORD addr)

{

BYTE dat;

IAP_CONTR=ENABLE_IAP;

IAP_CMD=CMD_READ;

IAP_ADDRL=addr;

IAP_ADDRH=addr>>8;

IAP_TRIG=0X46;//STC15系列为0X5A

IAP_TRIG=0Xb9;//STC15系列为0XA5

_nop_;

dat=IAP_DATA;

IapIdle();

return dat;

}

void IapProramByte(WORD addr,BYTE dat)

{

IAP_CONTR=ENABLE_IAP;

IAP_CMD=CMD_PROGRAM;

IAP_ADDRL=addr;

IAP_ADDRH=addr>>8;

IAP_DATA=dat;

IAP_TRIG=0X46;//STC15系列为0X5A

IAP_TRIG=0Xb9;//STC15系列为0XA5

_nop_;

IapIdle();

}

void IapErasector(WORD addr)

{

IAP_CONTR=ENABLE_IAP;

IAP_CMD=CMD_ERASE;

IAP_ADDRL=addr;

IAP_ADDRH=addr>>8;

IAP_TRIG=0X46;//STC15系列为0X5A

IAP_TRIG=0Xb9;//STC15系列为0XA5

_nop_;

IapIdle();

}

2014.11.24. 21:55 小谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值