单片机定时计数器中断问题
使用AT89C51单片机,频率为6兆Hz,正常情况下8个霓虹灯依次顺序点亮,循环显示,时间间隔为1s,每隔2分钟,上、下各四个灯分别闪烁两次(即上面四个灯亮时下面四个灯灭...
使用AT89C51单片机,频率为6兆Hz,正常情况下8个霓虹灯依次顺序点亮,循环显示,时间间隔为1s,每隔2分钟,上、下各四个灯分别闪烁两次(即上面四个灯亮时下面四个灯灭,反之亦然),时间间隔为0.5s,延时用T0定时器,每隔2分钟用T1中断方式,我就是不知道T1中断怎么写,外部中断我会,他说每隔2分钟,那这两分钟又要写在哪里?最好有源程序,感激不尽!
展开
展开全部
计时器肯定计时不了2分钟,可让其100ms中断一次,变量a加1
主程序判断a是否等于或大于1200 即得到2分钟 0.5s也一样
void init()//初始化设置
{
TMOD=0x10;//定时器1作为定时器用
TH1==(65535-50000)/256;
TL1=(65535-50000)%256;
TR1=1;//启动定时器
ET1=1;//允许定时器1中断
EA=1;//开总中断
}
中断程序
void timer1()interrupt 3//注意:定时器1的中断序号为3
{
a++;
TH1==(65535-50000)/256;
TL1=(65535-50000)%256;
}
主程序判断a是否等于或大于1200 即得到2分钟 0.5s也一样
void init()//初始化设置
{
TMOD=0x10;//定时器1作为定时器用
TH1==(65535-50000)/256;
TL1=(65535-50000)%256;
TR1=1;//启动定时器
ET1=1;//允许定时器1中断
EA=1;//开总中断
}
中断程序
void timer1()interrupt 3//注意:定时器1的中断序号为3
{
a++;
TH1==(65535-50000)/256;
TL1=(65535-50000)%256;
}
追问
主程序怎么判断a是不是大于1200,?能否写完整点的程序。。。
追答
while(1)
{
P0=1//点亮一个LED,LED阳极接P0
while(a<1200)
{
b=a%10;
if(b==0)
{P0=P0<<1 }
if(p0==ox80)
{P0=1}
}
a=0;
p0=0xf0;//这一段根据自己需要修改
while(a<5);
a=0;
p0=0xof;
while(a<5);
a=0;
p0=0xf0;
while(a<5);
a=0;
p0=0xof;
while(a<5);
a=0;
}
展开全部
设置定时器,开中断...
追问
问题是他要每隔两分钟,那每隔两分钟中断一次怎么写?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询