/* * 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 ' Alternance (RXD) PD0 o| 2 19 |o PB7 (UCSK/SCL/PCINT7) ' Position 1 (TXT) PD1 o| 3 18 |o PB6 (MISO/DO/PCINT6) ' (XTAL2) PA1 o| 4 17 |o PB5 (MOSI/DI/SDA/PCINT5) ' (XTAL1) PA2 o| 5 16 |o PB4 (OC1B/PCINT4) ' Position 2 (/INT0) PD2 o| 6 15 |o PB3 (OC1A/PCINT3) ' (INT1) PD3 o| 7 14 |o PB2 (OC0A/PCINT2) Motor2 ' Schleife (T0) PD4 o| 8 13 |o PB1 (AIN1/PCINT1) Motor1 ' (OC0B/T1) PD5 o| 9 12 |o PB0 (AIN0/PCINT0) LED1 ' GND o| 10 11 |o PD6 (ICP) ' |__________| */ ; PD = eingange ; PB = Ausgang ; ; PD4 ist der schleife der Motor, ein Round = ein Impulse ; PD0 ist der position schalter Alternance ; PD1 ist der Position Vitesse-1 ; PB2 ist der Position Vitesse-2 ; ; PB0 LED- Controll für Alternance ; PB1 Vitesse 1 ; PB2 Vitesse 2 .def tmp = r16 .def schleife = r17 .def Schalter = r18 .EQU Portein = PORTD .EQU PINein = PIND .equ led1 = PIND1 .equ led2 = PIND2 .equ Portaus = PORTB main: /* Initialiesierung */ ldi tmp, low(ramend) out spl, tmp ldi tmp, 0xFF ; Alle Pins am Port B durch Ausgabe von 0xFF ins out DDRB, tmp ; Richtungsregister DDRB als Ausgang konfigurieren clr tmp ; Alle Pins am Port D durch Ausgabe von 0x00 ins out DDRD, tmp ; Richtungsregister DDRD als Eingang konfigurieren LDI tmp, 0xff ; Pulup für die Taster out Portein, tmp clr tmp out Portaus, tmp ; led löschen out PIND, tmp loop: Ldi ZH,High(meinTab) ; High Adresse der Tabel ldi ZL, low(meinTab) ; Low Adresse der Tabel andi tmp,0x0f ; Lösche die obere Bits add ZL,tmp ; Adiere Portklavierstand zu Tabellenadresse ldi tmp,PIND adc ZH, tmp icall rjmp loop meinTab: rcall Pos_0 rcall Pos_1 rcall Pos_2 rcall Pos_3 rcall Pos_4 ret Pos_0: ldi tmp, 1 out led1, tmp rcall warten_1 ldi tmp, 0 out led1, tmp ret Pos_1: ret Pos_2: ret Pos_3: ret Pos_4: ret Warten_1: ; ============================= ; 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 ; =============================