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