8051单片机的嵌入式C编程问题
我正在学习8051单片机编程,现在正在做一个LED闪烁的小项目。我想做的是,当我按下按钮时,LED的闪烁速度会变慢。相反,当我松开按钮时,LED将快速闪烁。我使用嵌入式C,下面是我的代码:8051单片机的嵌入式C编程问题,c,embedded,8051,C,Embedded,8051,我正在学习8051单片机编程,现在正在做一个LED闪烁的小项目。我想做的是,当我按下按钮时,LED的闪烁速度会变慢。相反,当我松开按钮时,LED将快速闪烁。我使用嵌入式C,下面是我的代码: #include <reg51.h> sbit LED = P0^0; sbit SW = P1^0; void T0delay(int num); void main() { while (1) { LED = ~LED; if (SW =
#include <reg51.h>
sbit LED = P0^0;
sbit SW = P1^0;
void T0delay(int num);
void main()
{
while (1)
{
LED = ~LED;
if (SW == 0)
{
T0delay(4);
}
else
{
T0delay(2);
}
}
}
void T0delay(int num)
{
**unsigned char i;
unsigned char a;**
for (a=0;a<num;a++)
{
for (i=0;i<num;i++)
{
TMOD = 0x01;
TL0 = 0xFE;
TH0 = 0xA5;
TR0 = 1;
while (TF0 == 0);
TR0 = 0;
TF0 = 0;
}
}
}
#包括
sbit发光二极管=P0^0;
sbit SW=P1^0;
无效延迟(int num);
void main()
{
而(1)
{
LED=~LED;
如果(SW==0)
{
t0延迟(4);
}
其他的
{
t0延迟(2);
}
}
}
无效延迟(整数)
{
**无符号字符i;
无符号字符a**
对于(a=0;a仅初始化一次i
,它不会在a
循环的下一次迭代中重置
for (i; i < num; i++)
因此,i
每次都从0
循环
但是a
的初始循环值只设置了一次,因此无论是在定义a
时,还是在第一个循环条件下,都不重要。通过仅初始化i
一次,它不会在a
循环的下一次迭代中重置
for (i; i < num; i++)
因此,i
每次都从0
循环
但是a
的初始循环值只设置了一次,因此无论是在定义a
时,还是在第一个循环条件下,都没有关系。这两条语句:for(a;a为什么有两个嵌套循环,而不是一个递增到num*num
,尽管对于输入平方的延迟在任何情况下都是一种奇怪的设计。不要发布无法编译的代码;如果要突出显示代码区域,请使用有效注释。num
是int
,但i
和a
是char
。通过传递256的num
很容易破坏此代码。这两条语句:for(a;a为什么有两个嵌套循环,而不是一个递增到num*num
,尽管对于输入平方的延迟在任何情况下都是一种奇怪的设计。不要发布无法编译的代码;如果要突出显示代码区域,请使用有效注释。num
是int
,但i
和a
是char
。如果通过256的num
,这个代码很容易被破解。@Honlo:这不是一个“评论”,这是一个答案,你在评论中不必要地解释了它。只是投票和/或接受-不要添加“谢谢”评论-不是这样的。@Honlo:这不是一个“评论”,这是一个答案,你在评论中不必要地解释了它。只是投票和/或接受-不要添加“谢谢”评论-不是这样的。
for (i = 0; i < num; i++)