justango 发表于 2012-11-2 10:29:18

LED两端同时加高电平才能点亮?

刚接触AVR,LED接在PD7和PB上,但是只有同时加高电平才点亮,或者我理解错了?

int main()
{
                DDRD |= _BV(PD7);
                PORTD |= _BV(PD7);

                DDRB = 0xff;
                PORTB = 0xff;
                _delay_ms(1000);
                PORTD &= ~_BV(PD7);
                PORTB = 0x00;
}

linfeng211 发表于 2012-11-2 13:54:28

int main()
{
                DDRD |= _BV(PD7);   //PD7设为输出
                PORTD |= _BV(PD7); //PD7置为高电平

                DDRB = 0xff;//PBx置为输出
                PORTB = 0xff;//PBx置为高电平
                _delay_ms(1000);
                PORTD &= ~_BV(PD7);//PD7置为低电平,LED亮
                PORTB = 0x00;    // PBx置为低电平LED灭
}

5IDIANZI 发表于 2012-11-2 14:11:20

PORTD &= ~_BV(PD7);//PD7置为低电平,LED亮
                PORTB = 0x00;    // PBx置为低电平LED灭
亮过之后马上就灭了,还能看到亮吗?中间没有延时吗?

yiming988 发表于 2012-11-2 14:17:37

你是不是没关JTAG仿真啊

justango 发表于 2012-11-2 14:53:04

linfeng211 发表于 2012-11-2 13:54 static/image/common/back.gif
int main()
{
                DDRD |= _BV(PD7);   //PD7设为输出


这是原本自带测试程序的一部分,亮1S后灭。
这样写会常亮:
int main()
{
                DDRD |= _BV(PD7);
                PORTD |= _BV(PD7);

                DDRB = 0xff;
                PORTB = 0xff;
}

justango 发表于 2012-11-2 14:53:38

5IDIANZI 发表于 2012-11-2 14:11 static/image/common/back.gif
PORTD &= ~_BV(PD7);//PD7置为低电平,LED亮
                PORTB = 0x00;    // PBx置为低电平LED ...

这是原本自带测试程序的一部分,亮1S后灭。
这样写会常亮:
int main()
{
                DDRD |= _BV(PD7);
                PORTD |= _BV(PD7);

                DDRB = 0xff;
                PORTB = 0xff;
}

sf49ers 发表于 2012-11-2 14:58:01

外围电路什么样,没加三极管什么的?

justango 发表于 2012-11-2 15:02:26

sf49ers 发表于 2012-11-2 14:58 static/image/common/back.gif
外围电路什么样,没加三极管什么的?

没有阿,直接驱动的。
页: [1]
查看完整版本: LED两端同时加高电平才能点亮?