51单片机f=12MHz,用定时器T0,工作方式1,中断方式工作,从P1.0输出周期为1s的方波,让发光二极管以1Hz闪烁

#include<reg52.h>sbitLED1=P1^0;unsignedintt=0;voidmain(){TMOD=0x01;TH0=(65536-50000)/... #include <reg52.h>
sbit LED1=P1^0;
unsigned int t=0;
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
EA=1;
while (1)
{

}
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t==20)
{
t=0;
LED1=0;
}
else
{
LED1=1;
t=0;
}
}
求教代码哪里有错?单片机是郭天祥的TX-1C
展开
 我来答
hg200300
推荐于2018-04-13 · 超过24用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:57.9万
展开全部
程序最后 一段

else
{
LED1=1;
t = 0;

}
这部分中的t = 0 ;多余了。每次定时器中断进来的时候t不等20就会执行else ,然后t被清零,这样t就一直不可能等于20了。
斯元英0I4
2012-08-14 · TA获得超过104个赞
知道答主
回答量:75
采纳率:0%
帮助的人:44.9万
展开全部
#include <reg52.h>
sbit LED1=P1^0;
unsigned int t=0;
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
EA=1;
while (1)
{

}
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t==20)
{
t=0;
LED1=~LED1;
}
}

改下就行了,我给你改好了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式