80C51的中断系统及定时计数器1课件_第1页
80C51的中断系统及定时计数器1课件_第2页
80C51的中断系统及定时计数器1课件_第3页
80C51的中断系统及定时计数器1课件_第4页
80C51的中断系统及定时计数器1课件_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1

80C51的中斷系統及定時/計數器

2

5.180C51的中斷系統

5.1.180C51的中斷系統結構

一、中斷的概念電腦具有即時處理能力,能對外界發生的事件進行及時處理,這是依靠它們的中斷系統來實現的。

CPU在處理某一事件A時,發生了另一事件B請求CPU迅速去處理(中斷發生);CPU暫時中斷當前的工作,轉去處理事件B(中斷回應和中斷服務);待CPU將事件B處理完畢後,再回到原來事件A被中斷的地方繼續處理事件A(中斷返回),這一過程稱為中斷。3

引起CPU中斷的根源,稱為中斷源。中斷源向CPU提出的中斷請求。CPU暫時中斷原來的事務A,轉去處理事件B。對事件B處理完畢後,再回到原來被中斷的地方(即中斷點),稱為中斷返回。實現上述中斷功能的部件稱為中斷系統(中斷機構)。4

隨著電腦技術的應用,人們發現中斷技術不僅解決了快速主機與慢速I/O設備的數據傳送問題,而且還具有如下優點:分時操作。CPU可以分時為多個I/O設備服務,提高了電腦的利用率;即時回應。CPU能夠及時處理應用系統的隨機事件,系統的即時性大大增強;可靠性高。CPU具有處理設備故障及掉電等突發性事件的能力,從而使系統可靠性提高。5

二、80C51中斷系統的結構

80C51的中斷系統有5個中斷源,2個優先順序,可實現二級中斷嵌套

。6

5.1.280C51的中斷源

一、中斷源1、(P3.2)。可由IT0(TCON.0)選擇其為低電平有效還是下降沿有效。當CPU檢測到P3.2引腳上出現有效的中斷信號時,中斷標誌IE0(TCON.1)置1,向CPU申請中斷。2、(P3.3)。可由IT1(TCON.2)選擇其為低電平有效還是下降沿有效。當CPU檢測到P3.3引腳上出現有效的中斷信號時,中斷標誌IE1(TCON.3)置1,向CPU申請中斷。3、TF0(TCON.5),片內定時/計數器T0溢出中斷請求標誌。當定時/計數器T0發生溢出時,置位TF0,並向CPU申請中斷。4、TF1(TCON.7),片內定時/計數器T1溢出中斷請求標誌。當定時/計數器T1發生溢出時,置位TF1,並向CPU申請中斷。5、RI(SCON.0)或TI(SCON.1),串行口中斷請求標誌。當串行口接收完一幀串行數據時置位RI或當串行口發送完一幀串行數據時置位TI,向CPU申請中斷。

7

二、中斷請求標誌1、TCON的中斷標誌

IT0(TCON.0),外部中斷0觸發方式控制位。當IT0=0時,為電平觸發方式。當IT0=1時,為邊沿觸發方式(下降沿有效)。IE0(TCON.1),外部中斷0中斷請求標誌位。IT1(TCON.2),外部中斷1觸發方式控制位。IE1(TCON.3),外部中斷1中斷請求標誌位。TF0(TCON.5),定時/計數器T0溢出中斷請求標誌位。TF1(TCON.7),定時/計數器T1溢出中斷請求標誌位。

8

2、SCON的中斷標誌

RI(SCON.0),串行口接收中斷標誌位。當允許串行口接收數據時,每接收完一個串行幀,由硬體置位RI。同樣,RI必須由軟體清除。TI(SCON.1),串行口發送中斷標誌位。當CPU將一個發送數據寫入串行口發送緩衝器時,就啟動了發送過程。每發送完一個串行幀,由硬體置位TI。CPU回應中斷時,不能自動清除TI,TI必須由軟體清除。

