音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

響應一個內(nèi)部和外部中斷

作者:sybaselu 欄目:單片機
響應一個內(nèi)部和外部中斷
用timer1或timer0計時做一個內(nèi)部中斷:
void timer1(void)interrupt 1
{
  EA=0;
......
  EA=1;
}
void main()
{
     ....
     EA=1;
     while(1)
}
是不是在main()中,對于內(nèi)部中斷的響應,是先將EA=1,開中斷,然后去調(diào)用timer1中斷服務程序(先關(guān)閉中斷,EA=0--->處理---->EA=1,開中斷.返回主程序main).
對于外部中斷而言,則不必開/關(guān)中斷,而是通過外部條件送到INTO,由外部條件決定什么時候響應中斷。

2樓: >>參與討論
sybaselu
再問一個
AT89C2051的RAM區(qū)有多大?ROM區(qū)=2K是吧?

3樓: >>參與討論
sybaselu
再頂一次!
 
4樓: >>參與討論
sybaselu
再頂一次!
對于響應內(nèi)部計時器timer0/1的中斷,如何調(diào)用他的中斷服務程序,是在main()中調(diào)用之前,先開中斷嗎:EA=1,然后進入:
void timer_INTE(void)interrupt 0 {}


5樓: >>參與討論
sybaselu
繼續(xù)問
AT89C2051的RAM區(qū)有多大?ROM區(qū)=2K是吧?


6樓: >>參與討論
computer00
中斷程序不用主函數(shù)去調(diào)用
    當發(fā)生中斷時,主函數(shù)被打斷,轉(zhuǎn)向中斷服務程序。當中斷服務程序處理完畢之后,
會自動返回到主函數(shù)。所以中斷函數(shù)的調(diào)用不由你負責,當中斷發(fā)生時,系統(tǒng)自然會調(diào)用。

    2051是128字節(jié)RAM,2KROM。

7樓: >>參與討論
12864
中斷里面無需關(guān)閉系統(tǒng)中斷
特殊應用除外。

8樓: >>參與討論
sybaselu
見解
1:"中斷里面無需關(guān)閉系統(tǒng)中斷"這點我明白,但處理完后最好在中斷服務程序中將中斷打開,EA=1,不要在main()中打開應該更好吧?
2:對于內(nèi)部中斷,例如用timer0或timer1做計時中斷的時候,如何發(fā)生中斷?只有在main()中將中斷打開EA=1,系統(tǒng)才去響應該中斷:
void timer0_INT(void)interrupt 0
{
...
EA=1;
}
void main()
{
  EA=1;    //此時系統(tǒng)去響應中斷服務程序:timer0_INT
while(1)
  {  
  }
}
3:對于外部中斷,如INTO/INT1則不用先將EA=1打開,去開中斷,而是由外部決定的。當外部事件滿足時就發(fā)生的外部中斷!
4:我是這么理解內(nèi)外部中斷和中斷響應的,當然之前,我們還要初始化EX,ET等。

9樓: >>參與討論
computer00
你對51的中斷理解不對
   你把EA=1這條語句當作軟中斷指令了。80X86有軟中斷指令,51中沒軟中斷指令。
   EA=1這條語句是表示使能全部中斷。如果EA=0,則所有中斷被屏蔽。EA=1,并
不一定會發(fā)生中斷。還要有各個中斷相應的中斷使能位為1,同時中斷條件成立時,
才會發(fā)生中斷,從而執(zhí)行中斷服務程序。如定時/計數(shù)器0中斷發(fā)生條件是:EA=1
且ET0=1且定時/計數(shù)器由0xFFFF變成0時。

   如果EA=0或者EX0=0,即使有外部中斷0信號,外部中斷0也是不會發(fā)生的。而不是
你所理解的“對于外部中斷,如INTO/INT1則不用先將EA=1打開,去開中斷,
而是由外部決定的。當外部事件滿足時就發(fā)生的外部中斷!”


* - 本貼最后修改時間:2005-1-19 12:44:15 修改者:computer00

10樓: >>參與討論
sybaselu

1:就是說如果我這么做:
EA=1;
ET0=1;
THL=0XAA;   //給timer0賦任意初值
TH0=0X00;
TR0=1       //有必要嗎?
那么就會發(fā)生內(nèi)部的timer0的中斷響應吧
2:
“如果EA=0或者EX0=0,即使有外部中斷0信號,外部中斷0也是不會發(fā)生的“
你是說”外部中斷0也是不會發(fā)生的“還是說”外部中斷0會發(fā)生呢“?

11樓: >>參與討論
hangqun
妳想中斷嵌套中斷?
妳想中斷嵌套中斷?

12樓: >>參與討論
twz8858877
建議你先把datasheet讀懂
建議你先把datasheet讀懂,或看看匯編的程序?qū)δ忝靼姿目刂屏鞒逃袔椭?br>
13樓: >>參與討論
sybaselu

1:不明白這句”妳想中斷嵌套中斷?“。按照computer00的說法,我的舉例應該是對的!只要滿足EA=1; EX=1; TH0=0X任意,TL0=0X任意;就會響應中斷服務程序。∑渲蠺H0,TL0不一定是0X0000!
2:twz8858877你是說datasheet還是dataflowgraph?

14樓: >>參與討論
浮云者
EA是總開關(guān),ET0是timer0中斷的開關(guān)
 自己再看看中斷框圖

15樓: >>參與討論
twz8858877
re
中斷的產(chǎn)生需要3個條件,1、總中斷允許即EA=1,2、自己的中斷位允許,即EX/ET/ES=1,3、中斷請求標志位置起,即對外部中斷為IE0、IE1,對定時中斷為TF0/TF1,對串口中斷為TI/RI。3個條件任意一個不滿足均不會進入中斷響應。中斷請求標志位的置起由條件觸發(fā),對外部中斷為INT0或INT1口出現(xiàn)下降沿(邊沿觸發(fā)方式)或低電平(電平觸發(fā)方式)時置起IE0或IE1;對定時器0/1為為定時/計數(shù)溢出時置起TF0/TF1;對串口為接收一幀數(shù)據(jù)時硬件置RI=1,發(fā)送一幀數(shù)據(jù)時置TI=1。建議你看看書上寫的中斷系統(tǒng)一節(jié),里面寫的很清楚。

16樓: >>參與討論
ysl3721
應該在初始化時即打開的好,即MAIN之前,中間不要關(guān)
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
電路過流保護有什么好方法沒有或有什么專用的元器件???
請問:有沒有和max7219兼容的比較便宜的芯片啊?
用電阻和一個io口
求教cpld
如何檢測本地電話摘機掛機?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號