#include<reg51.h>
#include<intrins.h>
sbit P2_7=P2^7;
void main()
{
TMOD=0x51;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-20)/256;
TL1=(65536-20)%256;
P1=0xFE;
PT1=1;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
while(1)
{
P2_7=1;
}
}
void
tiME1_ISR() interrupt 1
{
EA=0;
P2_7=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
}
void TIME2_ISR() interrupt 3
{
EA=0;
P1=_crol_(P1,1);
TH1=(65536-20)/256;
TL1=(65536-20)%256;
EA=0;
}
为什么第二级中断只能进入一次?
来自小组:
朱海生
#include<reg51.h>
#include<intrins.h>
sbit P2_7=P2^7;
void main()
{
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-20)/256;
TL1=(65536-20)%256;
P1=0xFE;
//PT1=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
EA=1;
while(1)
{
P2_7=0;
}
}
void TIME1_ISR() interrupt 1
{
EA=0;
P2_7=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
}
void TIME2_ISR() interrupt 3
{
EA=0;
P1=_crol_(P1,1);
TH1=(65536-20)/256;
TL1=(65536-20)%256;
EA=1;
}
我觉得TMOD=0x51;不能等于0x11;TMOD=0x11后两个都工作在定时模式,应该T0在定时模式,T1在计数模式,我的程序问题出现在T1的中断程序中EA=0;改过之后调试可以得到我想要的现象。最后谢谢你的帮助。
好吧,我还以为你两个都想中断控制。。。
一周热门 更多>