9

一、中斷允許控制

CPU對中斷系統所有中斷以及某個中斷源的開放和遮罩是由中斷允許寄存器IE控制的。

5.1.380C51中斷的控制

EX0(IE.0),外部中斷0允許位;ET0(IE.1),定時/計數器T0中斷允許位;EX1(IE.2),外部中斷0允許位;ET1(IE.3),定時/計數器T1中斷允許位;ES(IE.4),串行口中斷允許位;EA(IE.7),CPU中斷允許(總允許)位。10

二、中斷優先順序控制

80C51單片機有兩個中斷優先順序,即可實現二級中斷服務嵌套。每個中斷源的中斷優先順序都是由中斷優先順序寄存器IP中的相應位的狀態來規定的

。PX0(IP.0),外部中斷0優先順序設定位;PT0(IP.1),定時/計數器T0優先順序設定位;PX1(IP.2),外部中斷0優先順序設定位;PT1(IP.3),定時/計數器T1優先順序設定位;PS(IP.4),串行口優先順序設定位。11

同一優先順序中的中斷申請不止一個時,則有中斷優先權排隊問題。同一優先順序的中斷優先權排隊,由中斷系統硬體確定的自然優先順序形成,其排列如所示:12

80C51單片機的中斷優先順序有三條原則:CPU同時接收到幾個中斷時,首先回應優先順序別最高的中斷請求。正在進行的中斷過程不能被新的同級或低優先順序的中斷請求所中斷。正在進行的低優先順序中斷服務,能被高優先順序中斷請求所中斷。

為了實現上述後兩條原則,中斷系統內部設有兩個用戶不能尋址的優先順序狀態觸發器。其中一個置1,表示正在回應高優先順序的中斷,它將阻斷後來所有的中斷請求;另一個置1,表示正在回應低優先順序中斷,它將阻斷後來所有的低優先順序中斷請求。13

5.280C51單片機中斷處理過程

一、中斷回應條件CPU回應中斷的條件是:中斷源有中斷請求;此中斷源的中斷允許位為1;

CPU開中斷(即EA=1)。同時滿足時,CPU才有可能回應中斷。5.2.1中斷回應條件和時間

14

CPU執行程式過程中,在每個機器週期的S5P2期間,中斷系統對各個中斷源進行採樣。這些採樣值在下一個機器週期內按優先順序和內部順序被依次查詢。如果某個中斷標誌在上一個機器週期的S5P2時被置成了1,那麼它將於現在的查詢週期中及時被發現。接著CPU便執行一條由中斷系統提供的硬體LCALL指令,轉向被稱作中斷向量的特定地址單元,進入相應的中斷服務程式。

15

遇以下任一條件,硬體將受阻,不產生LCALL指令:CPU正在處理同級或高優先順序中斷;當前查詢的機器週期不是所執行指令的最後一個機器週期。即在完成所執行指令前,不會回應中斷,從而保證指令在執行過程中不被打斷;正在執行的指令為RET、RETI或任何訪問IE或IP寄存器的指令。即只有在這些指令後面至少再執行一條指令時才能接受中斷請求。若由於上述條件的阻礙中斷未能得到回應,當條件消失時該中斷標誌卻已不再有效,那麼該中斷將不被回應。就是說,中斷標誌曾經有效,但未獲回應,查詢過程在下個機器週期將重新進行。16

二、中斷回應時間某中斷的回應時序如圖:若M1週期的S5P2前某中斷生效,在S5P2期間其中斷請求被鎖存到相應的標誌位中去;M2恰逢指令的最後一個機器週期,且該指令不是RETI或訪問IE、IP的指令。於是,M3和M4便可以執行硬體LCALL指令,M5週期將進入了中斷服務程式。80C51的中斷回應時間(從標誌置1到進入相應的中斷服務),至少要3個完整的機器週期。

17

