|
#include <reg52.h>
//#define X 50000 //宏定義一個(gè)數(shù),方便修改時(shí)間
sbit led_1 = P1^0; //定義P1口的第1位(即P1.0)
unsigned char count; //定義全局變量,不用賦值,默認(rèn)為0
void init();
void main ()
{
init();
while (1)
{
if(count == 20 /*5*/) //每一秒進(jìn)入一次if函數(shù)
{
count = 0; //count清零,重新開(kāi)始加
led_1 = ~led_1; //位取反,實(shí)現(xiàn)LED等的閃爍效果
}
}
}
void init()
{
EA = 1; //開(kāi)啟中斷總開(kāi)關(guān)
ET0 = 1; //開(kāi)啟定時(shí)器0中斷開(kāi)關(guān)
TMOD = 0x01; //設(shè)置定時(shí)器0為工作方式1
TH0 = (65536 - 45872) / 256; //給定時(shí)器賦初值
TL0 = (65536 - 45872) % 256;
TR0 = 1; //使定時(shí)器0工作
}
void LED0() interrupt 1 //定時(shí)器0中斷服務(wù)程序
{
TH0 = (65536 - 45872) / 256; //每次進(jìn)入中斷程序要從初值開(kāi)始計(jì)算,否則會(huì)導(dǎo)致計(jì)算錯(cuò)誤
TL0 = (65536 - 45872) % 256;
count++; //每進(jìn)入一次中斷程序,count加一
}
|
|