//*f=6MHZ,定時器0以工作方式2(自動重裝8位定時器模式)、查詢方式產(chǎn)生100us定時,
//并在P0.0輸出周期為2s的連續(xù)方波r控制LED燈,即亮1s滅1s*//
#include<reg52.h>
sbit d1=P0^0;
void timer();
unsigned int num,tt;
void main()
{
TMOD=0X02; //調(diào)置工作方式//
TH0= 0Xce; //設(shè)初值
TL0=0Xce;
IE=0X00; //關(guān)中斷
TR0=1; //定時器啟動
while(1) //大循環(huán)
{
if(num==10000) //必須加此大循環(huán),否則程序從頭開始,所有變量均復(fù)位,
//d1的值保持不變,因為始終num到此都為0 //
d1=!d1; // 也可將此三句放到定時程序后,這樣,定時程序過后,num值為10000,
//即達(dá)到要求定時時,(并沒有復(fù)位,因為程序沒執(zhí)行完)//
num=0; // 之后再輸出d1就會按要求變化//
while(num<10000)//100us定時程序
{
if(TF0)//查詢100us定時是否到?//
timer();
}
}
}
void timer()
{
TF0=0; //查詢方式必須軟件清零,否則TF一直溢出為1,計時只在第一次準(zhǔn)確//
num++;
}