微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 以下的错误实在纳闷,求赐教!谢谢啦

以下的错误实在纳闷,求赐教!谢谢啦

时间:10-02 整理:3721RD 点击:
#include<reg51.h>
#define        uchar unsigned char;
void delay02s(void);
void main()
{
        while(1)
        {
            p1^0=0;
                delay02s();
             p1^0=1;
                delay02s();
        }
}
void delay02s(void) //延时0.2秒子程序
{
        uchar i,j,k;
        for(i=20;i>0;i--)
        for(j=20;j>0;j--)
        for(k=248;k>0;k--);
}


像你这样写程序,这风格太乱了,还有你直接就用P1^0这样应该不行吧,4L讲的就不错,一般要使用某个端口总线中的一个引脚的话用位定义sbit LED  = P1^0;在没用到的引脚不要去占用他,很多场合都需要利用串转并的芯片来节省51的引脚资源的。建议你看宋雪松老师的《手把手教你学51单片机》,想效果更好的话在买书,不要光靠PDF的电子书,纸质的书可以在上面写下你的理解,这样效果更好些。我也是菜鸟,大家可以互相学习哈

uchar 定义时多了一个分号

#include<reg51.h>
#define     unsigned char   uchar ;
void delay02s(void);
void main()
{
        while(1)
        {
            P1^0=0;
                delay02s();
            P1^0=1;
                delay02s();
        }
}
void delay02s(void) //延时0.2秒子程序
{
        uchar i,j,k;
        for(i=20;i>0;i--)
        for(j=20;j>0;j--)
        for(k=248;k>0;k--);
}

看你的程序风格,应该是初学者,建议你这样写代码,对你以后有好处,
#incloude"reg52.h"
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef unsigned long uint32;
sbit LED = P1^0;
void Delay200ms()                //@11.0592MHz
{
        uint8 i, j, k;
        _nop_();
        i = 2;
        j = 103;
        k = 147;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}
void main(void)
{
while(1)
{
LED = 0;
Delay_200ms();
LED = 1;
Delay_200ms();
}
}
不明白,可追问

头文件应该是#include"reg52.h",不好意思打错了

嗯嗯,是呢!

嗯嗯,谢谢提醒,添了句sbit L=p1^0;果然好了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top