Hallo, ich bin noch blutiger Anfänger was µC angeht. ;) Ich habe hier einen ATtiny2313 auf dem Pollin Board. Über die 40polige Leiste habe ich 8 LEDs am Port B des tiny angeshlossen. Das funktioniert auch wunderbar. Jetzt wollte ich ein Lauflicht mittels Bitrotation (ROL) programmieren. Auch das funktioniert. Aber zwichen LED 7 aus und LED 0 an ist halt eine längere Pause. Da ja noch das Carry Bit "durchlaufen" wird. Gibt es da einen Assembler Befehl zum Bitrotieren der das Carry Bit nicht berücksichtigt. Also direkt Bit 7 in bit 0 schiebt? hier mal mein kleines Programm:
1 | include "tn2313def.inc" |
2 | |
3 | |
4 | ldi r16,0xFF |
5 | out DDRB,r16 ;PORTB Ausgang |
6 | |
7 | |
8 | ldi r19,0x01 |
9 | main: |
10 | out PORTB,r19 ;r19 auf PORTB ausgeben |
11 | rcall longdelay ;Pause |
12 | rol r19 ;Bits in r19 links rotieren |
13 | rjmp main |
14 | |
15 | |
16 | longdelay: |
17 | clr r16 |
18 | clr r17 |
19 | ldi r18,0x03 |
20 | delay: |
21 | dec r16 |
22 | brne delay |
23 | dec r17 |
24 | brne delay |
25 | dec r18 |
26 | brne delay |
27 | ret |