初学者问个简单的灯闪烁有关问题
菜鸟问个简单的灯闪烁问题
# 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的变化是对的!!求帮忙啊!谢谢了!
------解决方案--------------------
# 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++;
}
------解决方案--------------------
# 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的变化是对的!!求帮忙啊!谢谢了!
------解决方案--------------------
# 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++;
}
------解决方案--------------------
- C/C++ code
#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; } }