機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
EM78系列單片機(jī)--中斷程序的設(shè)計
EM78系列單片機(jī)--中斷程序的設(shè)計
 更新時間:2008-7-26 20:09:45  點(diǎn)擊數(shù):2
【字體: 字體顏色
在EM78X56系列的IC中有三種中斷信號,分別是:
TCC溢位中斷。
PORT6 Change 中斷。
外部信號中斷。
在說明中斷使用方式之前,用戶要了解中斷寄存器,及與中斷息息相關(guān)的控制寄存器( Control Register),另外在芯片中預(yù)除器( Prescalar )的使用方法,用戶也需要住意。
中斷信號顯示寄存器0X0F各位安排如下:
 
 
BIT7
BIT6
BIT5
BIT4
BIT3
BIT2
BIT1
BIT0
中斷信號
-
-
-
-
-
外部中斷標(biāo)志
PORT6 Change
TCC 溢位標(biāo)志。
 
寄存器0X0F使用到的有BIT0 ~ BIT2。BIT0在TCC計時器計數(shù)溢位時就會被設(shè)定,用戶可以根據(jù)0X0F的BIT0被設(shè)定而判定TCC計數(shù)溢位。跟TCC配合的還有另一個寄存器---控制寄存器(Control Register,簡稱CONT)?刂萍拇嫫0X0F各位安排如下:
 
 
BIT7
BIT6
BIT5
BIT4
BIT3
BIT2
BIT1
BIT0
控制信號
-
INT
TS
TE
PAB
PSR2
PSR1
PSR0
 
各位的代表意義如下:
□ PSR2 ~ PSR0:TCC/WDT 預(yù)除器設(shè)定。
 
PSR2
PSR1
PSR0
TCC 比例
WDT 比例
0
0
0
1:2
1:1
0
0
1
1:4
1:2
0
1
0
1:8
1:4
0
1
1
1:16
1:8
1
0
0
1:32
1:16
1
0
1
1:64
1:32
1
1
0
1:128
1:64
1
1
1
1:256
1:128
FIGURE3.5 PS0 ~ PS2的設(shè)定值與預(yù)除器和TCC及WDT的比例關(guān)係。
  Bit3預(yù)除器配置:
0:TCC
1:WDT
□     Bit4 TCC遞增時機(jī):
0:外部信號,觸發(fā)邊沿為正沿觸發(fā)。
1:外部信號,觸發(fā)邊沿為負(fù)沿觸發(fā)。
□     Bit5 TCC信號來源:
0:內(nèi)部指令周期觸發(fā)。
1:外部引腳(第三腳)觸發(fā)。
□     Bit6 INT使能標(biāo)志:
0:禁止所有中斷產(chǎn)生。
1:使能中斷信號。
□ Bit7 無使用。
三種中斷產(chǎn)生都有其先前的設(shè)定值,接下來會以示例說明。
l         例:寫一個程序,將寄存器0X20當(dāng)做計數(shù)器,每當(dāng)TCC中斷產(chǎn)生,就自動加1。
 
MOV A, @0X0     ;設(shè)定 A = 0。
IOW 0X0E            ;關(guān)閉Watch Dog。
ORG 6           ;設(shè)定接下來的程序位址。
CLR 0X20            ;清除寄存器0X20。
JMP TCC_PRO     ;跳轉(zhuǎn)到TCC­_PRO。
INT_PRO:   DISI                ;關(guān)閉各項中斷功能。
CLR 0X0F            ;清除中斷寄存器。
INC 0X20            ;計數(shù)器加1。
 
RETI                ;返回主程序,並使能中斷。
TCC_PRO:   CLR 0X0F            ;清除中斷寄存器。
MOV A, @0X01        ;設(shè)定 A = 1。
IOW 0X0F            ;使能TCC溢位中斷產(chǎn)生。
MOV A, 0X40     ;設(shè)定 A = 0X40。
CONTW           ;將A的值寫入控制寄存器。
ENI             ;使能中斷。
TCC_WAIT:  NOP              ;等待TCC計數(shù)器計數(shù)溢位。
NOP              ;等待TCC計數(shù)器計數(shù)溢位。
JMP  TCC_WAIT        ;等待TCC計數(shù)器計數(shù)溢位。
TCC中斷產(chǎn)生有幾個設(shè)計的重點(diǎn):
1.   關(guān)閉看門狗計時器(Watch Dog Timer)。
2.   設(shè)定控制寄存器(包括預(yù)除器、TCC信號來源、觸發(fā)時機(jī)…)。
3.   使能中斷(下ENI指令)。
4.   使能TCC中斷(設(shè)定中斷控制寄存器的bit0為1)。
5.   中斷服務(wù)位址為0X08。
6.   進(jìn)入中斷服務(wù)程序首先要將中斷禁止,否則會產(chǎn)生重復(fù)中斷。
7.   中斷寄存器0X0F,在進(jìn)入中斷服務(wù)程序時可以提供用戶判斷為何種中斷,判斷完成之后用戶必須自行清除。
8.   由中斷服務(wù)程序返回主程序應(yīng)使用指令RETI。
l         例:寫一個程序,將寄存器0X20當(dāng)做計數(shù)器,每當(dāng)PORT6 Change中斷產(chǎn)生,就自動加1。
 
