日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當(dāng)前位置:首頁 >> 技術(shù)中心 >> 單片機(jī)入門 >> 51單片機(jī)的定時/計(jì)數(shù)器(CTC)及應(yīng)用

51單片機(jī)的定時/計(jì)數(shù)器(CTC)及應(yīng)用

作者:admin 來源:不詳 發(fā)布時間:2018-05-08  瀏覽:17

51單片機(jī)內(nèi)有兩個定時/計(jì)數(shù)器,稱為T0和T1,是16位的,所以它們各由兩個8位的特殊功能寄存器(SFR)組成,即T0=TH0+TL0,T1=TH1+TL1,默認(rèn)情況下,通電后它們是不啟動的。

一、定時/計(jì)數(shù)器的應(yīng)用

1.計(jì)數(shù)功能:

2.定時功能:

二、定時/計(jì)數(shù)器的工作原理

定時/計(jì)數(shù)器中的核心部件為可預(yù)置初值計(jì)數(shù)器。預(yù)置初值后開始計(jì)數(shù),直至計(jì)數(shù)值產(chǎn)生溢出,可查詢判斷此溢出;也可申請中斷。

  • 定時/計(jì)數(shù)器的結(jié)構(gòu)示意圖

 

2.定時器的控制、模式寄存器

TMOD定時器方式寄存器(89H)         TCON定時器控制/狀態(tài)寄存器(88H)

  • 定時實(shí)驗(yàn)(采用查詢法)

如圖,P0口接了8只發(fā)光管,高電平亮。用定時器實(shí)現(xiàn)50ms延時,輪流點(diǎn)亮。(注:實(shí)驗(yàn)時用短路帽短路JMP2的2-3腳和JMP3的2-3腳)

參考程序:

         Org    0000H

Main:    mov    tmod,#00000001B   ;選T0,定時,方式1

         Mov    th0,#3ch

         Mov    tl0,#0b0h          ;預(yù)置初值15536

         Setb    tr0                ;啟動T0

         Mov    a,#00000001B      ;設(shè)置顯示模式

Loop:    mov     p0,a

         RL      a

         Jnb      tf0,$             ;等候50ms的溢出

         Clr      tf0

         Mov    th0,#3ch

         Mov    tl0,#0b0h          ;預(yù)置初值15536

         Sjmp    loop

思考題:⑴  若定時30ms,怎樣修改程序?

⑵  若定時1秒,怎樣修改程序?

⑶  若定時任意長時間,怎樣修改程序?

  • 計(jì)數(shù)實(shí)驗(yàn)

如圖,計(jì)數(shù)器T0的計(jì)數(shù)引腳(P3.4腳)接有一開關(guān),每按一次開關(guān),理論上計(jì)數(shù)器T0就會計(jì)一個數(shù)(若考慮抖動問題,實(shí)際上可能會計(jì)多個數(shù)),讀出該數(shù)送P0口,通過P0口的發(fā)光管的亮滅情況,讀出計(jì)數(shù)值(設(shè)T0計(jì)數(shù)、用方式2)。

 

參考程序:

         Org    0000H

Main:    mov    P0,#0

mov    tmod,#00000110B    ;選T0,計(jì)數(shù),方式2

         Setb    tr0                ;啟動T0

Loop:    mov    a,tl0               ;讀出T0的低8位值送A寄存器

         Mov   P0,a               ;送P0口顯示

         Sjmp   loop

思考題:⑴  若計(jì)數(shù)100,然后聲光指示,怎樣修改程序?

⑵  若計(jì)數(shù)500,然后聲光指示,怎樣修改程序?

  • 定時、計(jì)數(shù)聯(lián)合實(shí)驗(yàn)(采用查詢法)

