新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PIC單片機入門之定時器查詢閃燈程序

PIC單片機入門之定時器查詢閃燈程序

作者: 時間:2016-11-24 來源:網(wǎng)絡 收藏
上一篇文章寫了PIC最基本得入門的閃燈程序,通過這個程序而歐美可以看到我們的單片機的確開始按照我們的程序工作了,今天我們開始使用單片機里面的一個定時器的資源,即就是PIC里面的定時器,通過查詢定時器是否計時到我們規(guī)定的值來決定我們是否要做什么事!
PIC里面有3個定時器,比起51單片機多了一個定時器(哈哈)!分別為Timer0,Timer1,Timer2.分別說說每一個定時器吧:
Timer0是一個8為定時器,與看門狗公用一個8位預分配頻器,時鐘源可以選擇位內(nèi)部時鐘和外部時鐘,通過設置OPTION_REG寄存器的PS<2:0>位的值可以選擇不同的預分頻比,根據(jù)選擇的預分頻比和系統(tǒng)震蕩頻率就可以計時定時了。
Timer1是一個16位的計時器,有一個3位預分頻器,也就是意味著最多實現(xiàn)1:8的分頻比,(隨便說一下,要實現(xiàn)比較精確的定時的話,最好選擇小一點的預分頻比,最好是不分頻),Timer1也可以選擇內(nèi)部或者是外部時鐘。
Timer2是一個8為定時器,至今沒用過Timer2,感覺還是Timer1用的比較舒服。
下面貼上最基本得Timer0的定時器查詢的閃燈程序,程序計時0.5秒燈閃一次。
#include
;程序采用可重定位的匯編編寫
udata_shr
L1 res 1h ;為變量L1分配一個字節(jié)地址
reset code 0x0 ;程序開始地址
pagesel main
goto main
code
main
NOP
BANKSEL PORTA ;配置PORTA端口
CLRF PORTA
BANKSEL ANSEL ;端口PORTA為數(shù)字端口模式
CLRF ANSEL
BANKSEL TRISA
MOVLW B00000000
MOVWF TRISA ;PORTA所有位為輸出
BANKSEL OPTION_REG
MOVLW B11000100
MOVWF OPTION_REG ;配置Timer0預分頻為32分頻
BANKSEL PORTA
INITTMR0
BCF INTCON,T0IF
MOVLW d61 ;設置外面套的循環(huán)次數(shù)
MOVWF L1
LOOP
BTFSS INTCON,T0IF
GOTO LOOP
BCF INTCON,T0IF
DECFSZ L1,f ;外面套的循環(huán)
GOTO LOOP
MOVLW B00000001
XORWF PORTA,f ;取反RA0,讓LED閃爍
GOTO INITTMR0
END


評論


技術(shù)專區(qū)

關(guān)閉