📄 main.c
字号:
/*
* check power up times
*
* author:金沙滩--刚哥
* date:2011.1.9
*/
#include "main.h"
#include "e2prom.h"
code uint8 Ledcode[13]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uint8 Led_n=0;
uint8 Led_buf[6];
POWER_UP Power_up;
void delay(uint16 cnt)
{
while (cnt--);
}
/*
* 定时器0初始化
*/
void timer0_init(void)
{
TMOD = 0x01;
TH0 = 0xF8;
TL0 = 0xCC;
TR0 = 1;
ET0 = 0;
EA = 1;
}
/*
* 数码管初始化
*/
void nixietube_init(void)
{
ADDR3 = 1;
ENLED = 0;
}
/*
* 制作数码管显示数据
*/
void make_led_number(uint32 num)
{
ET0 = 0;
Led_buf[5] = Ledcode[num/100000%10];
Led_buf[4] = Ledcode[num/10000%10];
Led_buf[3] = Ledcode[num/1000%10];
Led_buf[2] = Ledcode[num/100%10];
Led_buf[1] = Ledcode[num/10%10];
Led_buf[0] = Ledcode[num%10];
ET0 = 1;
}
/*
* 数码管显示
*/
void show_num(uint8 *buf)
{
ENLED = 1;
switch (Led_n)
{
case 0:
ADDR0 = 0;
ADDR1 = 0;
ADDR2 = 0;
P0 = buf[0];
break;
case 1:
ADDR0 = 1;
ADDR1 = 0;
ADDR2 = 0;
P0 = buf[1];
break;
case 2:
ADDR0 = 0;
ADDR1 = 1;
ADDR2 = 0;
P0 = buf[2];
break;
case 3:
ADDR0 = 1;
ADDR1 = 1;
ADDR2 = 0;
P0 = buf[3];
break;
case 4:
ADDR0 = 0;
ADDR1 = 0;
ADDR2 = 1;
P0 = buf[4];
break;
case 5:
ADDR0 = 1;
ADDR1 = 0;
ADDR2 = 1;
P0 = buf[5];
break;
}
ENLED = 0;
if (Led_n >= 5)
Led_n = 0;
else
Led_n++;
}
main()
{
nixietube_init();
timer0_init();
i2c_read_buf((uint8 *)&Power_up, E2P_RECORD_ADDR, sizeof(POWER_UP));
if (Power_up.flag != POWER_UP_MARK)
{
Power_up.flag = POWER_UP_MARK;
Power_up.times = 1;
}
else
{
Power_up.times++;
}
i2c_write_buf((uint8 *)&Power_up, E2P_RECORD_ADDR, sizeof(POWER_UP));
make_led_number(Power_up.times);
while (1);
}
void time0() interrupt 1
{
TR0 = 0;
TH0 = 0xF8;
TL0 = 0xCC;
show_num(Led_buf);
TR0 = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -