📄 main.c
字号:
//main.c
#include <reg51.h> //包含头文件
#include "fun.h"
void INT0_interrupt() interrupt 0
{
TR0=0;//关定时器
ET0 = 0;//关定时器中断
IAP_erase (0x20, 0x00); //擦除扇区
IAP_write (0x20, 0, count_in_T0);//写计数值
IAP_write (0x20, 1, display_num);//写显示值
}
void Timer0_interrupt() interrupt 1
{
TH0 = T0_50ms >> 8; //重装初值
TL0 = T0_50ms;
if ((++ count_in_T0) == 20)//count_in_T0自加到20,计时1s
{
count_in_T0 = 0;
if ( (++ display_num) ==60)
{//display_num自加1后判断是否等于60
display_num = 0;
}
}
}
main()
{
unsigned char shi, ge; //定义十位、个位要输出的数据
ms_delay(100);
init_port();
init_timer();
//读上次断电时的参数
count_in_T0 = IAP_read (0x20, 0);
display_num = IAP_read (0x20, 0);
//如果读出来的参数异常,数据清零
//EEPROM存储区的初始值是0xff,也在异常数据范围内
if (count_in_T0 >20 || display_num > 60)
{
count_in_T0 = 0;
display_num = 0;
}
//把两个数码管都关闭
en2 = 1;
en1 = 1;
IT0 = 1;//设置INT0为下降沿触发
EX0 = 1;//允许INT0中断
EA = 1;//开总中断
while(1)
{
shi = display_num / 10;
ge = display_num % 10;
display(shi,ge);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -