操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    c語言實現定時器

    c語言實現定時器_c語言實現apriori算法_c語言實現神經網絡算法

    使用T2定時器實現1秒精確定時附有C程序和匯編程序先看看再說吧不錯免費使用T2定時器實現1秒精確定時使用T2定時器實現1秒精確定時2009-10-[小雨的成長]中斷精確定時1S作者小雨日期2009-4-這一課我們將告訴大家如何精確定時1S要精確定時就需要用到中斷方式并工作在自動重裝載方式這里我們用到了T2定時器它具有16位的自動重裝載功能我們知道T0T1的自動重裝載功能都是8位的用它們將會帶來很大的誤差T2定時器它有一個專門的自動重裝載寄存器當計數滿了以后它將我們預置進去的數自動的載入這樣就都很好的保證精確定時我們用的是12MHZ的晶振就算是計滿也只有幾十毫秒要定時一秒就需要一個變量來保存溢出的次數積累到了多少次之后才執行一次操作這樣就可以累加到1秒或者更長的時間才做一次操作了T2寄存器還有一個和其他寄存器不一樣的地方就是它的中斷標志位TF2要軟件清零現在我們來計算一下要精確定時那么進去中斷的次數是越少越好這樣數據更精確還能很好的防止對主函數的影響T2定時器預裝載值的計算設晶振為12MHz每秒鐘可以執行個機器周期而T2每次溢出時最多經過了65536個機器周期我們應該盡量讓T2定時器的溢出中斷的次數最少選擇每秒中斷14次每次溢出42857個機器周期不為整數且超出65536選擇每秒中斷16次每次溢出500個機器周期小于65536有效選擇每秒中斷20次每次溢出000個機器周期小于65536有效其他的就不再算了我們通過上面的計算我們可以發現我們可以選擇的方式有很多但是最佳的是每秒中斷16次每次溢出62500個機器周期下面看程序定義LED位調用定時器2自動重裝載模式定義靜態變量iTF20定時器2的中斷標志要軟件清0i計數標志自加判斷是否到1si0將靜態變量清位求反-重裝載計數器賦初值-開定時器2中斷EA1開總中斷TR21開啟定時器并設置為自動重裝載模式這里我們看到我們在中斷中用到了定義i為靜態函數靜態函數的特點函數值在調用結束后不消失保留原值即其占用的存儲單元不釋放在下一次該函數調用時該變量已有值就是上一次的函數調用結束時的值它只賦一次初值也就是說只有在第一次進入中斷時才對i賦初值在以后進入中斷執行這句時不會對i賦值這里重點給大家講講我們開發板上STC單片機的T2定時器的用法定時器2是一個16位定時計數器通過設置特殊功能寄存器T2CON中的CT2位可將其作為定時器或計數器特殊功能寄存器T2CON的描述如表1所列定時器2有3種操作模式捕獲自動重新裝載遞增或遞減計數和波特率發生器這3種模式由T2CON中的位進行選擇這里我只將和我們遞增計數自動重裝載功能有關的幾個寄存器關于T2的其他功能大家可以參看官方的一些資料TF2定時器2溢出標志定時器2溢出時置位必須由軟件清除當RCLK或TCLK1時TF2將不會置位TR2定時器2啟動停止控制位置1時啟動定時器CT2定時器計數器選擇定時器20內部定時器OSC12或OSC61外部事件計數器下降沿觸發CPRL2捕獲重裝標志置位時T2EX的負跳變產生捕獲清零時定時器2溢出或T2EX的負跳變都可使定時器自動重裝當RCLK1或TCLK1時該位無效且定時器強制為溢出時自動重裝是定時器T2一個專門存放預置數的寄存器定時器2遞增計數到并在溢出后將TF2置位然后將和中的16位值作為重新裝載值裝入定時器和的值是通過軟件預設的從表一表二可以看到因為我們復位后T2CON是全0所以只要我們設制好預置數開好中斷再將TR2置為1就能啟動T2的遞增計數自動重載功能了下面匯編程序是由嚴復平會員寫非常感謝~~51匯編定時器T2精確1s定時程序功能使用T2定時器實現1秒精確定時并閃燈晶振12MHz芯片作者日期2009年2月24日keil默認情況下只能認識標準的8051的寄存器T2不再此列需要手動加入寄存器定義控制寄存器用以程控定時器2和外部中斷操作格式溢出中斷標志位外部中斷標志位串行接口接受時鐘標志位串行接口發送時鐘標志位外部允許控制位運行控制為定時器計數器功能選擇位捕捉重裝載標志位控制寄存器用以定時器2在裝入計數方式選擇向下計數允許位輸出允許位計數寄存器低字節計數寄存器高字節啟動位計數重栽陷阱寄存器低字節計數重栽陷阱寄存器高字節定時計數器2計滿回零溢出中斷請求標志位定時器T2中斷允許定時器T2的中斷優先級控制位不過我不確定這個具體是那一位因此空了下來有知道的朋友請告訴我一聲這兩句可要可不要n04h設置t2定時器的工作模式為16位自動重裝載定時器方式定時器t2不同與定時器t0和t1它需要軟件清零016每次退出前對軟件計數器重裝初值------------------------------高準確度時鐘程序算法2009-09-作者廣州增城市電力局黃沛芳來源《電子技術應用》摘要通過對引起實時時鐘計時誤差因數的分析給出了一種提高實時時鐘長期計時準確度的實用而有效的軟件方法該方法具有成本低易實現通用性強徹底校正等優點關鍵詞實時時鐘準確度定時器軟件校正電子計時器通常以石英晶振為時鐘源時鐘源的頻率通常為幾十kHz乃至幾十MHz而學用時鐘的最小計單位一般在高頻的時鐘源脈沖通過分頻器后產生基本定時

    c語言實現定時器

    c語言實現apriori算法_c語言實現神經網絡算法_c語言實現定時器

    脈沖電子計時器的計時部分就是對基本定時脈沖進行累加產生秒分時等時間信息乃至日月年等日期信息1引起計時誤差的因數一個常規電子計時器的計時準確度取決于晶振標稱頻率fs與實際頻率fo的頻率偏差和晶振頻率的時漂溫漂等離散參數普通晶振的實際頻率與標稱頻率有較大的偏差可達萬分之五萬分之5折算到一天計時誤差就是432s一般室內氣溫變化在每天10左右對應晶振頻率溫漂10-5若以一段較長的時間取溫漂的平均值則更小因此電子計時器的誤差主要取決于晶振實際頻率與標稱頻率的偏差2減少計時誤差的方法21純硬件方法對于純硬件計時電路因分頻系數N固定不變要提高計時準確度只能調整fo使得已盡可能接近于fs常規減少計時誤差的方法是微調元件LCR的參數調節硬件頻率使得時鐘源的頻率誤差減小但此方法操作復雜沒有一定的電子技術知識和專用儀器很難校準而且會降低晶振頻率穩定度22純軟件方法由微控制器控制的實時時鐘可以采用軟件的方法消除晶振實際頻率與標稱頻率間誤差引起的計時誤差令晶振標頻率為fs而實際頻率為fo則fsk×fo若fsfo則k1否則×1fsNs×1k×1foNs是在標稱頻率fs下定時TNS的分頻系數由微控制器控制的實時時鐘可以用軟件模擬將1k歸入總的計時程序中從而消除fs和fo間偏差引來的計時誤差對于專用硬件時鐘電路如等可以采用每小時或每10分鐘讀出時間然后乘上1k再寫回芯片的方法校正對于采用可編程分頻定時器由軟件模擬時鐘功能的軟件實時時鐘則有更好的提高計時準確度的方法因為定時器的分頻系數是可以動態改變的如89C52內置的16位計數器分頻系數可以在1216內任意選取令N1kNs作為分頻系數寫入計數器這樣每個基本計時周期TNTNS從而實現軟件校正定時周期在1k×Ns剛好為整數時可以使得計時誤差為0大部分的情況1k×Ns并不是整數若將四舍五入后的值作為Ns就會帶來的量化誤差最大可達12N這是一個不容忽視的問題以12MHz的定時器定時10ms為例每天最大量化誤差累加是24×36002×若在片內RAM中定義1個字節發尾數令它的滿碼值為1N則最大量化誤差就從原來的12N下降到12×N×256對應于上述的10ms定時程序其最大量化誤差的累加值由原來的432秒天減少到秒天這是很大的改進根據精度要求可以在片內RAM中定義2個字節令它的滿碼值為1N這樣最大量化誤差就可降為12×N×65536減少量化誤差的具體算法是對于使用89C52的T2決定器若標稱為12MHz的晶振實際長期平均振蕩頻率量化精度取1字節取則分頻系數為××106×10-令[N0-N×25605]128Ni為第I決定時值可能是10000或10001這取決于Nti的進位Nti為第I次尾數暫存值每次定時中斷服務程序均執行1式取得第I次定時計數值然后實時時鐘增加10ms完成時鐘功能值得注意的是Ni是實際的計數值至于實際寫入特定定時器的數值則須根據具體定時器的遞減遞加計時性質分別寫入Ni或Ni的補碼同時定時器在溢出到新的定時值裝入并開始新定時周期這段時間將TLOAD考慮在內例如工作于自動重裝定時初值遞加定時方式時實際寫入定時器T2的捕獲自動重裝載寄存器的值是Ni的補碼即65536-Ni而對于和T1定時器則實際寫入的定時初值是Ni的補碼TLOAD對應的機器周期數3測量晶振實際長期振蕩頻率沒有專用儀器怎樣測得晶振實際長期振蕩頻率有一個很簡單的方法以標稱頻率下的定時計數值Ns作為實際計數值在電臺報時時將時間設置正確然后讓它運行一段較長的時間再與電臺的報時比較求出誤差的秒數即可算出實際頻率例如晶振標稱頻率是12Mz時鐘運行了10天快了432s則fo[10×24××24×3600]××若將上述算法編成程序讓用戶直接輸入N和NT的值或輸入運行了多少天時分秒快或慢了多少秒讓系統自動算出N和NT將會為從根本上校準時鐘帶來極大方便任何人都可以輕松地提高時鐘準確度而無需專業知識和專用儀器現在微控制器已廣泛應用于人們日常生活的各個方面電子時鐘也隨著它融入到各種電器和設備中如專門時鐘功能的石英表和各種附帶電子計時器的電器如手機普通液晶顯示電話VCD機DVD機電視及高檔音響空調遙控器電力系統微機自動化設備等高檔專用計時器如高檔石英表因為計時是它的主功能須保證計時準確度而對計時時鐘源準確度要求嚴格每天誤差在1s以下以上提到的其它電器其時鐘只是的一個附帶功能出廠時一般不嚴格校正甚至根本不做任何校正所以誤差通常在1秒天以上有些達10秒天以上每天都需校正否則運行幾天就會因誤差太大而變得不可信令用戶不勝煩惱在電力系統中無人值班變電部須安裝無功自動控制設備它根據一天中的不同時間段和電網無功情況自動投退電容器組使得電網的功率因數盡可能接近于1以利于經濟運行但有些設備仙部時鐘每天誤差5分種若將本文算法編入計時程序中讓用戶自己校正定時參數將大大提高各種附帶時鐘的計時準確度將基于軟件提高實時時鐘準確度的算法應用于普通石英晶振利用定時器的軟實時時鐘未作校正每天11s進行軟件計時校正后每10天的計時誤差1s本文提出的基于軟件提高時鐘準確度的算法具有極高的實用價值C52有三個定時器其中T2定時器比較特殊T2為16位的定時器可以設置成自動載入TF2中斷標識位需要手動清零也就是軟件置零這樣才能響應下一次中斷為流水燈每次中斷時間設置為lag一次定時---56-184定時--184di

    c語言實現apriori算法_c語言實現定時器_c語言實現神經網絡算法

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有