日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单片机设置12分频c语言,AT89C51单片机,如何实现延迟一秒

發布時間:2024/4/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单片机设置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单片机,如何实现延迟一秒的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。