[AVR单片机] 求怎么用AVR mega16依次点亮LED灯!!

[复制链接]
 楼主| 那木罕 发表于 2010-3-15 11:58 | 显示全部楼层 |阅读模式
:D 求怎么用AVR mega16依次点亮LED灯!!要c程序清单:
刚入门,求教高手。谢谢。。。。
我下边的程序有什么问题:
int delay(void);
int main(void)
{   
  DDRB = 0x01;

while(1)
{ PORTB = 0x01; //PB0为输出高电平
     delay();
  PORTB = 0X02; //PB1输出高电平
  delay();   
}

}
delay(void)
{int i;
for(i=0;i<10000;i++){;}
}
huangqi412 发表于 2010-3-15 12:12 | 显示全部楼层
DDRB = 0x01;   如果是点LED,请把所有的口设为输出...
程序匠人 发表于 2010-3-15 12:41 | 显示全部楼层
怎么发到大家谈来了,给你转到技术版面去。。。
huamunv 发表于 2010-3-15 21:18 | 显示全部楼层
是个简单程序,除了二楼说得问题,别的看不出什么问题
lpydidi 发表于 2010-3-15 23:17 | 显示全部楼层
PORTB = 0x01什么意思?为什么是PB0为输出高电平
yeshenshi 发表于 2010-3-18 15:46 | 显示全部楼层
DDRB=0X01 改成DDRB=0X03; 应该就能把两个灯依次点亮了吧
笑苍天 发表于 2010-3-18 15:54 | 显示全部楼层
赞同楼上。
午夜粪车 发表于 2010-3-18 20:02 | 显示全部楼层
这个到处都有吧
xiaomifan 发表于 2010-3-18 21:34 | 显示全部楼层
DDRB=0X01 改成DDRB=0X03; 应该就能把两个灯依次点亮了吧
yeshenshi 发表于 2010-3-18 15:46

这个什么道理
SHSLZHZ 发表于 2010-3-19 09:39 | 显示全部楼层
1# 那木罕
用AVR mega16 PORTB口依次点亮LED灯
void Delay()
{
unsigned char a, b;
for (a = 1; a; a++)
  for (b = 1; b; b++)
   ;
}
void main()
{
int i;
DDRB = 0xFF; /* 定义B口为输出*/
PORTB = 0xFF; /* 关闭全部LED */
while (1)
  {  /* 往前步进 */
   for (i = 0; i < 8; i++)
     {PORTB=~(1<<i); /* 输出低电平,使LED发光 */
   Delay();
   }
    /* 往后步进 */
   for (i = 8; i > 0; i--)
     {PORTB=~(1<<i); /* 输出低电平,使LED发光 */
   Delay();
   }
    }
}
whipple 发表于 2010-4-2 10:46 | 显示全部楼层
楼上的  你那程序编译通不过啊
fangyi66 发表于 2010-4-2 12:24 | 显示全部楼层
应该还要加入相关的头文件的
SHSLZHZ 发表于 2010-4-2 13:13 | 显示全部楼层
其实你只要把10楼的重写一遍,同时加上头文件就行了.因为10楼的是文本格式,你直接复制是不行的.或者把空格去掉就行了!!!!以下的你直接复制就可编译了!
#include <iom16v.h>
#include <macros.h>
void Delay(void)
{
unsigned char a, b;
for (a = 1; a; a++)
  for (b = 1; b; b++)
   ;
}
void main(void)
{
unsigned char i;
DDRB = 0xFF; /* 定义B口为输出*/
PORTB = 0xFF; /* 关闭全部LED */
while (1)
  {for(i=0;i<8;i++)
    {PORTB=~(1<<i); /* 输出低电平,使LED发光 */
     Delay();
    }/* 往后步进 */
for (i = 8; i > 0; i--)
{PORTB=~(1<<i); /* 输出低电平,使LED发光 */
Delay();
}
}
}
playjian 发表于 2010-4-6 16:55 | 显示全部楼层
端口的方向设置问题将DDRB设置成0xff
whipple 发表于 2010-4-7 10:22 | 显示全部楼层
这个是完整的
#include <avr/io.h>

void Delay(void)
{
        unsigned char a,b,c;
        for(a = 1;a;a ++)
        for(b = 1;b;b ++)
        for(c = 1;c < 2;c ++);
}
int main(void)
{
        unsigned char i;
        DDRA = 0xff;
        PORTA = 0xff;
        while(1)
                {
                for(i = 0;i < 8;i ++)
                        {
                                PORTA =~(1 << i);
                                Delay();
                        }
                for(i = 7;i > 0;i --)
                        {
                                PORTA =~(1 << i);
                                Delay();
                        }


                }
}

for (i = 8; i > 0; i--)
这句i应该等于7吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

26

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

7

主题

26

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部