; ; Sprungtabelle-10-1.asm /* * Tabellen_Sprung.asm * * Created: 10.07.2016 16:21:43 * Author: Claude und benutzung der Tabelle Sprung ATtiny 2313 ' _______ ' / | ' (Reset/dW) PA2 o| 1 20 |o VCC ' Taster0 (RXD) PD0 o| 2 19 |o PB7 (UCSK/SCL/PCINT7) ' Taster1 (TXT) PD1 o| 3 18 |o PB6 (MISO/DO/PCINT6) ' Taster2 (XTAL2) PA1 o| 4 17 |o PB5 (MOSI/DI/SDA/PCINT5) ' Taster3 (XTAL1) PA2 o| 5 16 |o PB4 (OC1B/PCINT4) LED4 ' Taster4 (/INT0) PD2 o| 6 15 |o PB3 (OC1A/PCINT3) LED3 ' (INT1) PD3 o| 7 14 |o PB2 (OC0A/PCINT2) LED2 ' (T0) PD4 o| 8 13 |o PB1 (AIN1/PCINT1) LED1 ' (OC0B/T1) PD5 o| 9 12 |o PB0 (AIN0/PCINT0) LED0 ' GND o| 10 11 |o PD6 (ICP) ' |__________| */ ; PD = eingange ; PB = Ausgang ; PD4 Taster4 ; PD3 Taster3 ; PD2 Taster2 ; PD1 Taster1 ; PB0 Taster0 ; ; PB0 LED- Controll für Alternance ; PB1 Vitesse 1 ; PB2 Vitesse 2 #define null R2 ;hat immer 0 .def tmp = r16 .EQU Portein = PORTD .EQU PINein = PIND .equ led0 = PIND0 .equ led1 = PIND1 .equ led2 = PIND2 .equ led3 = PIND3 .equ led4 = PIND4 .equ Portaus = PORTB main: /* Initialiesierung */ ldi tmp, low(ramend) out spl, tmp clr null ; clr tmp ; Alle Pins am Port D durch Ausgabe von 0x00 ins out DDRD,null ;tmp ; Richtungsregister DDRD als Eingang konfigurieren ldi tmp, 0xFF ; Alle Pins am Port B durch Ausgabe von 0xFF ins out DDRB, tmp ; Richtungsregister DDRB als Ausgang konfigurieren ; ser tmp ;unnötig ser=$ff ; Pulup für die Taster out Portein, tmp ; clr tmp ; tmp auf 0 out Portaus,null ;tmp ; led löschen out PIND, tmp ; PIND 00 loop: Ldi ZH,High(meinTab) ; High Adresse der Tabel ldi ZL, low(meinTab) ; Low Adresse der Tabel in tmp, PIND ; zustande der Register abfragen andi tmp,0x07 ; Lösche die obere Bits UND Verknüpfung add ZL,tmp ; Adiere Portklavierstand zu Tabellenadresse ; CLR tmp ; TMP löschen adc ZH,null ; tmp ; im Z register C Addieren ijmp ; Ja PIN Auswerten und zum meinTad springen Springen meinTab: rjmp Pos_0 rjmp Pos_1 rjmp Pos_2 rjmp Pos_3 rjmp Pos_4 rjmp Pos_5 rjmp Pos_6 rjmp Pos_7 Pos_0: rjmp loop Pos_1: ldi tmp, 1 out led1, tmp rcall warten_1 ldi tmp, 0 out led1, tmp rcall warten_1 rjmp loop Pos_2: rjmp loop ; ret Pos_3: rjmp loop Pos_4: rjmp loop Pos_5: rjmp loop Pos_6: rjmp loop Pos_7: rjmp loop Warten_1:; zur Zeit kurzgeschlossen ret ; ============================= ; Warteschleifen-Generator ; 4000000 Zyklen: = 1 Sekunde ; ----------------------------- ; warte 3999996 Zyklen: ldi R17, $24 WGLOOP0: ldi R18, $BC WGLOOP1: ldi R19, $C4 WGLOOP2: dec R19 brne WGLOOP2 dec R18 brne WGLOOP1 dec R17 brne WGLOOP0 ; ----------------------------- ; warte 3 Zyklen: ldi R17, $01 WGLOOP3: dec R17 brne WGLOOP3 ; ----------------------------- ; warte 1 Zyklus: nop ; jmp ende_vergleich ; nur für Simulationszwecke! ENTFERNEN!