<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機中斷問(wèn)題30例

單片機中斷問(wèn)題30例

作者: 時(shí)間:2013-05-07 來(lái)源:網(wǎng)絡(luò ) 收藏

26、我用51定時(shí)/計數器1計數為什么不計數?想讓它記數產(chǎn)生中斷讓蜂鳴器響。

sbit fengming=P1^6;

void main()

{

TMOD=0x50;

EA=1;

ET1=1;

TH1=0xff;//來(lái)一次中斷記一次數

TL1=0xff;

TR1=1;

}

void time1(void) interrupt 3

{

fengming=0;

}

答:

不知道是你在網(wǎng)頁(yè)上打錯了,還是怎么回事。

void time1(void) interrupt 3-------》void timer1(void) interrupt 3

主程序最后,要加個(gè)死循環(huán):while(1){};

還有,你在這用了方式1,這個(gè)方式在你進(jìn)中斷后,TH1和TL1會(huì )變成0000H。你不對他重新賦值,你要等FFFFH次計數,才會(huì )進(jìn)中斷。

27MCS-51 定時(shí)器/計數器1的中斷入口地址是: 一共有四個(gè)A. 0003H B. 000BH C. 0013H D. 001BH,到底是是哪一個(gè)?

答:答案是D.1BH

因為:

外中斷0——03h

定時(shí)器0——0bh

外中斷1——13h

定時(shí)器1——1bh

串口———23h

請背熟

28、我看很多程序都是主程序進(jìn)入while(1),就死在while(1)里了,然后等待外中斷。那么現在的問(wèn)題是我想讓它進(jìn)入外中斷完事后,跳過(guò)while(1),執行下邊的程序,該怎么辦?

while里邊用break嗎?不知道好使不好使,還有標志位我看是硬件自動(dòng)清零,查詢(xún)標志應該不能用吧,那該怎么辦呢?

答:

結束while(1)語(yǔ)句最好的方法就是使用break來(lái)跳出死循環(huán),關(guān)鍵就是選擇合適的flag(標志位),如果說(shuō)中斷標志位是硬件自動(dòng)清零的話(huà),那么樓主不妨在中斷服務(wù)子程序中自己加入一個(gè)標志位:如果用匯編語(yǔ)言的話(huà),PSW中的F0位就可以很好的使用;如果用C的話(huà),就可以隨便定義一個(gè)位變量,如bit a=0;。也就是說(shuō),樓主需要在程序中定義一個(gè)位變量a,在中斷服務(wù)子程序中將a置1,退出中斷后查詢(xún)a是否為1,例如:if(a) {a=0;break;}這樣就跳出了while語(yǔ)句了。

比方說(shuō),如果樓主想寫(xiě)一個(gè)等待按鍵按下中斷的程序,就可以用while(!a);而不用while(1)語(yǔ)句了。

29、我用外部中斷1,中斷一次顯示下一個(gè)數,數碼管顯示沒(méi)問(wèn)題。但是我用P3-3口用導線(xiàn)連接,接觸一次地線(xiàn),松開(kāi)一次,這時(shí)候數碼管顯示會(huì )亂跳,有時(shí)候加兩次數,有時(shí)候加好多次數,反正就是不穩定。假如p3-3口通過(guò)按鍵接地的話(huà),按一次按鍵一般情況會(huì )加一次數,但有時(shí)候也是不穩定,可能中斷好幾次。

程序如下:

#include

#define uint unsigned int

#define uchar unsigned char

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

uchar times;

uchar i=0;

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=112;y>0;y--);

}

void main()

{

EA=1;

EX1=1;

IT1=1;

while(1)

{

P1=table[i];

P2=0x00;

}

}

void into() interrupt 2

{ delay(1000);

i++;

if(i==10) i=1;

}

答:

是抖動(dòng)的問(wèn)題。

應該采取消抖措施,硬件、軟件方法皆可。

----

樓主在中斷函數中,延時(shí),時(shí)間看來(lái)很是不短!

但是延時(shí)后,并沒(méi)有檢測按鍵是否還在按下,這就不能算是軟件消抖。

30、 (1) 為什么有兩個(gè)外部中斷0允許位?有什么作用?

(2)在51內核單片機中,當允許響應外部中斷0的中斷請求時(shí),其特殊功能寄存器ie中的位必須為1 es exo ea et0?

答:

(1)兩個(gè)中斷是因為一般的單片機有兩個(gè)中斷源,可以實(shí)現兩級中斷嵌套,在實(shí)現復雜功能上兩級中斷嵌套很有用。

(2)

EA--總中斷允許位,必須為1

ES--串行中斷允許位,不必開(kāi),為0

EX0--外部中斷0允許位,應為1

ET0--定時(shí)計數溢出中斷允許位,不必開(kāi),為0


上一頁(yè) 1 2 3 4 5 6 7 8 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>