Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
8051单片机的嵌入式C编程问题_C_Embedded_8051 - Fatal编程技术网

8051单片机的嵌入式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 =

我正在学习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 == 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++)