//*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的值保持不變,因?yàn)槭冀Knum到此都為0 // d1=!d1; // 也可將此三句放到定時程序后,這樣,定時程序過后,num值為10000, //即達(dá)到要求定時時,(并沒有復(fù)位,因?yàn)槌绦驔]執(zhí)行完)// num=0; // 之后再輸出d1就會按要求變化// while(num<10000)//100us定時程序 { if(TF0)//查詢100us定時是否到?// timer(); } } } void timer() { TF0=0; //查詢方式必須軟件清零,否則TF一直溢出為1,計時只在第一次準(zhǔn)確// num++; }