crabtack
22.06.2010, 14:15
Also, ich möcghte einen Taster auswerten, der an einer seite am atmegapin und internem pullup ist und am anderen an masse.
Aber irgendwie funktioniert das nicht.
Die zeit verändert sich nach frücken des tasters nicht.
#include <avr/io.h>
#define F_CPU 1000000
#include <util/delay.h>
#include <stdint.h>
int main(void)
{
int time = 14;
int second = 0;
int time_e = 0;
int time_z = 0;
DDRB = 255;
DDRA = 225;
DDRD = 0;
PORTD = 255;
while(1)
{
if (PINB == (PINB & 00010000))// hier ist das problem
{
time--;
}
if (PINB == (PINB & 00100000))// hier ist das problem
{
time++;
}
time_z =(time/10);
time_e = time - (time_z*10);
if (time_z == 6)
{
PORTA = 0b00111111;
}
if (time_z == 5)
{
PORTA = 0b00011111;
}
if (time_z == 4)
{
PORTA = 0b00001111;
}
if (time_z == 3)
{
PORTA = 0b00000111;
}
if (time_z == 2)
{
PORTA = 0b00000011;
}
if (time_z == 1)
{
PORTA = 0b00000001;
}
if (time_z == 0)
{
PORTA = 0b00000000;
}
if (time_e==9)
{
PORTA = PORTA + 0b01000000;
PORTB = 0b11111111;
}
else if (time_e==8)
{
PORTB = 0b11111111;
}
else if (time_e==7)
{
PORTB = 0b01111111;
}
else if (time_e==6)
{
PORTB = 0b00111111;
}
else if (time_e==5)
{
PORTB = 0b00011111;
}
else if (time_e==4)
{
PORTB = 0b00001111;
}
else if (time_e==3)
{
PORTB = 0b00000111;
}
else if (time_e==2)
{
PORTB = 0b00000011;
}
else if (time_e==1)
{
PORTB = 0b00000001;
}
else if (time_e==0)
{
PORTB = 0b00000000;
}
_delay_ms(1000);
second ++;
if (second == 60)
{
time --;
second = 0;
}
}
}
Das ziel des ganzen ist eine Eieruhr.
Ich habe links 9 led´s fpür die minuten und rechts für 10 minuten.
Dann muss man addieren wieviel zeit noch bleibt.
also z.b. links 4 und rechts 2 wären 24 minuten.
Man soll die Zeit nun mit den tastern einstellen können.
Aber das geht halt aus irgendwelchen Gründen nicht.
Ich hoffe, dass ihr mir weiterhelfen könnt.
Aber irgendwie funktioniert das nicht.
Die zeit verändert sich nach frücken des tasters nicht.
#include <avr/io.h>
#define F_CPU 1000000
#include <util/delay.h>
#include <stdint.h>
int main(void)
{
int time = 14;
int second = 0;
int time_e = 0;
int time_z = 0;
DDRB = 255;
DDRA = 225;
DDRD = 0;
PORTD = 255;
while(1)
{
if (PINB == (PINB & 00010000))// hier ist das problem
{
time--;
}
if (PINB == (PINB & 00100000))// hier ist das problem
{
time++;
}
time_z =(time/10);
time_e = time - (time_z*10);
if (time_z == 6)
{
PORTA = 0b00111111;
}
if (time_z == 5)
{
PORTA = 0b00011111;
}
if (time_z == 4)
{
PORTA = 0b00001111;
}
if (time_z == 3)
{
PORTA = 0b00000111;
}
if (time_z == 2)
{
PORTA = 0b00000011;
}
if (time_z == 1)
{
PORTA = 0b00000001;
}
if (time_z == 0)
{
PORTA = 0b00000000;
}
if (time_e==9)
{
PORTA = PORTA + 0b01000000;
PORTB = 0b11111111;
}
else if (time_e==8)
{
PORTB = 0b11111111;
}
else if (time_e==7)
{
PORTB = 0b01111111;
}
else if (time_e==6)
{
PORTB = 0b00111111;
}
else if (time_e==5)
{
PORTB = 0b00011111;
}
else if (time_e==4)
{
PORTB = 0b00001111;
}
else if (time_e==3)
{
PORTB = 0b00000111;
}
else if (time_e==2)
{
PORTB = 0b00000011;
}
else if (time_e==1)
{
PORTB = 0b00000001;
}
else if (time_e==0)
{
PORTB = 0b00000000;
}
_delay_ms(1000);
second ++;
if (second == 60)
{
time --;
second = 0;
}
}
}
Das ziel des ganzen ist eine Eieruhr.
Ich habe links 9 led´s fpür die minuten und rechts für 10 minuten.
Dann muss man addieren wieviel zeit noch bleibt.
also z.b. links 4 und rechts 2 wären 24 minuten.
Man soll die Zeit nun mit den tastern einstellen können.
Aber das geht halt aus irgendwelchen Gründen nicht.
Ich hoffe, dass ihr mir weiterhelfen könnt.