
Har drivit mig till vansinne några gånger

Kod: Markera allt
in r0,PINB
ori r0,0x0F
out PORTB,r0
Kod: Markera allt
in r0,PORTB
ori r0,0x0F
out PORTB,r0
Varför inte:MicaelKarlsson skrev:Jag brukar för enkelhets skull skriva så här:Kod: Markera allt
#define SET_RELAY_1 bit_set(PORTC,1)
Kod: Markera allt
#define RELAY_1_PORT PORTC
#define RELAY_1_PIN 1
...
bit_set(RELAY_1_PORT, RELAY_1_PIN);
...
Kan så vara men det fungerar och det är det jag vill uppnå. Men smaken är ju som det vi sitter på!!speakman skrev: Skulle ge betydligt högre C-poäng imo.![]()
Kod: Markera allt
PORTB|=(1<<2);
10c: a5 e2 ldi r26, 0x25 ; 37
10e: b0 e0 ldi r27, 0x00 ; 0
110: e5 e2 ldi r30, 0x25 ; 37
112: f0 e0 ldi r31, 0x00 ; 0
114: 80 81 ld r24, Z
116: 84 60 ori r24, 0x04 ; 4
118: 8c 93 st X, r24
Kod: Markera allt
PORTB|=(1<<2);
d0: 2a 9a sbi 0x05, 2 ; 5
d2: 80 e0 ldi r24, 0x00 ; 0
d4: 90 e0 ldi r25, 0x00 ; 0
Kod: Markera allt
void UART_send( unsigned char data ){
while ( !( UCSR0A & (1<<UDRE0)) );
f0: 80 91 c0 00 lds r24, 0x00C0
f4: 85 ff sbrs r24, 5
f6: fc cf rjmp .-8 ; 0xf0 <main+0x3c>
UDR0 = data;
f8: 50 93 c6 00 sts 0x00C6, r21
Det var ju intressant.. jag använder ju dels några få flaggor som signaler från interrupt (nedräknande klocka, eller uart t.ex.), men jag kommer också att ha behov av ca 1536 flaggor som speglar olika tillstånd i omgivningen (larm, spänningsnivåer, utgångar mm) som ska grupperas i 8 x 192 stycken. I det fallet kommer jag att köra bitvis , annars har jag inget minne kvar alls!minimal minnesanvändning ofta innebär bitmaskning för flaggor
Kod: Markera allt
MCUCR = 0x80; // avaktivera JTAG
asm volatile("ldi r24,0x80;");// två gånger
asm volatile("out 0x35, r24;"); // MCUCR = 0x80;