將相應的優先順序狀態觸發器置1(以阻斷後來的同級或低級的中斷請求)。執行一條硬體LCALL指令,即把程式計數器PC的內容壓入堆疊保存,再將相應的中斷服務程式的入口地址送入PC。執行中斷服務程式。

中斷回應過程的前兩步是由中斷系統內部自動完成的,而中斷服務程式則要由用戶編寫程式來完成。

5.2.2中斷回應過程

18

5.2.3中斷返回

RETI指令的具體功能是:將中斷回應時壓入堆疊保存的中斷點地址從棧頂彈出送回PC,CPU從原來中斷的地方繼續執行程式;將相應中斷優先順序狀態觸發器清0,通知中斷系統,中斷服務程式已執行完畢。

注意,不能用RET指令代替RETI指令。在中斷服務程式中PUSH指令與POP指令必須成對使用,否則不能正確返回中斷點

。19

若外部中斷定義為電平觸發方式,中斷標誌位的狀態隨CPU在每個機器週期採樣到的外部中斷輸入引腳的電平變化而變化,這樣能提高CPU對外部中斷請求的回應速度。但外部中斷源若有請求,必須把有效的低電平保持到請求獲得回應時為止,不然就會漏掉;而在中斷服務程式結束之前,中斷源又必須撤銷其有效的低電平,否則中斷返回之後將再次產生中斷。電平觸發方式適合於外部中斷輸入以低電平輸入且中斷服務程式能清除外部中斷請求源的情況。例如,並行介面晶片8255的中斷請求線在接受讀或寫操作後即被複位,因此,以其去請求電平觸發方式的中斷比較方便。20

若外部中斷定義為邊沿觸發方式,在相繼連續的兩次採樣中,一個週期採樣到外部中斷輸入為高電平,下一個週期採樣到為低電平,則在IE0或IE1中將鎖存一個邏輯1。即便是CPU暫時不能回應,中斷申請標誌也不會丟失,直到CPU回應此中斷時才清零。這樣,為保證下降沿能被可靠地採樣到,外中斷引腳上的高低電平(負脈衝的寬度)均至少要保持一個機器週期(若晶振為12MHz時,為1微秒)。

邊沿觸發方式適合於以負脈衝形式輸入的外部中斷請求,如ADC0809的轉換結束標誌信號EOC為正脈衝,經反相後就可以作為80C51的中斷輸入。21

5.2.4中斷程式舉例

22

ORG0000HSTART:LJMPMAIN;跳轉到主程序

ORG0003HLJMPINTO;轉向中斷服務程式

ORG0030H;主程序

MAIN:CLRIT0;設為電平觸發方式

SETBEA;CPU開放中斷

SETBEX0;允許中斷

MOVDPTR,#1000H;設置數據區地址指針

……ORG0200H;中斷服務程式

INT0:PUSHPSW;保護現場

PUSHACCCLRP3.0;由P3.0輸出0NOPNOPSETBP3.0;由P3.0輸出1,撤除

MOVA,P1;輸入數據

MOVX@DPTR,A;存入數據記憶體

INCDPTR;修改數據指針,指向下一個單元

……POPACC;恢復現場

POPPSWRETI;中斷返回23

例多外部中斷源的系統示例。設有5個外部中斷源,中斷優先順序排隊順序為:XI0、XI1、XI2、XI3、XI4。試設計它們與80C51單片機的介面。24

ORG0003HLJMPINSE0;轉外部中斷0服務程式入口

ORG0013HLJMPINSE1;轉外部中斷1服務程式入口

…………INSE0:PUSHPSW;XI0中斷服務程式

PUSHACC…………POPACCPOPPSWRETI

25

INSE1:PUSHPSW;中斷服務程式

PUSHACCJBP1.0,DV1;P1.0為1,轉XI1中斷服務程式

JBP1.1,DV2;P1.1為1,轉XI2中斷服務程式

JBP1.2,DV3;P1.2為1,轉XI3中斷服務程式

