<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 單片機匯編中斷程序(定時器中斷)

          單片機匯編中斷程序(定時器中斷)

          作者: 時間:2016-11-18 來源:網絡 收藏

          本文引用地址:http://www.ex-cimer.com/article/201611/315807.htm

          ;首相,介紹一下51單片機定時計數器,51有兩個定時計數器,分別為T0,T1,基本一樣,

          ;有一點不同,下面我們介紹定時計數器T0

          ;了解8051的timer0中斷的程序寫法,用中斷法產生定時

          ;上面顯示的是proteus仿真圖,下面的是源程序

          ;說明:(源程序中的終端入口地址很重要(這個是固定的),程序中斷時,會在對應中斷固定的

          ;入口地址進入,因為規(guī)定的相隔入口間的空進有限,只能用跳轉指令跳轉,最終用RETI強制返回

          ;這個程序把所有的中斷入口地址都寫上了,沒有用到的,用RETI直接屏蔽)

          ;運行結果是使led燈明一下,暗一下。

          COUNT EQU9217;對于11.0592的晶振來說,延時10ms

          LEDEQUP1.1

          ORG0000H

          LJMP RESET;開始時跳轉轉到初始化程序中

          ORG0003H;外部中斷0

          RETI

          ORG000BH;定時器/計數器T0入口地址

          LJMP INT_TIMER0;跳轉到定時器/計數器中斷服務程序中去

          ORG0013H;外部中斷1

          RETI

          ORG001BH;定時器/計數器T1

          RETI

          ORG0023H ;串行口中斷

          RETI

          ORG0030H

          RESET:

          MOVR0,#00H

          DJNZ R0,$;剛開始,先進行少量的延時,是各種工作寄存器準備好

          CLRLED

          MOVTMOD,#00000001B;設置定時器T0工作在方式1(16位)

          MOVTH0,#HIGH(65536-COUNT);設置初值(關于怎么計算,很多書上都有)

          MOVTL0,#LOW(65536-COUNT)

          ;MOVTH0,#(65536-COUNT)/256;取高八位數據(這是第二種方法)

          ;MOVTL0,#255;取底五位(為最大了)

          CLRTF0;先把溢出標志位清零

          SETB TR0;開始計時

          SETB EA;全局中斷打開

          SETB ET0;定時器/計數器T0溢出中斷打開

          MOVR2,#00H;作為定時器累加器使用

          LOOP:SJMP LOOP;在此循環(huán),等待中斷

          INT_TIMER0:;當TF0=1,跳轉到下面的中斷服務程序中

          INCR2;使R2自增一

          CLRTF0;重新置中斷標志位為0

          MOVTH0,#(65536-COUNT)/256; 重新符初值(因為溢出后變成0了)

          MOVTL0,#255

          CJNE R2,#5,RETURN;讓燈明暗相間50ms

          MOVR2, #00H

          CPLLED;讓燈明暗交替變化

          RETURN:

          RETI

          END

          ;程序寫完了(并不是很難,不過就是配置一下定時器,在中斷中寫點處理程序罷了

          ;),



          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();