打印
[AVR单片机]

发光二极管不闪动什么问题

[复制链接]
4397|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qfengbj|  楼主 | 2010-5-14 22:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<avr/io.h>
#define uint unsigned int
int main(void)
{
   uint i,j;
   DDRB=0xff;
   while(1)
   {
       PORTB=0b01010101;
       for(i=0;i<=1000;i++)
       {
       for(j=0;j<=8000;j++);
       }
       PORTB=0b10101010;
       for(i=0;i<=1000;i++)
       {
       for(j=0;j<=8000;j++);
      }
   }
}


能编译过去,但是8个灯全亮 不闪烁怎么回事啊 ?

相关帖子

沙发
xiaomifan| | 2010-5-14 23:19 | 只看该作者
延时会被优化

使用特权

评论回复
板凳
woshixinshou| | 2010-5-16 12:23 | 只看该作者
volatile uint i,j;

使用特权

评论回复
地板
yidou| | 2010-5-16 22:09 | 只看该作者
volatile uint i,j;
什么作用?

使用特权

评论回复
5
qfengbj|  楼主 | 2010-5-17 11:45 | 只看该作者
volatile是变量修饰符,在这里什么用法?

使用特权

评论回复
6
qfengbj|  楼主 | 2010-5-17 11:50 | 只看该作者
找到一种解释啦,声明为 volatile 的字段不受编译器优化(假定由单个线程访问)的限制。
但是volatile 修饰符通常用于由多个线程访问,这里不是只有这么一段小程序呀?:o

使用特权

评论回复
7
liao_fangxing| | 2010-5-19 16:52 | 只看该作者
本帖最后由 liao_fangxing 于 2010-5-19 16:54 编辑

主时钟跑多快??  会不会是主时钟太高导致延时太短,闪了也看不见啊;P  毕竟你的程序太短了 跑个来回很快

使用特权

评论回复
8
chuxh| | 2010-5-19 21:49 | 只看该作者
很有可能

使用特权

评论回复
9
ershisi| | 2010-5-19 23:00 | 只看该作者
for(i=0;i<=1000;i++)
       {
       for(j=0;j<=8000;j++);
       }
延时并不短啊

使用特权

评论回复
10
xiaohuai| | 2010-5-20 22:18 | 只看该作者
我也觉得不是延时的问题啊

使用特权

评论回复
11
SHSLZHZ| | 2010-5-21 09:43 | 只看该作者
1# qfengbj
看你的程序根本没问题,即使时间长也不会出现灯全亮的情况,很可能是编译的问题!!!!!

使用特权

评论回复
12
chenczy| | 2010-5-21 12:26 | 只看该作者
你用的是C++还是C,C的话好像没有INT MAIN(VOID)这样的吧,C++就不知道了

使用特权

评论回复
13
Karlshen| | 2010-5-21 22:44 | 只看该作者
不是程序问题

使用特权

评论回复
14
strang| | 2010-5-26 21:07 | 只看该作者
本帖最后由 strang 于 2010-5-26 21:10 编辑

#include<avr/io.h>
#define uint unsigned int
//===========================
void delayms(uint x)
{
uint y;
  while(x--)
  for(y=0;y>120;y++);

}
//========================
int main(void)
{
   uint i,j;
   DDRB=0xff;
   while(1)
   {
       PORTB=0x55;
       delayms(6000);
       PORTB=0xaa;
       delayms(6000);
   }
}

使用特权

评论回复
15
epsmc| | 2010-5-27 11:37 | 只看该作者
程序没有问题,确认程序写到单片机flash中?什么型号?PORTB是否有特殊功能?

使用特权

评论回复
16
lovetan| | 2010-5-27 15:28 | 只看该作者
for循环还没有问题啊。大大的问题

使用特权

评论回复
17
lovetan| | 2010-5-27 15:32 | 只看该作者
顶14楼

使用特权

评论回复
18
lovetan| | 2010-5-27 15:37 | 只看该作者
#include<avr/io.h>
#define uint unsigned int
void delay (uint z)
{
        uint a, b;
        for(a=100;a>0;a--)
        for(b=z;b>0;b--);
}
int main(void)
{
   uint i,j;
   DDRB=0xff;
   while(1)
   {
       PORTB=0b01010101;
       delay (2000);
       PORTB=0b10101010;
      delay (2000);
   }
}

使用特权

评论回复
19
ershisi| | 2010-5-27 21:40 | 只看该作者
strang写的for循环有问题,连我都看出来了

使用特权

评论回复
20
strang| | 2010-6-17 18:31 | 只看该作者
哦?打错了。不好意思,是这样的。

for(y=0;y<120;y++);

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

158

帖子

1

粉丝