JBP1.3,DV4;P1.3為1,轉XI4中斷服務程式INRET:POPACCPOPPSWRETIDV1:……;XI1中斷服務程式

AJMPINRETDV2:……;XI2中斷服務程式

AJMPINRETDV3:……;XI3中斷服務程式

AJMPINRETDV4:……;XI4中斷服務程式

AJMPINRET26

5.380C51的定時/計數器

實現定時功能,比較方便的辦法是利用單片機內部的定時/計數器。也可以採用下麵三種方法:軟體定時:軟體定時不佔用硬體資源,但佔用了CPU時間,降低了CPU的利用率。採用時基電路定時:例如採用555電路,外接必要的元器件(電阻和電容),即可構成硬體定時電路。但在硬體連接好以後,定時值與定時範圍不能由軟體進行控制和修改,即不可編程。採用可編程晶片定時:這種定時晶片的定時值及定時範圍很容易用軟體來確定和修改,此種晶片定時功能強,使用靈活。在單片機的定時/計數器不夠用時,可以考慮進行擴展。27

2個16位定時器/計數器

——(52系列有3個16位Timer)定時器:對片內機器時鐘(週期方波)進行計數計數器:對Tx引腳輸入的負脈衝進行計數與Timer工作有關的特殊功能寄存器:

TCON和TMOD可通過軟體設置有關參數概述:28

5.3.1定時/計數器的結構和工作原理

一、定時/計數器的結構定時/計數器的實質是加1計數器(16位),由高8位和低8位兩個寄存器組成。TMOD是定時/計數器的工作方式寄存器,確定工作方式和功能;TCON是控制寄存器,控制T0、T1的啟動和停止及設置溢出標誌。

29

二、定時/計數器的工作原理加1計數器輸入的計數脈衝有兩個來源,一個是由系統的時鐘振盪器輸出脈衝經12分頻後送來;一個是T0或T1引腳輸入的外部脈衝源。每來一個脈衝計數器加1,當加到計數器為全1時,再輸入一個脈衝就使計數器回零,且計數器的溢出使TCON中TF0或TF1置1,向CPU發出中斷請求(定時/計數器中斷允許時)。如果定時/計數器工作於定時模式,則表示定時時間已到;如果工作於計數模式,則表示計數值已滿。

可見,由溢出時計數器的值減去計數初值才是加1計數器的計數值。

30

設置為定時器模式時,加1計數器是對內部機器週期計數(1個機器週期等於12個振盪週期,即計數頻率為晶振頻率的1/12)。計數值N乘以機器週期Tcy就是定時時間t

。設置為計數器模式時,外部事件計數脈衝由T0或T1引腳輸入到計數器。在每個機器週期的S5P2期間採樣T0、T1引腳電平。當某週期採樣到一高電平輸入,而下一週期又採樣到一低電平時,則計數器加1,更新的計數值在下一個機器週期的S3P1期間裝入計數器。由於檢測一個從1到0的下降沿需要2個機器週期,因此要求被採樣的電平至少要維持一個機器週期。當晶振頻率為12MHz時,最高計數頻率不超過1/2MHz,即計數脈衝的週期要大於2微秒。

31

5.3.2定時/計數器的控制

80C51單片機定時/計數器的工作由兩個特殊功能寄存器控制。TMOD用於設置其工作方式;TCON用於控制其啟動和中斷申請。一、工作方式寄存器TMOD

工作方式寄存器TMOD用於設置定時/計數器的工作方式,低四位用於T0,高四位用於T1。其格式如下:32

GATE:門控位。GATE=0時,只要用軟體使TCON中的TR0或TR1為1,就可以啟動定時/計數器工作;GATA=1時,要用軟體使TR0或TR1為1,同時外部中斷引腳或也為高電平時,才能啟動定時/計數器工作。即此時定時器的啟動條件,加上了或引腳為高電平這一條件。

