Andre fag
Hjælp til programmering i C sprog
God aften SP :)
Jeg prøver på at lære(for at kunne programmere noget i skolen) at programmere.
Jeg har læst en del på det, men synes at have svært ved at forstå mange basis ting. Jeg har svært ved at se sammenhæng i at få fx imputs til at give et output.
Jeg skal programmere et AVR board(MOD-IO) http://olimex.com/dev/pdf/OTHER/MOD-IO-schematic.pdf
Har fået en vens program og her er noget af det:
unsigned char foeler; //Vi definerer en variabel, som vi kan bruge ned gennem programmet.
foeler = 1; //Vi giver denne variabel en værdi til at starte med.
unsigned char lys;
lys = 1;
PORTA = 0b00000000; //Portopsætning: 0 = input 1 = Output
DDRA = 0b00001111;
PORTB = 0b00000000;
DDRB = 0b11111000;
PORTC = 0b00000000;
DDRC = 0b11111111;
PORTD = 0b00000000;
DDRD = 0b11100010;
while(1)
// Vi laver en lykke, så programmet bliver ved ved med at køre. (Mens 1 er 1 vil den køre i ring)
{
if((0b11111110 == (PINB | 0b11111110)) & (lys == 1)) // LED1 - L - PB0
//Hvis der trykkes på knappen så der bliver forbindelse fra strømforsyningen, til microprocessorpladen, til microprocessoren gennem Input port LED 1
// OG hvis værdien på vores variabel "lys" er 1, fortsætter programmet med det som er hører til denne "if" betingelse.
{
PORTA = PORTA & 0b00000111;
//PORTA's værdi bliver lig med den værdi PORTA havde i forvejen og den bliver "lagt sammen" med den angivne binære værdi.
//Dette gør vi for, uafhængigt af programmingen af de andre rælæer, at kunne tænde og slukke lyset.
//Når man skriver "&" betyder det, at hvis værdien i forvejen var 00000011 vil man plusse med 00001111
//og det vil være lig med 00000011, da der skal være to 1'ere for at give 1.
//Dette betyder altså at de andre betingelser ikke ville kunne ændre på rælæ 1's indstilling.
PORTA = PORTA | 0b00001000; //REL1 tændes - REL1 er rælæet til diodebrættet
//Port A's værdi bliver igen lig med den værdi PORTA havde i forvejen, og da der bliver brugt et "eller" tegn, "|",
//betyder det, at når man "lægger" de to værdier sammen, skal der bare være et 1-tal for at porten bliver tændt,
// altså bliver 00000001 + 11110000 fx 11110001.
lys = 2;
//Vi giver vores variabel "lys" en ny værdi, for at skrlne mellem et tryk for "at tænde", og "at slukke".
_delay_ms(200);
// Her er en forsinkelse, da der skal være tid til at trykke knappen ned.
}
if((0b11111110 == (PINB | 0b11111110)) & (lys == 2))
// LED1 - L - PB0
{
PORTA = PORTA & 0b00000111;
PORTA = PORTA | 0b00000000;
//REL1 slukkes - rælæet til diodebrættet
lys = 1;
//Variablen får værdien 1, så det nu kun er muligt at opfylde betingelsen hvor reæl 1 (lyset) bliver tændt.
_delay_ms(200);
}
"Foeler" er til noget som jeg ikke skal bruge. Hans program vil dog ligne mit på mange punkter.
Men jeg vil altså kunne tænde/slukke for 3 relæer med 4 knapper. De 3 første knapper skal styre 3 imputs, til 3 forskellige serier af lys og den sidste knap skal have flere funktioner(blinke mm) til de 3 relæer.
Jeg kan ikke se hvordan fx if((0b11111110 == (PINB | 0b11111110)) & (lys == 1)) // LED1 - L - PB0
laver forbindelse til imput eller hvordan PORTA = PORTA | 0b00001000; tænder for relæ 1.
Jeg har gjort det lidt rodet, men kan nogen hjælpe mig?
Skriv et svar til: Hjælp til programmering i C sprog
Du skal være logget ind, for at skrive et svar til dette spørgsmål. Klik her for at logge ind.
Har du ikke en bruger på Studieportalen.dk?
Klik her for at oprette en bruger.
