Maske-Tiny2313.asm


1
; Projekt-Name: Projekt01                      Datum: 01.02.2012                  
2
3
; Datei: Maske-Tiny2313.asm              
4
5
; PORTB,xxx
6
; PORTD,xxx
7
8
; AVR: Tiny2313
9
10
           .INCLUDE   "tn2313def.inc"     ; Deklaration für Tiny2313
11
           .EQU       takt = 1200000    ; Systemtakt 1,2 MHz
12
13
           rjmp    reset             ; Reseteinsprung
14
           .ORG    OVF0addr          ; Interrupt-Vektor
15
           rjmp    TIMER0_OVF        ; Sprung zur ISR
16
17
reset:     ldi     r16,LOW (RAMEND)  ; Stapel anlegen
18
           out     SPL,r16
19
20
;nur als Beispiel gedacht!
21
           ldi     r16,0xFF          ; Bitmuster 1111 1111 (Beispiel)
22
           out     DDRB,r16          ; Datenricht. PB0 - PB7=Output
23
           ldi     r16,0x00          ; Bitmuster 0000 0000 (Beispiel)                
24
           out     DDRD,r16          ; Datenricht. PD0 - PD6=Input
25
           ldi     r16,0b01111111
26
           out     PORTD,r16         ; PD0 bis PD6=PULLUP
27
28
; Timer0 initialisieren:
29
           ldi     r16,1<<CS02|1<<CS00 ; Prescale = 1024 (Beispiel)
30
           out     TCCR0B,r16
31
           ldi     r16,1<<TOIE0      ; Timer Overflow Interrupt einrichten
32
           out     TIMSK,r16
33
           sei                       ; Timer frei
34
35
loop:      nop
36
37
           rjmp    loop
38
39
;Interrupt-ISR
40
TIMER0_OVF:push    r2                ;Kopie r2 auf den Stack, danach SP-1
41
           in      r2,SREG           ;Inhalt vom Statusregister in r2 laden
42
           nop                       ;ISR Abarbeitung (z.B. dec  r17)
43
           out     SREG,r2           ;Inhalt von r2 ins SREG laden
44
           pop     r2                ;SP+1, danach vom Stack in r2 laden
45
           reti