/*
效果说明:
定时器中断:通过单片机计数使程序执行
一秒中断一次,中断发生时高四位亮一秒,中断发生后又回到主程序
*/
#include
#include
unsigned int i;
void delay()//延时子函数
{
i=1000000;
while(i--);//执行一次大概要一毫秒 这里给它一秒就是中断发生时高四位亮一秒
}
//中断初始化
void zhongduan1()
{
ET0 = 1;//启动计数器中断开关
EA = 1;//总开关
/*
定时器的核心在这
*/
TMOD = 0x09;
TH0 = 0x0D8;
TL0 = 0x0F0;
TR0 = 1;//启动定时器
}
void main()//主函数
{
zhongduan1();//中断初始化
while(1)//while死循环,主程序一直执行,也就是点亮低四位一直亮,中断发生时就跳出执行中断函数程序,中断发生后又回到主程序
{
P0 = 0xf0;//点亮低四位
}
}
//中断程序 也就是中断后要执行的程序
void zhongduan() interrupt 1
{
i++;
if(i == 10)//让中断函数再循环10再执行其程序
{ i = 0;
P0 = ~0xf0;//高四位亮
delay();//延时子函数调用 变现为中断发生时所要执行程序的时间
TH0 = 0x0D8;
TL0 = 0x0F0;
}
}