📄 fmfb5sx3-stc11.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 + -