guojielong777 发表于 2009-1-15 13:13:14

mega128流水灯的问题~请教傻孩子了···好几天了【恢复】

本人刚刚从mega16转向128 

没想到一开始就弄了两天的流水灯; 

检查许久··没有硬件的问题 

那么就是软件的·· 

试验1: 

#include <mega128.h> 

#include <delay.h> 

void main(void) 

{ 



DDRD=0xFF; 

while (1) 

      { 

        PORTD=~PORTD; 

        delay_ms(10); 

      }; 

} 

*************************************这段程序是亮的 

然后,按照马潮老师的书: 

#include <mega128.h> 

#include <delay.h> 

void main(void) 

{ 

PORTD=0xFF; 

DDRD=0xFF; 

while (1) 

      { 

        PORTD=~PORTD; 

        delay_ms(10); 

      }; 

} 



可以生成hex,下载,仔细看了··很暗很暗的闪··?把延时加到1000ms也是很快的暗闪一下··很难看清楚,然后1000ms一个闪····然后,用avr studio调试,完全可以,单步运行OK 

还有这个 

#include <mega128.h> 

#include <delay.h> 

void main() 

{     

     unsigned char position=0;

     DDRD=0xFF;     

      

     while(1) 

     { 

       PORTD=~(1<<position); 

       if(++position>=8)  

       position=0; 

       delay_ms(50); 

     }; 

} 

也是调试可以,实际的硬件不亮··· 



难道128和16那么大的区别。。。。 

128达人指点··小弟不胜感激··· 

#include <mega16.h> 

#include <delay.h> 

void main(void) 

{ 

    unsigned char position = 0; 

    PORTC=0xFF; 

    DDRC=0xFF;   

    while(1) 

    { 

     

        PORTC= ~(1<<position); 

        if(++position>=8) position = 0; 

        delay_ms(20); 

    }; 

} 

这样同样的程序在16完全OK··· 





补充·· 

小弟用CVAVR···完全是马潮老师的忠实读者·· 

NE5532 发表于 2009-1-27 12:24:05

不慌哈,楼主。



1.不要怀疑电阻,你是买的开发板,只要设计他的人不是太笨,这个电阻的数值会八九不离十的。

2.如果你搞不清楚程序为什么不对,最好用最简单的方法来做,例如:



while(1)

{

 PORTD=0xFF;

 delay1S();

 PORTD=0x00;

 delay1S();

}



如果这个程序通过了,再往下做。



可能造成这个问题的原因有:时钟硬件、时钟熔丝设置、端口相关的初始化设置……

Love 发表于 2009-1-18 00:21:06

你写个程序,让所有的I/O输出高电平,接在小灯上,看一下他的状态,我想会不会是芯片引脚有问题了

guojielong777 发表于 2009-1-17 22:44:06

都试过了··难道是我买的开发板上的问题··

517456 发表于 2009-1-16 21:58:28

不知道10mS你的眼睛能看出来吗?改成秒级别的!

Gorgon_Meducer 发表于 2009-1-16 21:43:18

更换引脚上的限流电阻看看?
页: [1]
查看完整版本: mega128流水灯的问题~请教傻孩子了···好几天了【恢复】