/* 效果说明: 定时器中断:通过单片机计数使程序执行 一秒中断一次,中断发生时高四位亮一秒,中断发生后又回到主程序 */ #include <reg51.h> #include <stdio.h> 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; } }
时间: 2024-11-02 18:44:35