Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.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
我在C代码中遗漏了什么吗?8051单片机编程_C_Microcontroller_8051 - Fatal编程技术网

我在C代码中遗漏了什么吗?8051单片机编程

我在C代码中遗漏了什么吗?8051单片机编程,c,microcontroller,8051,C,Microcontroller,8051,我目前正在学习C语言,所以我试着用编程器为我的AT89S52单片机编程 使用sdcc works编译,上传也成功。但当我尝试制作blink程序时,它并没有达到我预期的效果。我用闪烁功能制作了自己的头文件。其目的是以给定延迟闪烁P1.0上的LED。但是看起来延迟不起作用,它真的很快打开和关闭P1.0 这是basicIO.h #include <8052.h> unsigned int i = 0; void delay(int dl) { for(i=0;i<=dl;i

我目前正在学习C语言,所以我试着用编程器为我的AT89S52单片机编程

使用sdcc works编译,上传也成功。但当我尝试制作blink程序时,它并没有达到我预期的效果。我用闪烁功能制作了自己的头文件。其目的是以给定延迟闪烁P1.0上的LED。但是看起来延迟不起作用,它真的很快打开和关闭P1.0

这是basicIO.h

#include <8052.h>

unsigned int i = 0;
void delay(int dl)
{
    for(i=0;i<=dl;i++) { //repeat 1ms delay x times
        TMOD = 0x01;    // Timer0 mode1
        TH0 = 0xFC;      //initial value for 1ms
        TL0 = 0x66;
        TR0 = 1;      // timer start
        while(TF0==0);  // check overflow condition
        TR0 = 0;     // Stop Timer
        TF0 = 0;    // Clear flag
    }
    
}
void on(void) {
P1_0 = 0x00;
}
void off(void) {
P1_0 = 0xFF;
}
void blink(int valdl) {
    P1_0 = 0x00;
    delay(valdl);
    P1_0 = 0xFF;
}
#包括
无符号整数i=0;
无效延迟(int-dl)
{

对于(i=0;i您拥有所有函数,但主循环应该是

while(1)
{   on()
    delay(100);
    off();
    delay(100);
}
或使用

void blink(int valdl) 
{
    P1_0 = 0x00;
    delay(valdl);
    P1_0 = 0xFF;
    delay(valdl);
}

您还需要在关闭LED后等待,而不仅仅是在打开LED后,在
闪烁
。否则,在关闭LED后,您将立即再次打开LED。我投票关闭此问题,因为这是一个简单的误解,而不是C编程问题。这不是问题的原因,但头文件不应包含functi它们可能,而且经常包含函数原型,但是实现应该是分开的。
void blink(int valdl) 
{
    P1_0 = 0x00;
    delay(valdl);
    P1_0 = 0xFF;
    delay(valdl);
}