假設你的外部晶振為12M(時鐘頻率為1M),用複合定時法,即把小值定時疊起來void t0() interrupt 1{中斷服務程式;}主函式:TMOD=0x01; //設定為定時器0工作方式1for(t=20;t>0;t--){ TH0=(65536-50000)/256; TL0=(65536-50000)%256; //賦初值使一次定時為50ms TR0=1; //開定時器t0 while(!TF0); //等待置位 TR0=0; //關定時 TF0=0; //清標誌位}TF0=1; //親自置位TF0,是開啟中斷前提IE=0x82; //開允許位EA,ET0若想精確一些,由於中斷置位的操作會花3~8個時鐘週期;所以可把初值增大3~8,即TH0=(65536-49997)/256;TL0=(65536-49997)%256還可用編譯軟體除錯(先設定外部晶振值為12M)測量延時時間
假設你的外部晶振為12M(時鐘頻率為1M),用複合定時法,即把小值定時疊起來void t0() interrupt 1{中斷服務程式;}主函式:TMOD=0x01; //設定為定時器0工作方式1for(t=20;t>0;t--){ TH0=(65536-50000)/256; TL0=(65536-50000)%256; //賦初值使一次定時為50ms TR0=1; //開定時器t0 while(!TF0); //等待置位 TR0=0; //關定時 TF0=0; //清標誌位}TF0=1; //親自置位TF0,是開啟中斷前提IE=0x82; //開允許位EA,ET0若想精確一些,由於中斷置位的操作會花3~8個時鐘週期;所以可把初值增大3~8,即TH0=(65536-49997)/256;TL0=(65536-49997)%256還可用編譯軟體除錯(先設定外部晶振值為12M)測量延時時間