PORT6 == 6             ;定義。
DISI                   ;中斷禁止。
ORG    6                   ;設(shè)定下一個位址為0X06。
CLR        0X20                ;清除計數(shù)寄存器。
JMP        PORT6_CH            ;跳轉(zhuǎn)到主程序。
DISI
INT_PRO:                     ;0X08為中斷服務(wù)程序起始。
NOP   
CLR        0X0F                ;清除中斷標(biāo)志寄存器。
INC        0X20                ;計數(shù)器遞增。
MOV        PORT6, PORT6        ;將PORT6的值存入正反器。
RETI                   ;回主程序。
PORT6_CH:
CLR        0X0F                ;清除中斷標(biāo)志寄存器。
MOV        A, @0XFF            ;設(shè)定 A = 0XFF。
IOW        PORT6           ;將PORT6設(shè)成輸入口。
MOV        PORT6, PORT6        ;將PORT6的值存入正反器。
 
ENI                        ;使能中斷。
MOV        A, @0X02            ;設(shè)定 A = 0X02。
IOW        0X0F                ;使能PORT6 Change中
WAIT_INT:
WDTC                   ;清除Watch Dog Timer。
NOP                        ;等待PORT6 Change。
NOP                        ;等待PORT6 Change。
JMP        WAIT_INT            ;循環(huán)。
 
使用PORT6 Change中斷有下列幾個步驟。
1.     關(guān)閉看門狗計時器(Watch Dog Timer),若看門狗計時器未關(guān)閉,用戶要定時下WDTC的指令。
2.     清除中斷寄存器。
3.     設(shè)定PORT6為輸出口。
4.     將PORT6的值存入觸發(fā)器中(這很重要)。
5.     使能中斷(下ENI的指令)。
6.     使能PORT6 Change中斷(設(shè)定中斷控制寄存器的bit1為1)。
7.     中斷服務(wù)程序的啟始位址在0X08。
8.     進(jìn)入中斷服務(wù)程序首先要將中斷禁止,否則會產(chǎn)生嵌套中斷。
9.     中斷寄存器0X0F,在進(jìn)入中斷服務(wù)程序時可以提供用戶判斷為何種中斷,判斷完成之后用戶必須自行清除。
10.  由中斷服務(wù)程序返回主程序應(yīng)使用指令RETI。
 
l         例:寫一個程序,將寄存器0X20當(dāng)做計數(shù)器,每當(dāng)外部中斷產(chǎn)生,就自動加1。
所謂的外部中斷就是利用IC外部引腳,針對單片機(jī)外部的信號做為信號源來產(chǎn)生中斷。EM78系列的外部中斷引腳是第4腳,是和PORT6位0合用,所以再使用前要先設(shè)定PORT6 , BIT0是要單純用做I/O引腳,或是中斷輸入引腳。
                ORG 6           ;設(shè)定啟始位址為0X06。
CLR 0X20            ;清除計數(shù)器。
JMP EXT_PRO     ;跳轉(zhuǎn)到主程序。
INT_EXT:
DISI                ;中斷禁止。
CLR 0X0F            ;清除中斷標(biāo)志。
INC 0X20            ;遞增計數(shù)寄存器。
RETI                ;返回主程序。
EXT_PRO:
CLR 0X0F            ;清除中斷標(biāo)志。
MOV A, @0X04        ;A = 0X04。
IOW 0X0F            ;使能外部中斷信號產(chǎn)生。
MOV A, @0X40        ;A = 0X40。
IOW 0X0E            ;設(shè)定PORT6, BIT0為中斷輸入腳
ENI             ;返回主程序。
EXT_WAIT:
NOP             ;等待外部中斷輸入。
NOP             ;等待外部中斷輸入。
JMP EX_WAIT     ;循環(huán)。
 
外部中斷顯然比較容易了解。所需注意的項目有:
1.   禁止中斷。
2.   設(shè)定中斷服務(wù)程序的地址在0X08。
3.   清除中斷標(biāo)志寄存器。
4.   使能外部中斷信號產(chǎn)生(設(shè)定中斷控制寄存器為0X04)。
5.   將PORT6, BIT0設(shè)定成外部中斷引腳(設(shè)定控制寄存器0X0E, BIT6為1)。
6.   使能中斷信號(ENI)。
7.   用戶在進(jìn)入中斷服務(wù)程序(0X08)時,首先要記得禁止中斷(DISI)。
8.   可以由中斷標(biāo)志寄存器判斷中段的信號為何產(chǎn)生,判斷完之后應(yīng)自行清除中斷標(biāo)志。
9.   返回主程序時用指令RETI。
以上三支中斷程序的寫法都是利用無窮循環(huán),所以用戶想要看到結(jié)果只有結(jié)束程序,然后查看計數(shù)寄存器(0X20)的計數(shù)狀況。
  • 上一篇: EM78系列單片機(jī)--查表程序設(shè)計
  • 下一篇: EM78系列單片機(jī)--延遲子程序的編寫
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1