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

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);
} }
} 这两个怎样改才能符合要求呀?谢谢大家~ 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
njlianjian
1楼-- · 2019-03-25 07:20
第一个程序应该是正确的,但是不知道你的硬件是怎么接的,还有你运行的是什么样的结果,请说清楚,谢谢!
雨烟
2楼-- · 2019-03-25 12:08

我们是一个队分任务的,我负责流水灯的制作,运行时只要求一秒一闪,闪烁形式没有要求,8 个灯是按顺序接
到PD0~PD7 引脚上。我不清楚怎样编才能符合引脚的条件,是定义PORATD=0x00,然后是PORTD<<吗?

电路板原理图是下面那个福建

雨烟
3楼-- · 2019-03-25 18:07
谢谢您了~

一周热门 更多>