⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dianbaohu.txt

📁 掉电保护数据 数码管数据显示不变 按复位键也没用 掉电 上电数据从停止的地方开始数
💻 TXT
字号:
#include"reg52.h"//掉电数据从结束处继续开始
#define uchar unsigned char
#define uint unsigned int
sbit sda=P2^3;
sbit scl=P2^2;
uchar code led_code[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
uchar t;
uint shu;
void delay(uint z)
{
	uint b;
	for(;z>0;--z)
		for(b=114;b>0;--b);
}
void delaynop()
{;;}
void start()
{sda=1;delaynop();scl=1;sda=0;delaynop();}
void stop()
{sda=0;delaynop();scl=1;sda=1;delaynop();}
void respons()
{
	uchar i;
	scl=1;delaynop();
	if((sda==1)&&(i<100))i++;
	scl=0;delaynop();
}
void write_byte(uchar date)
{
	uchar i;
	scl=0;delaynop();
	for(i=0;i<8;i++)
	{
		date=date<<1;
		sda=CY;delaynop();
		scl=1;delaynop();
		scl=0;delaynop();
	}
}
uchar read_byte()
{
	uchar date,i;
	scl=0;delaynop();
	for(i=0;i<8;i++)
	{
		date=date<<1|sda;
		scl=1;delaynop();
		scl=0;delaynop();
	}
	return date;
}
void write_addr(uchar addr,uchar date)
{
	start();
	write_byte(0xa0);
	respons();
	write_byte(addr);
	respons();
	write_byte(date);
	respons();	
	stop();
}
uchar read_addr(uchar addr)
{
	uchar date;
	start();
	write_byte(0xa0);
	respons();
	write_byte(addr);
	respons();
	start();
	write_byte(0xa1);
	respons();
	date=read_byte();
	stop();
	return date;
}
void display(uint shu)
{
	uchar bai,shi,ge;
	bai=shu/100;
	shi=shu%100/10;
	ge=shu%10;
	P3=0xfe;
	P0=led_code[bai];
	delay(5);
	P3=0xfd;
	P0=led_code[shi];
	delay(5);
	P3=0xfb;
	P0=led_code[ge];
	delay(5);	
}
void init()
{
	P3=0xff;P0=0xff;
	sda=1;scl=1;
	TMOD=0x01;
	IE=0x82;
	TH0=0x4c;
	TL0=0x00;
	TR0=1;
}
void main()
{
	init();
	while(1)
	{
		shu=read_addr(1);
		if(t==20)
		{
			t=0;
			if(shu==255)shu=0;
			write_addr(1,++shu);			
		}
		display(shu);
	}
}
void timer0() interrupt 1
{
	TH0=0x4c;
	TL0=0x00;
	t++;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -