復(fù)費(fèi)率電能表程序
發(fā)布時間:2012/6/13 19:34:48 訪問次數(shù):1451
復(fù)費(fèi)率電能表程序主要BT8376EPF由主程序、定時器TO溢出中斷處理子程序、定時器T1輸入捕捉(紅外接收)中斷處理子程序、定時器T2溢出中斷處理子程序、INTO外部中斷處理子程序和顯示子程序等部分組成。
大部分程序前幾期的文章已經(jīng)介紹,有些也只是作了一些改動,故這些部分就不介紹了,詳細(xì)的源程序可以從Ⅸ無線圖2“調(diào)時”和“調(diào)分”對應(yīng)的紅外脈沖信號電》雜志網(wǎng)站下載,這里主要介紹一下用作時鐘計時的定時器T2溢出中斷處理子程序,見程序2。
單片機(jī)初始化時定時器T2的時鐘源預(yù)分頻系數(shù)取1024,計數(shù)器初始取Ox06,計滿250個數(shù)即產(chǎn)生溢出中斷,這樣定時時間為:0.125US×1024×250=32000Us=32ms,中斷1875次的時問正好是1分鐘。
好多人認(rèn)為用定時器計時做時鐘精度不高,其實這是一個誤區(qū),精度不高的原因是使用不當(dāng),主要原因有兩個:一是在時鐘源沒有使用預(yù)分頻器的情況下,中斷處理時沒有對響應(yīng)中斷、現(xiàn)場保護(hù)和計數(shù)器重賦初始值所需的時間進(jìn)行精確補(bǔ)償,就AVR單片機(jī)而言這些工作通常需要1 0多個時鐘周期來完成。以使用1 6位定時器、定時時間8ms(使用8MHz晶體,定時器時鐘源不預(yù)分頻時的最大定時時間為8.192ms)為例,不補(bǔ)償?shù)脑?天時間將至少慢(0.125×10/8000)×3600×24=13,5(s),這是因為計數(shù)器在計數(shù)器重新賦初始值時已少計了10多個數(shù),下次溢出的時間也就推遲了,使2次中斷產(chǎn)生的間隔比理論計算值長。如果時鐘源使用分頻系數(shù)為16以上的預(yù)分頻器情況就不同了,因為在響應(yīng)中斷的過程中預(yù)分頻器并沒有停止計數(shù),在中斷處理程序?qū)τ嫈?shù)器重新賦初始值時預(yù)分頻器還沒有產(chǎn)生進(jìn)位,所以沒有丟失數(shù)據(jù)。這里T2時鐘源采用1 024預(yù)分頻,自然不會因少計數(shù)而產(chǎn)生計時誤差。在定時器時鐘源不使用預(yù)分頻器的情況下,建議大家將定時器設(shè)置為CTCI作模式,使用比較匹配中斷,這樣在產(chǎn)生比較匹配中斷時定時器的計數(shù)器是立即自動清零酌,不會造成計數(shù)丟失。
定時精度不高的第二個原因是中斷程序使用不當(dāng),一是本身中斷程序處理的時間大于定時時間,造成不能及時響應(yīng)下一次中斷;二是在其他中斷程序處理過程中發(fā)了定時中斷,又沒有使用中斷嵌套提高定時中斷的級別(AVR單片機(jī)的硬件缺省方式不支持高優(yōu)先級中斷打斷低優(yōu)先級中斷)。
大部分程序前幾期的文章已經(jīng)介紹,有些也只是作了一些改動,故這些部分就不介紹了,詳細(xì)的源程序可以從Ⅸ無線圖2“調(diào)時”和“調(diào)分”對應(yīng)的紅外脈沖信號電》雜志網(wǎng)站下載,這里主要介紹一下用作時鐘計時的定時器T2溢出中斷處理子程序,見程序2。
單片機(jī)初始化時定時器T2的時鐘源預(yù)分頻系數(shù)取1024,計數(shù)器初始取Ox06,計滿250個數(shù)即產(chǎn)生溢出中斷,這樣定時時間為:0.125US×1024×250=32000Us=32ms,中斷1875次的時問正好是1分鐘。
好多人認(rèn)為用定時器計時做時鐘精度不高,其實這是一個誤區(qū),精度不高的原因是使用不當(dāng),主要原因有兩個:一是在時鐘源沒有使用預(yù)分頻器的情況下,中斷處理時沒有對響應(yīng)中斷、現(xiàn)場保護(hù)和計數(shù)器重賦初始值所需的時間進(jìn)行精確補(bǔ)償,就AVR單片機(jī)而言這些工作通常需要1 0多個時鐘周期來完成。以使用1 6位定時器、定時時間8ms(使用8MHz晶體,定時器時鐘源不預(yù)分頻時的最大定時時間為8.192ms)為例,不補(bǔ)償?shù)脑?天時間將至少慢(0.125×10/8000)×3600×24=13,5(s),這是因為計數(shù)器在計數(shù)器重新賦初始值時已少計了10多個數(shù),下次溢出的時間也就推遲了,使2次中斷產(chǎn)生的間隔比理論計算值長。如果時鐘源使用分頻系數(shù)為16以上的預(yù)分頻器情況就不同了,因為在響應(yīng)中斷的過程中預(yù)分頻器并沒有停止計數(shù),在中斷處理程序?qū)τ嫈?shù)器重新賦初始值時預(yù)分頻器還沒有產(chǎn)生進(jìn)位,所以沒有丟失數(shù)據(jù)。這里T2時鐘源采用1 024預(yù)分頻,自然不會因少計數(shù)而產(chǎn)生計時誤差。在定時器時鐘源不使用預(yù)分頻器的情況下,建議大家將定時器設(shè)置為CTCI作模式,使用比較匹配中斷,這樣在產(chǎn)生比較匹配中斷時定時器的計數(shù)器是立即自動清零酌,不會造成計數(shù)丟失。
定時精度不高的第二個原因是中斷程序使用不當(dāng),一是本身中斷程序處理的時間大于定時時間,造成不能及時響應(yīng)下一次中斷;二是在其他中斷程序處理過程中發(fā)了定時中斷,又沒有使用中斷嵌套提高定時中斷的級別(AVR單片機(jī)的硬件缺省方式不支持高優(yōu)先級中斷打斷低優(yōu)先級中斷)。
復(fù)費(fèi)率電能表程序主要BT8376EPF由主程序、定時器TO溢出中斷處理子程序、定時器T1輸入捕捉(紅外接收)中斷處理子程序、定時器T2溢出中斷處理子程序、INTO外部中斷處理子程序和顯示子程序等部分組成。
大部分程序前幾期的文章已經(jīng)介紹,有些也只是作了一些改動,故這些部分就不介紹了,詳細(xì)的源程序可以從Ⅸ無線圖2“調(diào)時”和“調(diào)分”對應(yīng)的紅外脈沖信號電》雜志網(wǎng)站下載,這里主要介紹一下用作時鐘計時的定時器T2溢出中斷處理子程序,見程序2。
單片機(jī)初始化時定時器T2的時鐘源預(yù)分頻系數(shù)取1024,計數(shù)器初始取Ox06,計滿250個數(shù)即產(chǎn)生溢出中斷,這樣定時時間為:0.125US×1024×250=32000Us=32ms,中斷1875次的時問正好是1分鐘。
好多人認(rèn)為用定時器計時做時鐘精度不高,其實這是一個誤區(qū),精度不高的原因是使用不當(dāng),主要原因有兩個:一是在時鐘源沒有使用預(yù)分頻器的情況下,中斷處理時沒有對響應(yīng)中斷、現(xiàn)場保護(hù)和計數(shù)器重賦初始值所需的時間進(jìn)行精確補(bǔ)償,就AVR單片機(jī)而言這些工作通常需要1 0多個時鐘周期來完成。以使用1 6位定時器、定時時間8ms(使用8MHz晶體,定時器時鐘源不預(yù)分頻時的最大定時時間為8.192ms)為例,不補(bǔ)償?shù)脑?天時間將至少慢(0.125×10/8000)×3600×24=13,5(s),這是因為計數(shù)器在計數(shù)器重新賦初始值時已少計了10多個數(shù),下次溢出的時間也就推遲了,使2次中斷產(chǎn)生的間隔比理論計算值長。如果時鐘源使用分頻系數(shù)為16以上的預(yù)分頻器情況就不同了,因為在響應(yīng)中斷的過程中預(yù)分頻器并沒有停止計數(shù),在中斷處理程序?qū)τ嫈?shù)器重新賦初始值時預(yù)分頻器還沒有產(chǎn)生進(jìn)位,所以沒有丟失數(shù)據(jù)。這里T2時鐘源采用1 024預(yù)分頻,自然不會因少計數(shù)而產(chǎn)生計時誤差。在定時器時鐘源不使用預(yù)分頻器的情況下,建議大家將定時器設(shè)置為CTCI作模式,使用比較匹配中斷,這樣在產(chǎn)生比較匹配中斷時定時器的計數(shù)器是立即自動清零酌,不會造成計數(shù)丟失。
定時精度不高的第二個原因是中斷程序使用不當(dāng),一是本身中斷程序處理的時間大于定時時間,造成不能及時響應(yīng)下一次中斷;二是在其他中斷程序處理過程中發(fā)了定時中斷,又沒有使用中斷嵌套提高定時中斷的級別(AVR單片機(jī)的硬件缺省方式不支持高優(yōu)先級中斷打斷低優(yōu)先級中斷)。
大部分程序前幾期的文章已經(jīng)介紹,有些也只是作了一些改動,故這些部分就不介紹了,詳細(xì)的源程序可以從Ⅸ無線圖2“調(diào)時”和“調(diào)分”對應(yīng)的紅外脈沖信號電》雜志網(wǎng)站下載,這里主要介紹一下用作時鐘計時的定時器T2溢出中斷處理子程序,見程序2。
單片機(jī)初始化時定時器T2的時鐘源預(yù)分頻系數(shù)取1024,計數(shù)器初始取Ox06,計滿250個數(shù)即產(chǎn)生溢出中斷,這樣定時時間為:0.125US×1024×250=32000Us=32ms,中斷1875次的時問正好是1分鐘。
好多人認(rèn)為用定時器計時做時鐘精度不高,其實這是一個誤區(qū),精度不高的原因是使用不當(dāng),主要原因有兩個:一是在時鐘源沒有使用預(yù)分頻器的情況下,中斷處理時沒有對響應(yīng)中斷、現(xiàn)場保護(hù)和計數(shù)器重賦初始值所需的時間進(jìn)行精確補(bǔ)償,就AVR單片機(jī)而言這些工作通常需要1 0多個時鐘周期來完成。以使用1 6位定時器、定時時間8ms(使用8MHz晶體,定時器時鐘源不預(yù)分頻時的最大定時時間為8.192ms)為例,不補(bǔ)償?shù)脑?天時間將至少慢(0.125×10/8000)×3600×24=13,5(s),這是因為計數(shù)器在計數(shù)器重新賦初始值時已少計了10多個數(shù),下次溢出的時間也就推遲了,使2次中斷產(chǎn)生的間隔比理論計算值長。如果時鐘源使用分頻系數(shù)為16以上的預(yù)分頻器情況就不同了,因為在響應(yīng)中斷的過程中預(yù)分頻器并沒有停止計數(shù),在中斷處理程序?qū)τ嫈?shù)器重新賦初始值時預(yù)分頻器還沒有產(chǎn)生進(jìn)位,所以沒有丟失數(shù)據(jù)。這里T2時鐘源采用1 024預(yù)分頻,自然不會因少計數(shù)而產(chǎn)生計時誤差。在定時器時鐘源不使用預(yù)分頻器的情況下,建議大家將定時器設(shè)置為CTCI作模式,使用比較匹配中斷,這樣在產(chǎn)生比較匹配中斷時定時器的計數(shù)器是立即自動清零酌,不會造成計數(shù)丟失。
定時精度不高的第二個原因是中斷程序使用不當(dāng),一是本身中斷程序處理的時間大于定時時間,造成不能及時響應(yīng)下一次中斷;二是在其他中斷程序處理過程中發(fā)了定時中斷,又沒有使用中斷嵌套提高定時中斷的級別(AVR單片機(jī)的硬件缺省方式不支持高優(yōu)先級中斷打斷低優(yōu)先級中斷)。
上一篇:制作與使用
熱門點擊
- 兩組副邊移相變壓器電壓矢量圖
- 采用P溝MOSFET和N溝MOSFET的電路
- 復(fù)費(fèi)率電能表程序
- 工作原理
- 筆筒式萬年歷
- RL=lOOQ時A、B、C點的電位
- 人機(jī)對話裝置
- 步進(jìn)電動機(jī)的特點
- 變頻器的散熱
- 變頻器的諧波和應(yīng)對措施
推薦技術(shù)資料
- DFRobot—玩的就是
- 如果說新車間的特點是“靈動”,F(xiàn)QPF12N60C那么... [詳細(xì)]
- CV/CC InnoSwitch3-AQ 開
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門信號調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究