打印
[AVR单片机]

求怎么用AVR mega16依次点亮LED灯!!

[复制链接]
4688|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
那木罕|  楼主 | 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 | 只看该作者
是个简单程序,除了二楼说得问题,别的看不出什么问题

使用特权

评论回复
5
lpydidi| | 2010-3-15 23:17 | 只看该作者
PORTB = 0x01什么意思?为什么是PB0为输出高电平

使用特权

评论回复
6
yeshenshi| | 2010-3-18 15:46 | 只看该作者
DDRB=0X01 改成DDRB=0X03; 应该就能把两个灯依次点亮了吧

使用特权

评论回复
7
笑苍天| | 2010-3-18 15:54 | 只看该作者
赞同楼上。

使用特权

评论回复
8
午夜粪车| | 2010-3-18 20:02 | 只看该作者
这个到处都有吧

使用特权

评论回复
9
xiaomifan| | 2010-3-18 21:34 | 只看该作者
DDRB=0X01 改成DDRB=0X03; 应该就能把两个灯依次点亮了吧
yeshenshi 发表于 2010-3-18 15:46

这个什么道理

使用特权

评论回复
10
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();
   }
    }
}

使用特权

评论回复
11
whipple| | 2010-4-2 10:46 | 只看该作者
楼上的  你那程序编译通不过啊

使用特权

评论回复
12
fangyi66| | 2010-4-2 12:24 | 只看该作者
应该还要加入相关的头文件的

使用特权

评论回复
13
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();
}
}
}

使用特权

评论回复
14
playjian| | 2010-4-6 16:55 | 只看该作者
端口的方向设置问题将DDRB设置成0xff

使用特权

评论回复
15
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

粉丝