初学者请帮忙找错-流水灯不亮
- #include<iom128v.h>
- #include <stdlib.h>
- unsigned int i,j,k;
- void main(void)
- {
- DDRA = 0xff;
- PORTA = 0xff;
- while(1){
- if(k==8) k=0;
- PORTA =~ (1<<k);
- k++;
- for (i=0;i<10;i++)
- {
- for (j=0;j<4000;j++);
- }
- }
- }
- 硬件环境:
- ATmega128 核心板
- 硬件连接:
- PA0-8 ===== LED*8 ==== VCC
- 开发环境:
- 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单片机,别的都还没接触
