<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

          作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
          上一篇文章寫了PIC最基本得入門的閃燈程序,通過這個程序而歐美可以看到我們的單片機的確開始按照我們的程序工作了,今天我們開始使用單片機里面的一個定時器的資源,即就是PIC里面的定時器,通過查詢定時器是否計時到我們規(guī)定的值來決定我們是否要做什么事!
          PIC里面有3個定時器,比起51單片機多了一個定時器(哈哈)!分別為Timer0,Timer1,Timer2.分別說說每一個定時器吧:
          Timer0是一個8為定時器,與看門狗公用一個8位預(yù)分配頻器,時鐘源可以選擇位內(nèi)部時鐘和外部時鐘,通過設(shè)置OPTION_REG寄存器的PS<2:0>位的值可以選擇不同的預(yù)分頻比,根據(jù)選擇的預(yù)分頻比和系統(tǒng)震蕩頻率就可以計時定時了。
          Timer1是一個16位的計時器,有一個3位預(yù)分頻器,也就是意味著最多實現(xiàn)1:8的分頻比,(隨便說一下,要實現(xiàn)比較精確的定時的話,最好選擇小一點的預(yù)分頻比,最好是不分頻),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預(yù)分頻為32分頻
          BANKSEL PORTA
          INITTMR0
          BCF INTCON,T0IF
          MOVLW d61 ;設(shè)置外面套的循環(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)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();