没这么写程序的,中断初始化后就不要变了,放到while(1) 外边,中断处理程序也劲量简短,避免中断程序中使用延时。可以改成这样:
void main()
{
EA=1; //开放总中断
EX0=1; //允许使用外中断
IT0=1; //选择负跳变来触发外中断
while(1)
{
//这里指循环等待
}
}
void int0(void) interrupt 0 using 0 //外中断0的中断编号为0
{
JDQ=0;//假设 0 状态位继电器吸合, 一次中断后,继电器一直处于吸合状态
}
不知道是不是你想要的结果
void init()
{
EX0=1;
EX1=1;
IT0=1;
IT1=1
ET0=1;
TR0=1;
ES=1;
EA=1;
}
外部中断和定时器中断互补干涉,你的51单片机外部中断1和外部中断0都被使用了,不会对你使用定时器中断产生影响的,设置很简单,程序代码附后,要想是定时器中断1的优先级低于外部中断,你可以将外部中断优先级设置为高优先级,而定时器中断设置为低优先级。这样就可以了。初始化程序为:
init()
{
TMOD=0x10;
EX0=1;
EX1=1;
IT0=1;
IT1=1;
PX0=1;
PX1=1;
PT1=0;
TR1=1;
ET1=1;
TH1=xxxxx;
TL1=xxxxx;
EA=1;
}
以上就是关于单片机中的继电器吸合问题 谢谢全部的内容,包括:单片机中的继电器吸合问题 谢谢、单片机编写一段对中断系统初始化程序,使之允许INt0、INt1、t0串行口中、51单片机外部中断1和0都被使用了,但是还需要使用一个定时器中断,请问该怎么设置呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)