单片机设置12分频c语言,AT89C51单片机,如何实现延迟一秒
滿意答案
愛在身邊lovely
2013.09.07
采納率:59%????等級:12
已幫助:7408人
其實可以用C語言實現的,先要定義好定時器的初值
不管你使用多大的晶振,使用51單片機,一般都是12分頻出來,也就可以得出一個機器周期
機器周期=12/n(n指晶振頻率),假設你要定時的時間為M
那么定時的初值為:
M/機器周期=初值;
TH0=(65536-初值)%256;
TL0=(65536-初值)/256;
將(65536-初值)所得的值化成16進制,其高位就是TH0的值,低位為TL0的值
例如用12M晶振做1ms定時計算如下:
機器周期=12/12*10^6=1us(微秒)
定時初值=(1*10^-3)/(1*10^-6)=1000;
所以:TH0=(65536-1000)%256;
TL0=(65536-1000)/256;
將65536-1000=64536化為16進制為:0xFC18
TH0=0xFC;
TL0=0X18;
定好初值后要延遲一秒就定一個延時參數,這里使用1000就行了(定時為1ms)中斷程序為:
timer0() interrupt 1 // 1ms延時(12.0MHz)
{
TR0=0;
ET0=0;
TH0=0xfc;
TL0=0x18;
if(delayTimes1!=0) delayTimes1--;
TR0=1;
ET0=1;
}
調用程序大致為:
if(delay_flag==0)
{
delay_flag=1;
delayTimes1=1000;
}
if(delayTimes1==0)
{
delay_flag=0;
這里寫定時到的操作就行了;
}
(在主程序中使用delay_ms()這樣的程序會影響程序運行速度的,使用中斷就不會)
00分享舉報
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的单片机设置12分频c语言,AT89C51单片机,如何实现延迟一秒的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言不同类型指针间的强转,C语言中不同
- 下一篇: android jni 字符串拼接,JN