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

📄 fmfb5sx3-stc11.c

📁 关于stc11f32xe的应用
💻 C
字号:
#include <reg52.h>
#include <intrins.h>
#include <eeprom.h>
#include <delay.h>
#include <dog.h>

#define uchar unsigned char
#define uint  unsigned int

uchar code num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//此数组为  !!!  0~9,不显示 !!!
uchar code numge[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};// 带.数字1~9
uchar code numbai[]={0x00,0x06};
uchar code wei[]={0x8f,0x4f,0x2f,0x1f};//bai,shi,ge,xsh

uchar updata[]={0,5,5,0};  //EEPROM shuzu
uint  out[]={0,0,0,0};     //output shuzu

uchar bai,shi,ge,xsh;

sbit b0=P1^7;              //output 位定义
sbit b1=P1^6;
sbit b2=P1^5;
sbit b3=P2^7;
sbit b4=P2^6;
sbit b5=P2^5;
sbit b6=P2^4;
sbit b7=P2^3;
sbit b8=P2^2;
sbit b9=P2^1;
sbit b10=P2^0;

sbit key_up=P0^0;   
sbit key_down=P0^1; 
sbit key_remember=P0^2; 

void display()
{	
		P0=wei[0];
		P3=numbai[bai];
		Delay_MS (1);
WDT_CONTR=0x3c;   //喂狗 
		P0=wei[1];
		P3=num[shi];
		Delay_MS (1);

		P0=wei[2];
		P3=numge[ge];
		Delay_MS (1);	
WDT_CONTR=0x3c;   //喂狗
		P0=wei[3];
		P3=num[xsh];
		Delay_MS (1); 
}

													/*
													void reset()
													{
														Sector_Erase(0x0000);
														Byte_Program(0x0000,0);
														Sector_Erase(0x0200);
														Byte_Program(0x0200,0);
														Sector_Erase(0x0400);
														Byte_Program(0x0400,0);
														Sector_Erase(0x0600);
														Byte_Program(0x0600,0);
													}
													*/
void sys_init()
{

	bai=Byte_Read(0x0000);//读入eeprpm 数据
	shi=Byte_Read(0x0200);
	ge =Byte_Read(0x0400);
	xsh=Byte_Read(0x0600);
WDT_CONTR=0x3c;   //喂狗

}
void remember_ready()     
{
	updata[0]=bai;
	updata[1]=shi;
	updata[2]= ge;
	updata[3]=xsh;	
}
void remember()
{	
	Sector_Erase(0x0000);
	Byte_Program(0x0000,updata[0]);
	Sector_Erase(0x0200);
	Byte_Program(0x0200,updata[1]);
	Sector_Erase(0x0400);
	Byte_Program(0x0400,updata[2]);
	Sector_Erase(0x0600);
	Byte_Program(0x0600,updata[3]);

WDT_CONTR=0x3c;   //喂狗
}
void key()
{
	if(key_up==0)
	{
	 display(); 	
	    Delay_MS (30);
		if(key_up==0)
		{display(); 
			xsh++;
			if(xsh==10)
				{display(); 
					xsh=0;ge++;
					if(ge==10)
						{display(); 
							ge=0;shi++;
							if(shi==10)
							{display(); 
								shi=0;bai++;
								if(bai==2){bai=0;}	
							}
						}	
				}
		
		}
	display(); 
	}

WDT_CONTR=0x3c;   //喂狗

	if(key_down==0)
	{
	display(); 
		Delay_MS (30);
		if(key_down==0)
		{display(); 
			xsh--;
			if(xsh==-1)
				{display(); 
					xsh=9;ge--;
					if(ge==-1)
						{display(); 
							ge=9;shi--;
							if(shi==-1)
							{display(); 
								shi=9;bai--;
								if(bai==-1){bai=1;}	
							}
						}	
				}
		
		}
	display(); 
	}
	display();                                
	remember_ready();                       //刷新updata

WDT_CONTR=0x3c;   //喂狗

	if(key_remember==0)
	{
 		Delay_MS (40);
		if(key_remember==0)
		{
			remember();
 		}
	display(); 
	}
}
void output()
{
	uint output_data;
	out[0]=Byte_Read(0x0000);
	out[1]=Byte_Read(0x0200);
	out[2]=Byte_Read(0x0400);
	out[3]=Byte_Read(0x0600);

	output_data = out[0]*1000+out[1]*100+out[2]*10+out[3];

WDT_CONTR=0x3c;   //喂狗
																				
   b10=output_data%2;
	b9=output_data/2%2;
	b8=output_data/2/2%2;
	b7=output_data/2/2/2%2;
	b6=output_data/2/2/2/2%2;
	b5=output_data/2/2/2/2/2%2;
	b4=output_data/2/2/2/2/2/2%2;
	b3=output_data/2/2/2/2/2/2/2%2;
	b2=output_data/2/2/2/2/2/2/2/2%2;
	b1=output_data/2/2/2/2/2/2/2/2/2%2;
    b0=output_data/2/2/2/2/2/2/2/2/2/2%2;
	
}
//--------------------主函数------------------------
void main()
{
WDT_CONTR=0x3c;   //喂狗
	sys_init();
	while(1)
	{
	key();
	
WDT_CONTR=0x3c;   //喂狗

	output();

	}
}



⌨️ 快捷键说明

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