:定時/計數模式選擇位。=0為定時模式;=1為計數模式。M1M0:工作方式設置位。定時/計數器有四種工作方式,由M1M0進行設置。33

二、控制寄存器TCON

TCON的低4位用於控制外部中斷,已在前面介紹。TCON的高4位用於控制定時/計數器的啟動和中斷申請。其格式如下:TF1(TCON.7):T1溢出中斷請求標誌位。T1計數溢出時由硬體自動置TF1為1。CPU回應中斷後TF1由硬體自動清0。T1工作時,CPU可隨時查詢TF1的狀態。所以,TF1可用作查詢測試的標誌。TF1也可以用軟體置1或清0,同硬體置1或清0的效果一樣。TR1(TCON.6):T1運行控制位。TR1置1時,T1開始工作;TR1置0時,T1停止工作。TR1由軟體置1或清0。所以,用軟體可控制定時/計數器的啟動與停止。TF0(TCON.5):T0溢出中斷請求標誌位,其功能與TF1類同。TR0(TCON.4):T0運行控制位,其功能與TR1類同。34

定時器/計數器的初始化

在使用定時器/計數器之前由軟體設置其功能,即初始化。1、初始化的步驟(1)確定工作模式(計數/定時)、工作方式和啟動控制方式,並寫入TMOD寄存器(2)設置定時或計數初值:可直接寫入TH0、TL0或TH1、TL1中。16位計數初值必須分兩次寫入對應計數器(3)根據要求確定是否採用中斷方式:直接對IE位賦值。開中斷時,對應位置“1”;採用程式查詢方式時,IE位應清0以進行中斷遮罩(4)啟動定時/計數器:使用SETBTRi指令啟動若第一步設置為軟啟動,即GATE設置為0時,執行指令後,定時/計數器開始工作。若GATE設置為1時,還必須由外部中斷引腳和共同控制,只有外部引腳電平為高時,執行指令後,定時/計數器開始工作。35

2、計數初值的計算最大計數值M與定時/計數器工作方式有關:

方式0:M=213=8192方式1:M=216=65536方式2:M=28=256方式3:M=256,定時/計數器分成兩個獨立的8位計數器,所以TH0、TL0的M均為256T0和T1均為加1計數器,當加到最大值(00H或0000H)時,產生溢出,將TCON寄存器的TF位置1,產生溢出中斷。計數器初值X的計算公式:(1)計數工作模式時

X=M-計數值(2)定時工作模式時

X=M-計數值=M-t/T=M-(foscxt)/12fosc為晶振頻率,t為要求定時的時間。36

例:MCS-51主頻為6MHz,要求產生1ms的定時,試計算計數初值X。設定時器工作於方式1。X=216-(6×106×1×10-3)/12=65536-500=65036=FE0CH3、初始化舉例T0為計數方式,對外部脈衝計數100次,硬啟動,禁止中斷,選工作方式2。T1為定時工作方式,定時25ms,選擇工作方式1,允許中斷,軟啟動;fosc=12MHz,編寫初始化程式。

初值X0=256-100=156=9CH

初值X1=65536-(12×25×1000)/12=40536=9E58H方式控制字:00011110B

即1EH37

初始化程式:MOVTMOD,#1EH;寫工作模式字MOVTH0,#9CH;T0計數初值,TH0值自動重新裝入TL0MOVTL0,#9CHMOVTH1,#9EH;T1計數初值MOVTL1,#58HMOVIE,#10001000B;T1開中斷SETBTR0;啟動T0,但要等到為1時真正啟動SETBTR1;啟動T138

5.3.3定時/計數器的工作方式

一、方式0

方式0為13位計數,由TL0的低5位(高3位未用)和TH0的8位組成。TL0的低5位溢出時向TH0進位,TH0溢出時,置位TCON中的TF0標誌,向CPU發出中斷請求。39

定時器模式時有:N=t/Tcy計數初值計算的公式為:定時器的初值還可以採用計數個數直接取補法獲得。計數模式時,計數脈衝是T0引腳上的外部脈衝。

