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

📄 main.c

📁 从零开始学51单片机源代码
💻 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 + -