编了两段程序,请求大家帮忙看看问题怎样改善

2019-03-24 21:09发布

用ATmega16主控使八个流水灯以一秒闪一次,我不知道怎样编才能使八个流水灯按照顺序接到PD0~PD7引脚上……希望前辈们帮帮我 第一个程序是: #include<iom16v.h>
#define uint  unsigned int
#define unchar  unsigned char
void Delay_ms(unsigned int Time) { //定义延时函数
unsigned char n=0;
while(Time>0) {
for (n=1;n<80;n++) {
NOP();
}
Time--;
}
}
void main (void) { //主函数
// DDRC=0xFF;
DDRB=0xFF; //定义输出端口
// DDRD=0xFF;
//PORTC=0xFF;
PORTB=0xFF;
//PORTD=0xFF;
while(1) { //死循环
PORTB=~0b11111110; //让最右边的LED点亮
Delay_ms(1000);
PORTB=~0b11111101; //让LED左移一位,这样就可实现"流水灯的效果了
Delay_ms(1000);
PORTB=~0b11111011;
Delay_ms(1000);
PORTB=~0b11110111;
Delay_ms(1000);
PORTB=~0b11101111;
Delay_ms(1000);
PORTB=~0b11011111;
Delay_ms(1000);
PORTB=~0b10111111;
Delay_ms(1000);
PORTB=~0b01111111;
Delay_ms(1000);
}
} 第二个程序是 #include<iom16v.h>
const unsigned char dis[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
void delay(unsigned char x)//延迟函数
{unsigned char i,j;
 for(i=0;i<x;i++)
 for(j=0;j<1140;j++);
 }
void main(void)
{unsigned char n;
DDRA=0xff;
while(1)
{
for(n=0;n<8;n++)
{PORTA=dis[n];
delay(1000);
}
for(n=7;n>1;n--)
{PORTA=dis[n];
delay(1000);
} }
} 这两个怎样改才能符合要求呀?谢谢大家~ 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。