假设你的外部晶振为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)测量延时时间
温馨提示:答案为网友推荐,仅供参考