非常简单的应用程序(使用2个按钮增加和减少七段显示)

时间:2014-04-27 10:23:50

标签: c

我写了一个简单的程序,使用2个按钮增加和减少7段显示的值,当我试图在atmega16微控制器上尝试只有增量工作时,减量部分只有在我试图增加时才起作用否则它没有工作,如果数字达到0,它也不会进入9 ..我确定代码有问题,但我无法弄明白。 这是代码

#include<avr/io.h>
#include<stdio.h>
#include<stdlib.h>
#include<util/delay.h>

int main()
{


//seven seg display  PORTC 0:3 , initial value 2 , inc when Port B6 is pressed (dont   exceed 9>>0) , dec Port B7
//init
//set DDRC 0:3 as output    
DDRC |=0x0F;
//set init value for 7 seg as 2
PORTC &= 0xF0;
PORTC |=(1<<1);

//set port B 6,7 as inputs
DDRB &=0x3F;



while(1)
{
    //check if b6 is pressed
    if(!(PINB & 0b01000000))
    {
        _delay_ms(30);
        while(!(PINB & 0b01000000));
        if((PORTC & 0x0F) ==0x09)
            {
                PORTC &= 0xF0;
            }
        else
            {
                PORTC= PORTC++;
            }

    }
    if(!(PINB & 0b10000000))
    {
        _delay_ms(30);
        while(!(PINB & 0b10000000));
        if((PORTC & 0x0F) ==0x00)
            {
                PORTC &= 0xF9;
            }
        else
            {
                PORTC= PORTC--;
            }

    }
}


return 0;

}

1 个答案:

答案 0 :(得分:0)

PORTC &= 0xF9;不会将0更改为9.事实上,当PORTC为0时,它不会执行任何操作。

另外,摆脱PORTC= PORTC++;PORTC= PORTC--;构造,它们是不正确的。使用PORTC++;PORTC = PORTC + 1;