新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 負跳變沿觸發中斷(匯編程序)

        負跳變沿觸發中斷(匯編程序)

        作者: 時間:2016-11-18 來源:網絡 收藏
        ;了解8051的timer0中斷的程序寫法,用中斷法產生定時,是燈明一下,暗一下,如果出現外部中斷的時候,在進入外部中斷服務程序

        COUNTEQU9217 ;對于11.0592的晶振來說,延時10ms
        LED1EQUP1.1
        LED2 EQUP1.3 ;作為外部中斷0的顯示來用
        ;
        ORG 0000H
        LJMP RESET ;跳轉到初始化程序中
        ORG 0003H ; INT0(外部中斷0)
        LJMP INT_ET0;跳轉到外部中斷0服務程序中去(此程序中斷就是從這進入的)
        ORG000BH;TIMER0(定時器/計數器T0)
        LJMPINT_TIMER0;跳轉到定時器/計數器中斷服務程序中去
        //ORG0013H;外部中斷1
        //RETI;中斷的返回指令
        //ORG001BH;TIMER1(定時器/計數器T1)
        //RETI
        //ORG0023H;串行口中斷
        //RETI
        ;
        ORG0030H
        RESET: MOVR0,#00H
        DJNZR0,$;剛開始,先進行少量的延時,是各種工作寄存器準備好

        SETBLED1
        SETBLED2

        ;設置定時器中斷
        MOVTMOD,#00000001B
        MOVTH0,#HIGH(65536-COUNT)
        MOV TL0,#LOW(65536-COUNT)
        //MOVTH0,#(65536-COUNT)/256;取高八位數據
        //MOVTL0,#255;取底五位(為最大了)
        CLRTF0;先把溢出標志位清零
        SETBTR0;開始計時
        SETBET0;ET0為定時器/計數器T0溢出中斷允許位
        ;設置外部中斷0
        SETBIT0;設置外部中斷0為跳變言觸發方式
        CLRIE0
        SETBEX0
        SETBEA
        MOVIP,#00000001B;設置PX0為高優先級中斷(外部中斷0)
        MOVR1,#00H;作為定時器累加器使用

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

        LOOP:SJMPLOOP ;在此等待
        ;
        ;IE0=1

        INT_ET0://CLRLED2
        CPLTR0
        //CPLLED1
        ACALLDELAY
        CLRIE0
        CPLLED2
        RETI

        ;TF0=1
        INT_TIMER0:
        INCR2;使R1自增一
        CLRTF0;CLEAR TF0 AGAIN
        MOVTH0,#(65536-COUNT)/256;取高八位數據
        MOVTL0,#255;取底五位(為最大了)

        CJNER2,#10,L0;不相等則轉移指令,這個數可以進行調節
        CPLLED1 ;取反指令
        MOVR2,#00H
        L0: RETI

        ;延時子程序,12M晶振延時約R4
        DELAY: ;大約值:2us*256*256*2=260ms,也可以認為為250ms
        PUSH PSW ;現場保護指令(有時可以不加)
        MOV R4,#4
        L3:MOV R2 ,#00H
        L1: MOV R3 ,#00H
        L2: DJNZ R3 ,L2 ;最內層循環:(256次)2個周期指令(R3減一,如果比1大,則轉向L2)
        DJNZ R2 ,L1 ; 中層循環:256次
        DJNZ R4 ,L3 ;外層循環:2次

        POP PSW
        RET

        END



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 牡丹江市| 巴彦淖尔市| 涞水县| 西和县| 红河县| 平邑县| 合江县| 大同市| 沈丘县| 甘泉县| 广灵县| 南和县| 修水县| 阿拉尔市| 中山市| 保康县| 广汉市| 海口市| 萍乡市| 永春县| 新民市| 西乡县| 万州区| 赣榆县| 肃北| 靖西县| 泰和县| 元江| 汝南县| 永和县| 隆安县| 文安县| 通山县| 晋州市| 南靖县| 毕节市| 和田县| 阿勒泰市| 巨野县| 余干县| 汨罗市|