新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機入門實驗九

        單片機入門實驗九

        作者: 時間:2016-11-24 來源:網絡 收藏
        ;*****************************************;

        ;實驗名稱: 定時器T0控制LED燈閃爍時間的實驗;
        ;作者: 龍誼 ;
        ;版本: VER 1.0 ;
        ;說明: 使用定時器T0 ;
        ;修改: ;
        ;編程語言: 匯編語言

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

        本文引用地址:http://www.104case.com/article/201611/320657.htm

        一、工作模式0

        ORG00H
        MOVTMOD,#00H ;設定定時器T0工作為模式0
        START: CPLP0.0 ;位P0.0做取反處理,使LED燈亮與滅交替工作
        MOVR1,#100 ;延時0.2秒
        CALLDELAY ;設定時間為2毫秒(即2000微秒)
        JMPSTART
        DELAY: SETBTR0 ;啟動定時器T0開始計時
        D1: MOVTL0,#(8192-2000)MOD 32 ;設定TL0的值
        MOVTH0,#(8192-2000)/32 ;設定TH0的值
        D2: JBCTF0,D3 ;TF0=1?是就跳到D3,同時清除TF0
        JMPD2 ;不是則跳到D2
        D3: DJNZR1,D1 ;定時夠0.2秒了嗎?
        CLRTR0 ;夠了則停止T0計時
        RET
        END

        二、工作模式1

        ORG00H
        MOVTMOD,#01H ;設定定時器T0工作為模式1
        START: CPLP0.0 ;位P0.0做取反處理,使LED燈亮與滅交替工作
        MOVR1,#20 ;延時0.2秒
        CALLDELAY ;設定時間為10毫秒(即10000微秒)
        JMPSTART
        DELAY: SETBTR0 ;啟動定時器T0開始計時
        D1: MOVTL0,#(65536-10000)MOD 256 ;設定TL0的值
        MOVTH0,#(65536-10000)/256 ;設定TH0的值
        D2: JBCTF0,D3 ;TF0=1?是就跳到D3,同時清除TF0
        JMPD2 ;不是則跳到D2
        D3: DJNZR1,D1 ;定時夠0.2秒了嗎?
        CLRTR0 ;夠了則停止T0計時
        RET
        END

        三、工作模式2

        ORG00H
        MOVTMOD,#02H ;設定定時器T0工作為模式2
        START: CPLP0.0 ;位P0.0做取反處理,使LED燈亮與滅交替工作
        MOVR2,#04 ;延時0.2秒
        LOOP:MOVR1,#200 ;延時50毫秒
        CALLDELAY ;設定時間為250微秒
        DJNZR2,LOOP ;定時夠0.2秒了嗎?
        JMPSTART
        DELAY: SETBTR0 ;啟動定時器T0開始計時
        D1: MOVTL0,#(256-250) ;設定TL0的值
        MOVTH0,#(256-250) ;設定TH0的值
        D2: JBCTF0,D3 ;TF0=1?是就跳到D3,同時清除TF0
        JMPD2 ;不是則跳到D2
        D3: DJNZR1,D1 ;定時夠50毫秒了嗎?
        CLRTR0 ;夠了則停止T0計時
        RET
        END

        四、工作模式3

        ORG00H
        MOVTMOD,#03H ;設定定時器T0工作為模式3
        START: CPLP0.0 ;位P0.0做取反處理,使LED燈亮與滅交替工作
        MOVR2,#04 ;延時0.2秒
        LOOP: MOVR1,#200 ;延時50毫秒
        CALLDELAY ;設定時間為250微秒
        DJNZR2,LOOP ;定時夠0.2秒了嗎?
        JMPSTART
        DELAY: SETBTR0 ;啟動定時器T0開始計時
        D1: MOVTL0,#(256-250) ;設定TL0的值
        D2: JBCTF0,D3 ;TF0=1?是就跳到D3,同時清除TF0
        JMPD2 ;不是則跳到D2
        D3: DJNZR1,D1 ;定時夠50毫秒了嗎?
        CLRTR0 ;夠了則停止T0計時
        RET
        END



        關鍵詞: 單片機入門實

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 太仆寺旗| 海宁市| 芮城县| 梁河县| 临夏县| 雷州市| 内乡县| 凌海市| 咸丰县| 拜城县| 新丰县| 斗六市| 射阳县| 乳山市| 上蔡县| 闽清县| 进贤县| 吉林市| 东乌珠穆沁旗| 宁海县| 松阳县| 克什克腾旗| 宝山区| 尚义县| 泾阳县| 厦门市| 邢台县| 甘孜| 永兴县| 卢龙县| 贵南县| 拜泉县| 上思县| 伊吾县| 苏尼特左旗| 永仁县| 朝阳区| 密云县| 富裕县| 鄂伦春自治旗| 南宁市|