单片机定时计数器中断问题

使用AT89C51单片机,频率为6兆Hz,正常情况下8个霓虹灯依次顺序点亮,循环显示,时间间隔为1s,每隔2分钟,上、下各四个灯分别闪烁两次(即上面四个灯亮时下面四个灯灭... 使用AT89C51单片机,频率为6兆Hz,正常情况下8个霓虹灯依次顺序点亮,循环显示,时间间隔为1s,每隔2分钟,上、下各四个灯分别闪烁两次(即上面四个灯亮时下面四个灯灭,反之亦然),时间间隔为0.5s,延时用T0定时器,每隔2分钟用T1中断方式,我就是不知道T1中断怎么写,外部中断我会,他说每隔2分钟,那这两分钟又要写在哪里?最好有源程序,感激不尽! 展开
 我来答
11kxmx
推荐于2017-12-16 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1.2万
采纳率:70%
帮助的人:2525万
展开全部
计时器肯定计时不了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,?能否写完整点的程序。。。
追答
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;
}
做而论道
高能答主

2015-04-01 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
设置定时器,开中断...
追问
问题是他要每隔两分钟,那每隔两分钟中断一次怎么写?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式