微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 大家来帮我看看这个程序错在哪里了!?

大家来帮我看看这个程序错在哪里了!?

时间:10-02 整理:3721RD 点击:
#include<reg52.h>
sbit p1_1=P1^0;
sbit p1_2=P1^1;
sbit p1_3=P1^2;
sbit p1_4=P1^3;
sbit p1_5=P1^4;
sbit p1_6=P1^5;
sbit p1_7=P1^6;
sbit p1_8=P1^7;
unsigned int a;
void main()
{
        a=50000;
        p1_1=0;
        p1_2=1;
        p1_3=0;
        p1_4=1;
        p1_5=0;
        p1_6=1;
        p1_7=0;
        p1_8=1;
        while(a--);
        a=50000;
        p1_1=1;
        p1_2=0;
        p1_3=1;
        p1_4=0;
        p1_5=1;
        p1_6=0;
        p1_7=1;
        p1_8=0;
        while(a--);
}
上面这个程序实现不了八个灯的间接闪烁
而下面这个程序确实是可以实现两个灯的闪烁的
请哪位高手指教
#include<reg52.h>
sbit p1_1=P1^0;
sbit p1_2=P1^1;
unsigned int a;
void main()
{
        a=50000;
        p1_1=0;
        p1_2=0;
        while(a--);
        a=50000;
        p1_1=1;
        p1_2=1;
        while(a--);
}

程序没错啊 会不会是驱动的方式不合适?灯是地电平亮么?

a没赋初值,并且延时不是这样的~

#include<reg52.h>
void delay_ms(unsigned int xms);
void main()
{  
    while(1)
    {
        P1 = 0xaa;              //      10101010
        delay_ms(500);       //延时0.5秒
      P1 = 0x55;             //      01010101
        delay_ms(500);
     }
}
void delay_ms ( )
{  
    unsigned int i,j;
    for(i=xms;i>0;i--)
         for(j=110;j>0;j++);
}

我觉得这段程序虽然不好看,但是应该没什么错误吧。是不是单片机端口的负载能力比较小啊?

我怎么感觉只能亮灭一次,没在while(1)循环里面

首先感谢各位!
今天我弄了很久,终于弄好了!
程序没有任何的问题,之所以点亮不了发光管是因为我自己操作不对的原因,我是新手,所以对于KELL的很多地方多不是很熟,今天我新建了一个工程,在把这个文件添加到工程里就成功了,我想昨天没有成功是因为没有保存就编译的原因吧!
说到KELL,我有一个地方不懂,就是生成HEX文件的时候我要编译两次,生成两次才能够生成HEX文件,我也不知道是KELL的原因还是操作的原因,有哪位高人有相同的经历的吗?
最后还是再谢谢大家的关注!

在OutPut里勾选了生成HEX的选项后一般不会的,除非你的Keil有问题,重装一个新版的吧!

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

网站地图

Top