新聞中心

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 马龙县| 合作市| 黔南| 榆林市| 九江县| 团风县| 黑水县| 应城市| 北流市| 茌平县| 呼伦贝尔市| 象山县| 尉犁县| 栾城县| 莎车县| 长乐市| 化隆| 长宁县| 容城县| 全南县| 屯昌县| 长治市| 石门县| 贵阳市| 台东市| 历史| 闵行区| 南安市| 招远市| 广汉市| 电白县| 三台县| 桐柏县| 三门峡市| 上犹县| 望都县| 乌鲁木齐县| 吐鲁番市| 灵川县| 扶余县| 三穗县|