[AVR单片机] IO口输出异常。。。。

[复制链接]
3124|2
 楼主| kuangcheng100 发表于 2013-4-18 15:56 | 显示全部楼层 |阅读模式
#include <avr/io.h>

void delay_ms(unsigned int time);


int main(void)
{
        DDRD =0Xff;
        PORTD =0Xff;
        delay_ms(200);
    while(1)
    {      
                PORTD =0X00;
                delay_ms(500);
                PORTD =0Xff;
                delay_ms(500);
                //TODO:: Please write your application code
    }
}

void delay_ms(unsigned int time)
{
        unsigned int i,j;
        for (i=0;i<time;i++)
        {
                for (j=0;j<100;j++);
        }
}

程序如上,但是,结果用示波器观察发现,输出一直是1US的低电平然后3US的高电平,无论怎么去调整delay的值,也是这样的输出。
还有,如果是单纯的仅输出高电平或低电平,不去高低电平切换,就不会异常,不知道这叫什么状况啊,大侠何在?????
 楼主| kuangcheng100 发表于 2013-4-18 15:57 | 显示全部楼层
补充一下,用的是ATMEGA8L芯片、、、、
bill_shi68 发表于 2013-4-18 19:01 | 显示全部楼层
可能是编译优化掉了,导致延时程序不准
也可以看下汇编代码是否和C代码意图一致
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

72

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部