門控位GATE具有特殊的作用。當GATE=0時,經反相後使或門輸出為1,此時僅由TR0控制與門的開啟,與門輸出1時,控制開關接通,計數開始;當GATE=1時,由外中斷引腳信號控制或門的輸出,此時控制與門的開啟由外中斷引腳信號和TR0共同控制。當TR0=1時,外中斷引腳信號引腳的高電平啟動計數,外中斷引腳信號引腳的低電平停止計數。這種方式常用來測量外中斷引腳上正脈衝的寬度。

40

例:在P1.0引腳輸出週期為4ms寬的方波。分析:只要每間隔2ms將P1.0取反一次即可,設選用T0定時器完成定時2ms功能。初值計算:X0=213-(12×106×2×10-3)/12=6192=1830H由於採用工作方式0,計數器13位。0001,1000,0011,0000B

(1830H)TH0占高8位(取D5~D12)1100,0001BTL0高3位補0:0001,0000B所以X0的實際值應為:1100,0001,0001,0000B即C110H根據題意設置方式控制字TMOD=00H上電複位後,TMOD各位均為0,所以此字可以不用寫入。根源程式如下:41

ORG0010HMOVTH0,#C1H;T0計數初值X0MOVTL0,#10HSETBTR0;啟動T0LOOP1:JBCTF0,LOOP2;查詢T0計數是否溢出,同時清除TF0AJMPLOOP1;若溢出重新設置計數初值LOOP2:MOVTH0,#C1HMOVTL0,#10HCPLP1.0;輸出取反

SJMPLOOP1;重複迴圈42

二、方式1方式1的計數位數是16位,由TL0作為低8位、TH0作為高8位,組成了16位加1計數器。計數個數與計數初值的關係為:

43

例:用定時器0產生一個50Hz的方波,由P1.1輸出,仍用程式查詢方式,振盪頻率為12MHz。解:方波週期T=1/50=0.02s=20ms,定時值為10ms。計數初值X0=216-(12×106×10×10-3)/12=65536-10000=55536=D8F0H根源程式如下:

ORG0010HMOVTMOD,#11H;T0工作於方式1,定時模式

SETBTR0;啟動T0LOOP:MOVTH0,#D8H

;T0計數初值

MOVTL0,#F0H

JNBTF0,$;若T0無溢出則原地等待,$為地址計數器

CLRTF0;若產生溢出,清除中斷請求標誌位

CPLP1.1;P1.1取反輸出,輸出方波

SJMPLOOP;重複迴圈44

三、方式2方式2為自動重裝初值的8位計數方式。

初始化編程時,THi和TLi都裝入該計數初值。方式2特別適合於用作較精確的脈衝信號發生器。尤其適用於串口串列傳輸速率發生器。計數個數與計數初值的關係為:

45

例:用T0工作於方式2,要求每計數滿200次,將P1.1端取反。

分析:T0工作於計數方式下,外部計數脈衝由T0(P3.5)引腳引入,每來一個由1至0的跳變計數器加1,由程式查詢TF0的狀態。初值X=28-200=56=38H,TH0=TL0=38H,TMOD=06H根源程式:ORG0010HMOVTMOD,06HMOVTH0,#38H

;T0計數初值

MOVTL0,#38H

SETBTR0;啟動T0LOOP1:JBCTF0,LOOP2;若TF0=1,則轉LOOP2,同時TF0=0SJMPLOOP1;否則一直等待

LOOP2:CPLP1.1;P1.1取反輸出

SJMPLOOP146

四、方式3方式3只適用於定時/計數器T0,定時器T1處於方式3時相當於TR1=0,停止計數。

工作方式3將T0分成為兩個獨立的8位計數器TL0和TH0

47

