專注電子技術(shù)學習與研究
當前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

AT89C51單片機定時器終端模式和查詢設(shè)置

作者:未知   來源:不詳   點擊數(shù):  更新時間:2014年06月16日   【字體:


T1為定時模式,定時65.536ms,P2.0對應(yīng)的LED等閃爍一次,T0計數(shù)模式,計數(shù)脈沖從P3.4腳用按鍵輸入,按一次,記一次,所以計數(shù)初值為0FFFFh,沒按一次,產(chǎn)生一個溢出,P2.5對應(yīng)的LED閃爍,同時數(shù)碼管加1顯示。
一、定時/計數(shù)器終端模式
        org 0000h
        ljmp bb               ;跳轉(zhuǎn)到主程序入口bb處
        org 000bh             ;定時器0中斷響應(yīng)從這里開始執(zhí)行
        cjne r2,#9d,xx       
        mov r2,#00h
        ljmp xx11
        org 001bh             ;定時器1中斷響應(yīng)從這里開始執(zhí)行
         ljmp xxx

bb:     mov p1,#3fh           ;主程序入口處
        mov tmod,#05h     ;05h=0000 0101B設(shè)置T1定時T0計數(shù)模式,0定時,1計數(shù)
                                      ;0013位二進制計數(shù)模式0,高4位控制T1
                                      ;0
1
16位二進制計數(shù)模式1,低4位控制T0
        mov dptr,#0300h       ;查表入口地址存放
        mov r2,#00h                 
        setb et0              ;和setb 0afh效果相同 
        setb ea               ;和setb 0abh相同
        setb et1              ;和setb 0a9h相同
        setb tr0
        setb tr1
       
        mov th0,#0ffh         ;計數(shù)器0的計數(shù)初值的高8位
        mov tl0,#0fdh         ;計數(shù)器0的計數(shù)初值的低8位(第一次開始計數(shù)初值)
        sjmp $                   ;程序執(zhí)行時,原地踏步等待語句,在沒有中斷請求時,
                                      ;在此位置原地踏步計數(shù)定時計數(shù),有請求時跳到中斷入口執(zhí)行中斷
xx:        inc r2
xx11:    mov th0,#0ffh      ;計數(shù)器0的計數(shù)初值的高8位
           mov tl0,#0fdh      ;計數(shù)器0的計數(shù)初值的低8位(第二次以后開始計數(shù)初值)  
           mov a,r2
           movc a,@a+dptr
           cpl p2.5
           mov p1,a           
           reti
xxx:       mov th1,#00h      ;計數(shù)器1的計數(shù)初值的高8位
            mov tl1,#00h     ;計數(shù)器1的計數(shù)初值的低8位
            cpl p2.0
            reti
           org 0300h         ;七段顯示嗎表格入口
           db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
          end
二、定時/計數(shù)器查詢模式
          org 0000h
          ljmp bb                  ;跳轉(zhuǎn)到主程序入口bb處
bb:     mov tmod,#15h     ;主程序入口處
                                        ;設(shè)置T1定時模式,工作在計數(shù)方式0,設(shè)置T0計數(shù)模  
                                        ;式工作在計數(shù)方式1
        mov dptr,#0300h       ;查表入口地址存放        
                             
        clr et0                 ;關(guān)定時/計數(shù)器0中斷
        setb ea               ;和setb 0abh相同,開總中斷開關(guān)
        setb et1              ;和setb 0a9h相同,開定時/計數(shù)器1中斷   
        setb tr0
        setb tr1       
        mov th0,#0ffh        ;計數(shù)器0的計數(shù)初值的高8位
        mov tl0,#0ffh         ;計數(shù)器0的計數(shù)初值的低8位(第一次開始計數(shù)初值)
  CX: JBC  TF0, xx        ;查詢定時/計數(shù)器0溢出標志位,有溢出跳轉(zhuǎn)xx執(zhí)行
         JBC  TF1, xxx      ;查詢定時/計數(shù)器1溢出標志位,有溢出跳轉(zhuǎn)xxx執(zhí)行
         sjmp CX               ;無溢出,跳CX繼續(xù)查詢
   ;溢出是在THi和TLi計數(shù)滿,超過FFFFH時,TFi被自動置1,中斷和查詢都是根
   ;據(jù)這個標志是否為1來響應(yīng)的。
                         
xx:       mov th0,#0ffh      ;計數(shù)器0的計數(shù)初值的高8位
           mov tl0,#0ffh ;計數(shù)器0的計數(shù)初值的低8位(第二次以后開始計數(shù)初值)  
           cjne r2,#10d,xx11      
           mov r2,#00h
xx11:      mov a,r2
           movc a,@a+dptr   ;查表,用七段碼顯示計數(shù)數(shù)字
           cpl p2.5                 ;并讓P2.5上的LED有閃爍效果
           mov p1,a               ;顯示數(shù)字效果從P1口輸出
           inc r2                     ;加1計數(shù)  
           ret
xxx:       mov th1,#00h      ;計數(shù)器1的計數(shù)初值的高8位
           mov tl1,#00h     ;計數(shù)器1的計數(shù)初值的低8位
           cpl p2.0             ;t0定時模式,定時到讓P2.0取反,LED達到閃爍效果
           ret
           org 0300h         ;七段顯示嗎表格入口
    db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
          end  
關(guān)閉窗口

相關(guān)文章