<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ò ) 收藏

一、30例

1、外中斷INT0為下降沿觸發(fā),當中斷被觸發(fā)后cpu執行中斷程序,若本次中斷的程序還未執行完INT0又來(lái)了一個(gè)相同的下降沿中斷信號怎么辦?cpu會(huì )怎么處理?若是定時(shí)器中斷呢?串口中斷呢?求解釋

答:再來(lái)一個(gè)不會(huì )執行。相同的優(yōu)先級不會(huì )打斷正在執行的中斷。

一. 如果是高優(yōu)先級的中斷來(lái)了,會(huì )打斷低優(yōu)先級的正在執行的中斷而執行高優(yōu)先級的中斷。

51的默認(此時(shí)的IP寄存器不做設置)中斷優(yōu)先級為:

外部中斷0 > 定時(shí)/計數器0 > 外部中斷1 > 定時(shí)/計數器1 > 串行中斷;

當同時(shí)有幾種中斷到達時(shí),高優(yōu)先級中斷會(huì )先得到服務(wù)。

例如:當計數器0中斷和外部中斷1(優(yōu)先級 計數器0中斷>外部中斷1)同時(shí)到達時(shí),會(huì )進(jìn)入計時(shí)器0的中斷服務(wù)函數;但是在外部中斷1的中斷服務(wù)函數正在服務(wù)的情況下,這時(shí)候任何中斷都是打斷不了它的,包括邏輯優(yōu)先級比它高的外部中斷0計數器0中斷。

51單片機的中斷優(yōu)先級控制寄存器IP可以把默認的中斷優(yōu)先級設置為高或低級,

例如默認是外部中斷0 > 定時(shí)/計數器0 > 外部中斷1 > 定時(shí)/計數器1 > 串行中斷;

現在設為定時(shí)1 和串行中斷為高優(yōu)先級 其它為低 ,那么中斷0執行時(shí)會(huì )被定時(shí)器1 或串行中斷打斷,如果設定的兩個(gè)高優(yōu)先級定時(shí)/計數器1 和串行中斷同時(shí)響應,會(huì )再自然排隊,先執行定時(shí)1中斷再執行串行中斷。

2、單片機,中斷3為什么不執行,整個(gè)程序有什么不對的地方呢?

#include

#define uint unsigned int

#define uchar unsigned char

sbit p1_0=P1^0;

sbit p1_1=P1^1;

sbit p1_2=P1^2;

sbit p1_3=P1^3;

sbit p1_4=P1^4;

sbit p1_5=P1^5;

uchar PWM_T1 = 0;

uchar PWM_T2 = 0;

uint i,m;

void delay(uint z)

{

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

for(m=0;m110;m++);

}

void PWM_value_left(int pwm_set)

{

PWM_T1=pwm_set;

}

void PWM_value_right(int pwm_set)

{

PWM_T2=pwm_set;

}

void main(void)

{

bit flag = 1;

uint n;

TMOD=0x22;

TH0=241;

TH1=241;

TL0=241;

TL1=241;

TR0=1;

TR1=1;

ET0=1;

ET1=1;

EA=1;

P1=0xf0;

delay(20);

PWM_value_left(7);

PWM_value_right(10);

delay(100);

PWM_value_left(8);

PWM_value_right(9);

delay(100);

PWM_value_left(9);

PWM_value_right(8);

delay(100);

PWM_value_left(10);

PWM_value_right(7);

}

timer0() interrupt 1 using 2

{

static uint t ;

t++;

if(t==10)

{

t=0;

p1_0=1;

p1_1=0;

}

if(PWM_T1==t)

P1=P10xfc;

}

timer1() interrupt 3

{

static uint t1 ;

t1++;

if(t1==10)

{

t1=0;

p1_2=1;

p1_3=0;

}

if(PWM_T2==t1)

P1=P10xf3;

}

答:沒(méi)有主循環(huán),

沒(méi)有等到中斷3

程序運行一次就跑飛了!!!

void main(void)

{

//...你的程序

//在這里加 死循環(huán),等待中斷

while(1)

{

;

}

}

而且,中斷響應函數里必須要清中斷標志位(你的沒(méi)有)!

3、各位大俠幫我看一下我寫(xiě)的51單片機C程序中斷有沒(méi)有問(wèn)題,執行中斷后不能繼續執行主程序,注:P3.2口一直接

注:P3.2口一直接地,程序如下:

#include

sbit dula=P2^6;

sbit wela=P2^7;

sbit d0=P1^0;

sbit d1=P1^1;

sbit d2=P1^2;

sbit d3=P1^3;

sbit d4=P1^4;

sbit d5=P1^5;

sbit d6=P1^6;

sbit d7=P1^7;

#define uchar unsigned char

#define uint unsigned int

uchar num;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void delay(uint z);

void main()

{

EA=1;

EX0=1;

IT0=0;

wela=1;

P0=0xc0;

wela=0;

while(1)

{

for(num=0;num16;num++)

{

dula=1;

P0=table[num];

dula=0;

delay(1000);

}

}

}

void delay(uint z)

{

uint a,b;

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

for(b=110;b>0;b--);

}

void exter0() interrupt 0

{

uint c;

for(c=0;c25000;c++);

d0=0;

for(c=0;c25000;c++);

d0=1;

for(c=0;c25000;c++);

d1=0;

for(c=0;c25000;c++);

d1=1;

for(c=0;c25000;c++);

d2=0;

for(c=0;c25000;c++);

d2=1;

for(c=0;c25000;c++);

d3=0;

for(c=0;c25000;c++);

d3=1;

for(c=0;c25000;c++);

d4=0;

for(c=0;c25000;c++);

d4=1;

for(c=0;c25000;c++);

d5=0;

for(c=0;c25000;c++);

d5=1;

for(c=0;c25000;c++);

d6=0;

for(c=0;c25000;c++);

d6=1;

for(c=0;c25000;c++);


上一頁(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>