STC15F2K60S2单片机利用24C02记录单片机上电次数

STC15F2K60S2单片利用24C02记录单片机上电次数


-效果演示:
STC15F2K60S2单片机利用24C02记录单片机上电次数_第1张图片

  • AT24C02N接线说明:
    STC15F2K60S2单片机利用24C02记录单片机上电次数_第2张图片
  • STC15F2K60S2引脚功能

STC15F2K60S2单片机利用24C02记录单片机上电次数_第3张图片

源代码参考《51单片机轻松入门-基于STC15W4K系列》配套例程

  • 代码架构
    STC15F2K60S2单片机利用24C02记录单片机上电次数_第4张图片

如果使用不同的晶振频率,请在uart_debug.c文件中UART_init()函数里重新设置初值,程序设置的默认初值是采用的11.0592MHz的晶振,9600波特率的速度。

主程序代码

#include "PowerUP.H" 
#include "24C01_02.H"
#include "myfun.h"
/*****************************
 ★★★★★★★★★★★★★★★★★★★★★★★★
利用24C02记录单片机上电次数
如果使用不同的晶振频率,请在uart_debug.c文件中UART_init()里重新设置初值

  ★★★★★★★★★★★★★★★★★★★★★★★★*/

struct POWER_UP Power_up; 
void port_mode()            // 端口模式
{
	P0M1=0x00; P0M0=0x00;P1M1=0x00; P1M0=0x00;P2M1=0x00; P2M0=0x00;P3M1=0x00; P3M0=0x00;
	P4M1=0x00; P4M0=0x00;P5M1=0x00; P5M0=0x00;P6M1=0x00; P6M0=0x00;P7M1=0x00; P7M0=0x00; 
}
void main()
{  
	port_mode();	       // 所有IO口设为准双向弱上拉方式。
	RdFromROM(SlaveADDR,E2P_RECORD_ADDR,(u8*)&Power_up,sizeof(struct POWER_UP)); // 芯片硬件地址、存储单元地址、数据组、写入字节数
	if (Power_up.flag != POWER_UP_MARK)
	{
		Power_up.flag = POWER_UP_MARK;
		Power_up.times = 1;
	}
	else
	{
		Power_up.times++;
	}
 	WrToRomB(SlaveADDR, E2P_RECORD_ADDR,(u8 *)&Power_up,sizeof(struct POWER_UP));  // 芯片硬件地址、存储单元地址、数据组、写入字节数	
  	UART_init();
	UART_Send_StrNum("上电次数:",Power_up.times);		//	串口输出上电次数,波特率:9600 /11.0592MHZ
	while(1){
	UART_Send_Str("perseverance51");
	Delay1000ms();	
	P10 =!P10;//反转P10 IO口状态
	}
}



程序源码

链接:https://pan.baidu.com/s/1bjnWmdqRS2AaA19W_oIE6g 
提取码:h2xi

你可能感兴趣的:(AT24C02,STC单片机)