其中TL0使用原有T0的控制位和引腳,如:C/、GATE、TR0、TF0、T0(P3.4)以及(P3.2)引腳。此方式下的TL0除作為8位計數器外,其功能和操作與方式0、1完全相同,可作定時也可作計數用。該方式下的TH0,只可用作簡單的內部定時器功能,它借用定時器T1的控制位和溢出標誌位TR1和TF1,同時佔用T1的中斷源。TH0的啟動和關閉僅受TR1的控制,TR1=1,TH0啟動定時;TR1=0,TH0停止定時工作。當T0工作於方式3時,TH0佔用了T1的控制位和溢出標誌位TR1和TF1,但定時器T1仍可工作於方式0、方式1和方式2,作為串行口串列傳輸速率發生器,或用於任何不需要中斷的場合。48

設某用戶系統中已使用了兩個外部中斷源,並設置T1工作於方式2,作串行口串列傳輸速率發生器。現要求增加一個外部中斷源並由P1.0輸出一個10KHz的方波,單片機fosc為12MHz。分析:為了不增加其他硬體開銷,可設置T0工作於方式3計數方式。把T0的引腳作附加的外部中斷輸入端,TL0的計數初值為FFH;當檢測到T0引腳由1至0的負跳變時,TL0立即產生溢出,申請中斷,相當於邊沿觸發的外部中斷源。T0的模式3下,TL0作計數用,而TH0可用作8位的定時器,定時器控制P1.0輸出10KHz的方波信號。P1.0輸出方波的信號為10KHz,週期為1/10KHz=0.1ms。TH0定時為0.05ms,TL0的計數初值為FFH;TH0的計數初值X=28-(0.05×10-3×12×106)/12=216=D8H49

程式:ORG0010HMOVTMOD,#27H;T0工作於方式3,計數;T1工作於方式2,定時

MOVTL0,#FFH;TL0的計數初值

MOVTH0,#D8H;TH0的計數初值

MOVTH1,#data[H];data為根據串列傳輸速率要求設置的常數

MOVTL1,#data[L]MOVTCON,#55H;外中斷0、1邊沿觸發,啟動T0、T1MOVIE,#9FH;開放全部中斷TL0溢出中斷服務程式(由000BH)轉來

TL0OF:MOVTL0,#FFH;TL0重裝計數初值

…RETITH0溢出中斷服務程式(由001BH)轉來

TH0OF:MOVTH0,#D8H;TH0重裝計數初值

CPLP1.0;取反輸出50

運行中讀定時/計數器80C51可以隨時讀寫計數寄存器TLx和THx,例即時顯示計數值。在讀取操作時應注意分時讀取TLx和THx。例如:先讀TLx,再讀THx,如果此時定時/計數器還在運行,在讀THx之前剛好TLx溢出,向THx產生進位,則讀得的TLx值就是不正確的;同樣,先讀THx

,再讀TLx時也可能產生這種錯誤。解決方法:先讀THx,再讀TLx,再重讀THx,若兩次讀得的THx值相同,則可以確定讀入的數據是正確的,若兩次讀得的THx值不一致,則必須重讀。程式:RDTIME:MOVA,TH0;先讀TH0MOVR0,TL0;讀入TL0並存入R0CJNEA,TH0,RDTIME;再讀TH0,與上次讀入值比較,若不等重讀

MOVR1,A;若相等,存TH0在R1中

RET51

5.3.4定時/計數器用於外部中斷擴展

擴展方法是,將定時/計數器設置為計數器方式,計數初值設定為滿程,將待擴展的外部中斷源接到定時/計數器的外部計數引腳。從該引腳輸入一個下降沿信號,計數器加1後便產生定時/計數器溢出中斷。例如,利用T0擴展一個外部中斷源。將T0設置為計數器方式,按方式2工作,TH0、TL0的初值均為0FFH,T0允許中斷,CPU開放中斷。其初始化程式如下:

MOVTMOD,#06H;置T0為計數器方式2MOVTL0,#0FFH;置計數初值

MOVTH0,#0FFHSETBTR0;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论