專(zhuān)注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

pic單片機(jī)采用查詢(xún)定時(shí)器的閃燈實(shí)驗(yàn)報(bào)告

作者:佚名   來(lái)源:互聯(lián)網(wǎng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年08月14日   【字體:

1.  實(shí)驗(yàn)?zāi)康?/span>

學(xué)習(xí)如何使用定時(shí)器

2.  任務(wù)要求

用可重定位匯編代碼完成1s為周期的閃燈實(shí)驗(yàn);

畫(huà)出程序流程圖;

驗(yàn)證程序的正確性;

3.  實(shí)驗(yàn)器材

單片機(jī)PIC16F886一片、LED燈一只、電阻任選、下載器(及相關(guān)的線)一個(gè)

4.  實(shí)驗(yàn)方案

 

 

圖 1 硬件設(shè)計(jì)圖

 

 


圖 2 軟件流程圖

計(jì)算過(guò)程:選擇Timer0,內(nèi)部振蕩器頻率31KHz,要達(dá)到周期為1s,則0.5s翻轉(zhuǎn)一次,則0.5s中需要執(zhí)行的指令數(shù)是0.5*31k/4=3875,則若使TMR00加到溢出,預(yù)置數(shù)為0,則3875/256=15.136.那么分頻比可選1:16,1:32,1:64,1:128,1:256.我們選擇了最接近的1:16.

預(yù)置數(shù)的計(jì)算:

3875/16=256-T+2

T=15.8,軟件實(shí)測(cè)發(fā)現(xiàn)1516更加接近,15.

調(diào)試方法:debug 單步調(diào)試和斷點(diǎn)調(diào)試結(jié)合。先確保程序正確,再調(diào)整預(yù)置數(shù)提高精度。

5.  實(shí)驗(yàn)現(xiàn)象分析

最初由于代碼錯(cuò)誤LED一直處于亮的狀態(tài),由于調(diào)試時(shí)改動(dòng)的代碼太多不知道是具體由哪一步引起,或者可能是很多錯(cuò)誤一起造成的。

我們似乎沒(méi)有地方可以用到可重用代碼,所以最后沒(méi)有采用。(也有可能是因?yàn)閷?duì)可重用代碼不理解。)

 

實(shí)驗(yàn)最終結(jié)果:

1,LED正常亮滅,亮滅時(shí)間相同,沒(méi)有奇怪現(xiàn)象

2,軟件仿真時(shí)T=0.9999483s,誤差較小。

 

 

 

附:

#INCLUDE p16f886.inc  

__config _CONFIG1, _LP_OSC _PWRTE_OFF _WDT_OFF _CP_OFF

ORG 0x00

NOP

CLRF TMR0

BANKSEL OPTION_REG;BANK3

MOVLW B'000011'

MOVWF OPTION_REG

BANKSEL INTCON;

MOVLW B'00000111'

ANDWF INTCON,F

BANKSEL OSCCON

MOVLW B'00000011'

MOVWF OSCCON

BANKSEL ANSEL

CLRF ANSEL

BANKSEL TRISA;BANK1

MOVLW B'00000000'

MOVWF TRISA

LP

BANKSEL INTCON

BTFSS INTCON,2

GOTO LP

GOTO LED

LED

BANKSEL INTCON

BCF INTCON,2

BANKSEL PORTA

COMF PORTA,1

BANKSEL TMR0

MOVLW B'00001111'

MOVWF TMR0

GOTO LP

END

 

下一個(gè)實(shí)驗(yàn):http://www.torrancerestoration.com/mcu/3996.html

關(guān)閉窗口