Sair 发表于 2011-12-2 12:13:52

ATmega16A 求大师解释下这个现象,这什么问题~~~

#include <avr/io.h>

int main(void)
{
        int i = 0,j = 0;
        DDRB = 0xff;
        while(1)
        {
                for(j = 0;j < 10;j ++)
                        for(i = 0;i < 5000;i ++)
                PORTB = 0xff;
               
                for(j = 0;j < 10;j ++)
                        for(i = 0;i < 5000;i ++)
                PORTB = 0x00;
        }
}

烧完后,一闪一闪正常,但是。。。这样PORTB在不停赋值啊,常规不会这样去写的。如下

#include <avr/io.h>

int main(void)
{
        int i = 0,j = 0;
        DDRB = 0xff;
        while(1)
        {
                PORTB = 0xff;
                for(j = 0;j < 10;j ++)
                        for(i = 0;i < 5000;i ++);
               
                PORTB = 0x00;               
                for(j = 0;j < 10;j ++)
                        for(i = 0;i < 5000;i ++);
        }
}

为什么上面这段程序LED就全亮,延时肯定起作用了,就是好像没有锁存功能。。。。求大师帮忙~~~换一组IO也是如此。。。难道片子坏了?

gliet_su 发表于 2011-12-2 12:15:26

编译器优化了,加上volatile int i = 0,j = 0;

Sair 发表于 2011-12-2 12:21:50

回复【1楼】gliet_su
-----------------------------------------------------------------------

哇,成功了,感谢大师啊~~~受益了,太谢谢了~。~!

walshao 发表于 2011-12-2 12:59:12

用的神马编译器?我杂没遇到过这种问题呢

Sair 发表于 2011-12-2 14:00:55

回复【3楼】walshao万少
-----------------------------------------------------------------------
AVR Studio                4.18.716
GUI Version                4, 18, 0, 685
AVR Simulator                1, 0, 2, 1
ATmega16                247

Operating System
Major                        6
Minor                        1
PlatformID                2
Build                        7601
Service Pack 1

Plugins:

AvrPluginAvrAsmObject        1, 0, 0, 48
AvrPluginavrgccplugin        1, 0, 0, 11
Stk500Dll                1, 0, 1, 15


不知道是不是这里看编译器哦~?

wzyllgx 发表于 2011-12-2 14:10:23

这个延时被优化很正常的。
直接写PINB位可以实现状态的翻转,延时可以用自带的_delay_ms(N) _delay_us(N),不过要注意包含延时的.H文件。

Sair 发表于 2011-12-2 14:24:18

GNU gdb 6.8好像是这个版本。

Sair 发表于 2011-12-2 14:24:50

回复【5楼】wzyllgx
这个延时被优化很正常的。
直接写pinb位可以实现状态的翻转,延时可以用自带的_delay_ms(n) _delay_us(n),不过要注意包含延时的.h文件。
-----------------------------------------------------------------------
谢谢指教,我是新手,向你学习啦~~

h804588475 发表于 2011-12-3 14:36:02

收益了~

qsv 发表于 2018-5-20 19:06:26

受教了!!!
页: [1]
查看完整版本: ATmega16A 求大师解释下这个现象,这什么问题~~~