任務(wù):定時器T0產(chǎn)生2000Hz方波信號,從P3.6腳輸出,再從T1的計(jì)數(shù)腳P3.5引入;T0還產(chǎn)生1秒的定時信號,定期打開和關(guān)閉T1計(jì)數(shù)器。打開T1時,方波信號輸入并計(jì)數(shù);關(guān)閉T1時,讀出T1的值送P0口和P1口顯示(注:P1口的值是反相的,即低電平亮,高電平滅。當(dāng)然可以取反后送P1口)。

參考程序:

;*********************************************************

;*************       數(shù)字頻率計(jì)程序        ***************

;*********************************************************

;任務(wù):利用定時器T0定時,產(chǎn)生2KHz方波,從P3.6腳輸出,

;并送P3.5腳(T1的計(jì)數(shù)腳)進(jìn)行計(jì)數(shù);T0還產(chǎn)生1秒定時,不斷地

;打開和關(guān)閉T1計(jì)數(shù)器,并將讀取到的頻率值送P0口和P1口顯示。

 

;分析:2KHz方波,設(shè)占空比為50%,則高低電平的時間各為250uS,

;可用T0定時,選方式2,自動重新裝載初始值6。T1計(jì)數(shù),方式1。

 

;硬件上,將P3.6腳與P3.5腳相連(注意從排針上相連或短路帽短接)即可。

 

               org     0000h

               ljmp    main

;*********************************************************

;主程序

               org     0030h

main:          mov     p0,#0

               mov     p1,#0ffh

                        mov     p3,#0ffh             ;初始化,關(guān)閉所有發(fā)光管

                        mov     r3,#0

                        mov     r4,#0                     ;r3-r4組成1秒計(jì)數(shù)器

                        mov     tmod,#01010010B ;T1計(jì)數(shù),方式1;

                                                ;T0定時,方式2。

                        mov     th0,#6

                        mov     tl0,#6                 ;預(yù)置初始值6,準(zhǔn)備計(jì)數(shù)250

                        mov     th1,#0

                        mov     tl1,#0

                        setb      tr0                    ;啟動定時器T0

main_disp:      jnb      tf0,  main_disp

               clr      tf0

                        cpl      p3.6                ;輸出方波

                        inc      r3

                        cjne     r3,#0,next

                        inc      r4

               sjmp    main_disp

next:           cjne     r3,#0a0h,main_disp

               cjne     r4,#0fh,main_disp ;判斷夠4000次計(jì)數(shù)嗎?

                                                 ;因?yàn)橹袛?000次為1秒。

                        mov      r3,#0

                        mov      r4,#0                    ;1秒計(jì)數(shù)器清0

                        cpl       tr1                       ;啟動或關(guān)閉T1計(jì)數(shù)器

                        jb        tr1,main_disp    ;若T1啟動則返回,否則去讀取頻率值

                        mov      a,tl1

                        mov      P0,a            ;將頻率值的低8位送P0口顯示

                        mov      a,th1

               cpl       a               ;考慮P1口是低電平點(diǎn)亮,故取反

                        mov      P1,a            ; 將頻率值的高8位送P1口顯示

                        mov      tl1,#0

                        mov      th1,#0                  ;T1計(jì)數(shù)器清0

                        ljmp      main_disp

               end

;注:以上送P1和P0口的數(shù)據(jù)為16進(jìn)制。經(jīng)實(shí)驗(yàn),得到的16進(jìn)制值為07H、0D0H。

;***************************************************************

編輯:admin  最后修改時間:2018-05-08

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

龙井市| 天长市| 东源县| 陆良县| 邛崃市| 怀来县| 滦南县| 凯里市| 中江县| 泰安市| 汽车| 彰化县| 邻水| 肇东市| 新闻| 平湖市| 息烽县| 枣庄市| 保定市| 全椒县| 凤凰县| 巴彦淖尔市| 西乌| 云霄县| 田东县| 尉犁县| 古浪县| 涞源县| 乌拉特后旗| 永德县| 盖州市| 龙海市| 沧源| 汾阳市| 肃宁县| 广宗县| 沁水县| 英超| 镇安县| 新余市| 华池县|