微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 初学者请帮忙找错-流水灯不亮

初学者请帮忙找错-流水灯不亮

时间:10-02 整理:3721RD 点击:

  1. #include<iom128v.h>
  2. #include <stdlib.h>

  3. unsigned int i,j,k;
  4. void main(void)
  5. {

  6.         DDRA = 0xff;
  7.         PORTA = 0xff;
  8.         while(1){
  9.         if(k==8) k=0;
  10.           PORTA =~ (1<<k);        
  11.           k++;
  12.       for (i=0;i<10;i++)
  13.       {
  14.             for (j=0;j<4000;j++);
  15.           }
  16.         }
  17. }

  18. 硬件环境:
  19. ATmega128 核心板
  20. 硬件连接:
  21. PA0-8 ===== LED*8 ==== VCC
  22. 开发环境:
  23. ICCAVR 6.31A

复制代码

很明显的逻辑错误,根本就不会有反应!

if后面不用{}的吗?难道说你的if就单单if(k==8) k=0;?

要是能改改这个代码就好了

就执行一句,应该可以节约一对{}

数学公式版流水灯
#include<reg52.h>
unsigned int temp,x,y,z,m,n;
void delay(unsigned int);
void main()
{
temp=0xfe;
P0=temp;
delay(200);
m=1;
temp=temp-m;
P0=temp;
delay(200);
for(n=7;n>0;n--)
{
  m=m*2 ;
  temp=temp-m;
  P0=temp;
  delay(200);
}


}
void delay(unsigned int z)
{
  
for(x=z;x>0;x--)
{
  for(y=500;y>0;y--)
  {
  }
}
}

DDRA = 0xff;  PORTA = 0xff;  你根本没有定义这个变量,也没有指定这个变量对应的输出口

LZ太虚了,头文件我都没见过,还说是初学者

PORTA =~ (1<<k); 根本逻辑就不对

#include<reg51.h>
#include <stdlib.h>
#define P0  PORTA
#define P1 自己定义的东西XXXXXX
unsigned int i,j,k;
void main(void)
{
      
        XXXXX = 0xff;
         P0= 0xfe;
        while(1){
        if(k==8) k=0;
                  PORTA=~PORTA;
                 PORTA =~ (1<<k);        
          k++;
            //延迟程序//
        }
}   我以89C51为例子,其他单片机编法类似

那个是一个延迟的指令

他应该用的是AVR单片吧!

AVR格式的话  那就是逻辑错误了

逻辑错误 哪里逻辑错误?

逻辑没有错,是配置错了。DDRA = 0xff;是配置为输入了,当然不会有反应。应该是0

可以节约,没有问题的!

他要实现流水灯  这个程序不会实现的

只用过51单片机,别的都还没接触

                                                                 

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

网站地图

Top