
关于51单片机中断优先级的
#include<reg52.h>#defineuintunsignedintuinta=0,t=0;voidled1();voidchushi();voidled2()...
#include<reg52.h>
#define uint unsigned int
uint a=0,t=0;
void led1();
void chushi( );
void led2();
void main()
{
IP=0x10;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
while(1)
{
if(a==1)
led1();
if(a==2)
led2();
}
}
void extern0() interrupt 4
{
RI=0;
a=SBUF;
}
void extern1() interrupt 1
{
TH0=(62235-40000)/256;
TL0=(62235-40000)%256;
t++;
}
void chushi( )
{
TMOD=0x01;
TH0=(62235-40000)/256;
TL0=(62235-40000)%256;
ET0=1;
TR0=1;
EA=1;
}
void led1()
{
while(a==1)
{
chushi();
t=0;
P1=0xfe;
while(t!=10);
P1=0xff;
while(t!=20);
}
}
void led2()
{
chushi();
while(a==2)
{
t=0;
P1=0xfe;
while(t!=5);
P1=0xff;
while(t!=10);
}
}
这是我写的程序 可是当我输入1 是闪烁 而重新输入0 则继续闪烁 为什么不会灭呢 难道是串口中断没有打断另一个中断吗 求教大神帮忙解决万分感谢 展开
#define uint unsigned int
uint a=0,t=0;
void led1();
void chushi( );
void led2();
void main()
{
IP=0x10;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
while(1)
{
if(a==1)
led1();
if(a==2)
led2();
}
}
void extern0() interrupt 4
{
RI=0;
a=SBUF;
}
void extern1() interrupt 1
{
TH0=(62235-40000)/256;
TL0=(62235-40000)%256;
t++;
}
void chushi( )
{
TMOD=0x01;
TH0=(62235-40000)/256;
TL0=(62235-40000)%256;
ET0=1;
TR0=1;
EA=1;
}
void led1()
{
while(a==1)
{
chushi();
t=0;
P1=0xfe;
while(t!=10);
P1=0xff;
while(t!=20);
}
}
void led2()
{
chushi();
while(a==2)
{
t=0;
P1=0xfe;
while(t!=5);
P1=0xff;
while(t!=10);
}
}
这是我写的程序 可是当我输入1 是闪烁 而重新输入0 则继续闪烁 为什么不会灭呢 难道是串口中断没有打断另一个中断吗 求教大神帮忙解决万分感谢 展开
展开全部
#include<reg52.h>
#define uint unsigned int
uint a=0,t=0;
void led1();
void chushi( );
void led2();
void main()
{
IP=0x10;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
while(1)
{
if(a==1)
led1();
if(a==2)
led2();
}
}
void extern0() interrupt 4
{
if(RI)
{
RI=0;
a=SBUF;
}}
void extern1() interrupt 1
{
TH0=(62235-40000)/256;
TL0=(62235-40000)%256;
t++;
}
void chushi( )
{
TMOD=0x01;
TH0=(62235-40000)/256;
TL0=(62235-40000)%256;
ET0=1;
TR0=1;
EA=1;
}
void led1()
{
while(a==1)
{
chushi();
t=0;
P1=0xfe;
while(t!=10);
P1=0xff;
while(t!=20);
}
}
void led2()
{
chushi();
while(a==0)
{
t=0;
P1=0xfe;
while(t!=5);
P1=0xff;
while(t!=10);
}
}
#define uint unsigned int
uint a=0,t=0;
void led1();
void chushi( );
void led2();
void main()
{
IP=0x10;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
while(1)
{
if(a==1)
led1();
if(a==2)
led2();
}
}
void extern0() interrupt 4
{
if(RI)
{
RI=0;
a=SBUF;
}}
void extern1() interrupt 1
{
TH0=(62235-40000)/256;
TL0=(62235-40000)%256;
t++;
}
void chushi( )
{
TMOD=0x01;
TH0=(62235-40000)/256;
TL0=(62235-40000)%256;
ET0=1;
TR0=1;
EA=1;
}
void led1()
{
while(a==1)
{
chushi();
t=0;
P1=0xfe;
while(t!=10);
P1=0xff;
while(t!=20);
}
}
void led2()
{
chushi();
while(a==0)
{
t=0;
P1=0xfe;
while(t!=5);
P1=0xff;
while(t!=10);
}
}
追问
我运行了一下 输入1是闪烁 和原来一样 输入0还是没有关啊
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?

2020-01-15 广告
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询