菜鸟问个简单的灯闪烁问题

li_rui_1220 2012-04-30 08:06:12
# include <reg52.h>
char a=0;
void main()
{ TMOD = 0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;

while(1)
{ P1=0;
if(a == 20)
P1=0xff;
}
}
void i() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
为什么这段代码,8个LED不会闪烁呢?用定时器或延迟函数都不行!请问各位高手这是怎么回事呀?我用软件单步看P1的变化是对的!!求帮忙啊!谢谢了!
...全文
104 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
咕噜咕噜斯基 2012-04-30
  • 打赏
  • 举报
回复
#include <reg52.h>  

char a = 0;

void main()
{
TMOD = 0x01;
TH0 = (65536 - 50000) / 256;
TL0 = (65536 - 50000) % 256;
EA = 1;
ET0 = 1;
TR0 = 1;

while (1)
{
;
}
}

void i() interrupt 1
{
TH0 = (65536-50000) / 256;
TL0 = (65536-50000) % 256;
if (++a > 20)
{
a = 0; // 试试吧!
P1 = ~P1;
}
}
传递正能量 2012-04-30
  • 打赏
  • 举报
回复
# include <reg52.h>
char a=0;
void main()
{ TMOD = 0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;

while(1)
{ P1=0;
if(a >= 20)
{
P1=0xff;
if(a==40){
a=0;
}
}

}
}
void i() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
dceacho 2012-04-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

这要如何接上拉电阻啊?流水灯就能实现啊?引用 1 楼 的回复:
你没接上拉电阻?
[/Quote]
P1口的8个IO各接一个10K的电阻到VDD,
另外楼上的也说了,可能是闪的太快了,你肉眼看不见
aydf1 2012-04-30
  • 打赏
  • 举报
回复
void i() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
你那个是很快的闪一下,时间为50毫秒(只闪一次)


li_rui_1220 2012-04-30
  • 打赏
  • 举报
回复
这要如何接上拉电阻啊?流水灯就能实现啊?[Quote=引用 1 楼 的回复:]
你没接上拉电阻?
[/Quote]
li_rui_1220 2012-04-30
  • 打赏
  • 举报
回复
不对吧!我是设置的1秒闪一次的!原来我用延时函数也不行啊!!!
传递正能量 2012-04-30
  • 打赏
  • 举报
回复
# include <reg52.h>	  
char a=0;
void main()
{ TMOD = 0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;

while(1)
{ P1=0;
if(a >= 20)
{
P1=0xff;
if(a==40){
a=0;
}
}

}
}
void i() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}


你那个是很快的闪一下,时间为50毫秒(只闪一次)
dceacho 2012-04-30
  • 打赏
  • 举报
回复
你没接上拉电阻?

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