打印
[AVR单片机]

高手请进……

[复制链接]
8021|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wucc2009|  楼主 | 2010-8-15 18:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
8个发光管间隔200ms由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms间隔全部闪烁5次。重复此过程

#include<iom16v.h>
#include<macros.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint t)
{
  int i,j;
  for(i=0;i<t;i++)
    for(j=0;j<1141;j++);
}
void main()
{
  uint k,m;
  DDRD=0XFF;
  PORTD=0XFF;
  while(1)
  {
    uint i;
       for(k=0;k<8;k++)
         {
           PORTD&=~BIT(k);
           delay(200);
           PORTD|=BIT(k);
           delay(200);
          }
       for(m=7;m>=0;m--)
         {
           PORTD&=~BIT(m);
           delay(200);
           PORTD|=BIT(m);
           delay(200);
         }
      PORTD=0XFF;
      for(i=0;i<5;i++)
        {
          PORTD=0X00;
          delay(300);
          PORTD=0XFF;
          delay(300);
         }
  }
}
这个程序为什么只能实现前两个for循环啊,并且while循环也不能实现,但是把第二个for循环删除的话就可以完全实现了啊。谢谢……

相关帖子

来自 2楼
xuyiyi| | 2010-8-15 19:15 | 只看该作者
呵呵!

俺不是高手,但是答案俺知道,因为你已经将答案告诉俺了。

把第二个for循环删除的话就可以完全实现了啊。

问题出在你的第二个for循环中,由于 m你定义为uint类型,故m>=0永远成立,进入死循环,故永远进下了下一个for循环中。  

解决方法1:  将 m>=0 改为 m>0 或 m != 0 ;
解决方法2:  将 m 定义由 uint类型 改为 int  m ;

使用特权

评论回复
板凳
wucc2009|  楼主 | 2010-8-15 19:28 | 只看该作者
谢了啊,我知道了啊,呵呵,初学乍道,难免犯这种低级错误还望以后多多指教啊,。。。

使用特权

评论回复
地板
望断云山| | 2010-8-15 19:48 | 只看该作者
“初学乍练”“初来乍到”。用词要严谨,写代码更要严谨。呵呵呵。。。

使用特权

评论回复
5
hotpower| | 2010-8-16 06:55 | 只看该作者
本帖最后由 hotpower 于 2010-8-16 07:07 编辑

老许老辣也,正点,裤子一条。论坛里,加答别人实际提高了自己。但是解答1好像有点问题:m=7,6,...0 包括0,故应该改为:m<8或m<=7.

使用特权

评论回复
6
xuyiyi| | 2010-8-16 09:16 | 只看该作者
HOT大叔正点,牛X!

姜还是老的辣,大叔的C玩的飞转,写成 m<8或m<=7 ,正好符合大叔的非典写法,通俗写法好象是将预定义写成 m=8

小声提醒一下,大叔德高望众,可不能跟某些人一样,光说不练,大叔在 5楼 奖裤子一条。至今未收到

使用特权

评论回复
7
hotpower| | 2010-8-16 10:01 | 只看该作者
晕!手机发裤子可能有些问题。

本主题是常见而不易找出的问题,因为编程者都很自信绝不会在这种地方出错。

在无符号数据类型处理中,切记“负数”实际是最大的数。

使用特权

评论回复
8
xuyiyi| | 2010-8-16 10:07 | 只看该作者
谢谢大叔的裤子。

俺一定努力学好C++

使用特权

评论回复
9
seabada| | 2010-8-16 10:27 | 只看该作者
学习

使用特权

评论回复
10
hotpower| | 2010-8-16 10:47 | 只看该作者
宝剑赠英雄。
裤子应该属于帮助别人的人。

使用特权

评论回复
11
herline100| | 2010-8-17 12:55 | 只看该作者
搞技术的要严谨啊 ,一看M>=0就有问题

使用特权

评论回复
12
xuyiyi| | 2010-8-17 13:05 | 只看该作者
LZ只有大二,喜欢学习,能自己动手调试查找问题,已经很不错啦!

希LZ努力学习,新的一代高手即将诞生,呵呵呵。。。

使用特权

评论回复
13
sydyh43| | 2010-8-17 13:41 | 只看该作者
学学

使用特权

评论回复
14
tyj83003| | 2010-8-21 11:42 | 只看该作者
好啊

使用特权

评论回复
15
wucc2009|  楼主 | 2010-8-24 20:05 | 只看该作者
谢谢各位的指点啊……努力ing

使用特权

评论回复
16
黄俊霖00613| | 2010-8-25 20:08 | 只看该作者
受教了

使用特权

评论回复
17
zhuml2010| | 2010-8-27 12:28 | 只看该作者
看完真是受教了

使用特权

评论回复
18
sxhhhjicbb| | 2010-8-28 20:07 | 只看该作者
代码是一门艺术。值得细细品味。。。温故而知新。

使用特权

评论回复
19
jim_zeng| | 2010-8-30 16:38 | 只看该作者
学习

使用特权

评论回复
20
csq463276932| | 2010-9-4 09:47 | 只看该作者
不错学习了。

使用特权

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

本版积分规则

个人签名:加油,我的人生将会变得光明!!!

0

主题

51

帖子

1

粉丝