新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機教程:單片機定時器、中斷試驗

        51單片機教程:單片機定時器、中斷試驗

        作者: 時間:2012-08-02 來源:網絡 收藏

        這個思路在工程中是非常有用的,有的時候我們需要若干個,可51中總共才有2個,怎么辦呢?其實,只要這幾個定時的時間有一定的公約數,我們就能用軟件加以實現,如我要實現P10口所接燈按1S每次,而P11口所接燈按2S每次閃爍,怎么實現呢?對了我們用兩個計數器,一個在它計到20時,取反P10,并清零,就如上面所示,另一個計到40取反P11,然后清0,不就行了嗎?這部份的程序如下

        ORG 0000H

        AJMP START

        ORG 000BH ;0的向量地址

        AJMP TIME0 ;跳轉到真正的定時器程序處

        ORG 30H

        START:

        MOV P1,#0FFH ;關所 燈

        MOV 30H,#00H ;軟件計數器預清0

        MOV TMOD,#00000001B ;定時/計數器0工作于方式1

        MOV TH0,#3CH

        MOV TL0,#0B0H ;即數15536

        SETB EA ;開總允許

        SETB ET0 ;開定時/計數器0允許

        SETB TR0 ;定時/計數器0開始運行

        LOOP: AJMP LOOP ;真正工作時,這里可寫任意程序

        TIME0: ;定時器0的處理程序

        PUSH ACC

        PUSH PSW ;將PSW和ACC推入堆棧保護

        INC 30H

        INC 31H ;兩個計數器都加1

        MOV A,30H

        CJNE A,#20,T_NEXT ;30H單元中的值到了20了嗎?

        T_L1: CPL P1.0 ;到了,取反P10

        MOV 30H,#0 ;清軟件計數器

        T_NEXT:

        MOV A,31H

        CJNE A,#40,T_RET ;31h單元中的值到40了嗎?

        T_L2:

        CPL P1.1

        MOV 31H,#0 ;到了,取反P11,清計數器,返回

        T_RET:

        MOV TH0,#15H

        MOV TL0,#9FH ;重置定時常數

        POP PSW

        POP ACC

        RETI

        END

        您能用定時器的辦法實現前面講的流水燈嗎?試試看。


        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 灌南县| 玉山县| 凤山县| 潢川县| 广丰县| 庄河市| 六盘水市| 法库县| 犍为县| 白水县| 静安区| 黑龙江省| 陕西省| 兴安盟| 金华市| 婺源县| 南乐县| 九台市| 太谷县| 阜康市| 涿鹿县| 策勒县| 罗甸县| 灵璧县| 萍乡市| 微博| 浏阳市| 呼伦贝尔市| 奈曼旗| 三江| 湖口县| 固原市| 米易县| 沂源县| 贞丰县| 绥中县| 大余县| 驻马店市| 永胜县| 福海县| 依安县|