Det brukar inte heta "kommando" i C. Man brukar prata om satser eller instruktioner. (eller?)
Men vänta lite nu. (tur att jag laddat ner schemat på min hårdisk)
Visst kan du göra så att du sätter enstaka pinnar till den nivå du vill ha. Men fördelen med en 8-bitars microprocessor är ju att den kan hantera åtta bitar åt gången. När du ska tända ett visst mönster av lysdioder och färger så sätter du ju inte bara en enda pinne. Du sätter ALLA pinnar på port A,C,D och F. Om de ska vara nolla eller etta beror på den data (mönster) du har.
Att skicka ut åtta bitar samtidigt på PORTA gör man bara genom att skriva
PORTA = 0b11001100; så har du fixat alla åtta pinnarna samtidigt. Etta tänder, nolla släcker. bit0 är den sista biten (dvs nollan längt till höger) och bit7, den högsta, är siffran (1) efter 'b'.
Därför är mitt tänk nåt i stil med:
Kod: Markera allt
uint8_t redpattern; // ett åttabitars tal - varje bit motsvarar en kolumn.
uint8_t greenpattern;
uint8_t bluepattern;
uint8_t selectedRows; // varje bit från bit0 till bit5 motsvarar en rad. bit 6-7 används ej.
// sätt mönster
PORTA = redpattern;
PORTC = greenpattern;
PORTD = bluepattern;
PORTF = selectedRows;
Nu sätter du allt på en gång, och slipper pilla med enskilda bitar på utgångarna.
(Du kanske skulle försöka läsa på lite mer om bitar och bytes, hur bitarna ligger organiserade i en byte, dvs. det binära talsystemet, så att du förstår vad de olika variablerna innehåller för data. En byte är alltså ett åtta bitars binärt tal. För att du ska förstå vad du gör måste du veta exakt vilken bit som är vad och vad den har för betydelse i just ditt program.)
Jag har ritat ett exempel här:
RGB2.jpg
(edit: missade bit6 i "redpattern". Ska vara
0b01000010.)
(edit2: lade till en bild som visar sambandet mellan bitarna i variablerna och vilka pinnar som aktiveras:)
RGB3.jpg
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.