TEST.ASM


1
                      .include "m128def.inc"
2
3
                      ;-------Macros-------------------------------------------------------------
4
5
                      ; Pin Toggeln
6
                      .macro TogPin
7
                                 SBIS @0,@1        ; Wenn Bit (@1) in I/O-Reg. (@2) gesetzt, überspringe nächsten Befehl
8
                                 rjmp SetPin
9
                        ClrPin:  cbi @0,@1
10
                                 rjmp TogPinx
11
                        SetPin:  SBI @0,@1
12
                        TogPinx:
13
                      .endmacro
14
15
16
                      .def  akku        = r16    ; r16 als Rechenregister "akku" definieren
17
                      .def  msTimer     = r23    ; r23 als Zeit-Einstellungsregister
18
                          ; r24 als Zählregister
19
                      .def  templ       = r17    ; Zwischenspeicher 1
20
                      .def  temp2       = r18    ; Zwischenspeicher 2
21
                      .def  PulsCounter = r19
22
                      .equ  key_pin     = PINA    ; Tasterpins
23
                      .equ  key_port    = PORTA    ; Datenregister (Taster)
24
                      .equ  key_ddr     = DDRA    ; Datenrichtungsregister (Taster)
25
26
                      .equ  led_port    = PORTB    ; Datenregister (LED)
27
                      .equ  led_pin     = PINB
28
                      .equ  led_ddr     = DDRB    ; Datenrichtungsregister (LED)
29
30
31
                      jmp RESET                  ; Reset
32
                      jmp EXT_INT0               ; IRQ0 Request
33
                      jmp EXT_INT1               ; IRQ1 Request
34
                      jmp EXT_INT2               ; IRQ2 Request
35
                      jmp EXT_INT3               ; IRQ3 Request
36
                      jmp EXT_INT4               ; IRQ4 Request
37
                      jmp EXT_INT5               ; IRQ5 Request
38
                      jmp EXT_INT6               ; IRQ6 Request
39
                      jmp EXT_INT7               ; IRQ7 Request
40
                      jmp TIMER2_COMP            ; Timer2 Compare
41
                      jmp TIMER2_OVF             ; Timer2 Overflow
42
                      jmp TIMER1_CAPT            ; Timer1 Capture
43
                      jmp TIMER1_COMPA           ; Timer1 CompareA
44
                      jmp TIMER1_COMPB           ; Timer CompareB
45
                      jmp TIMER1_OVF             ; Timer1 Overflow
46
                      jmp TIMER0_COMP            ; Timer0 Compare
47
                      jmp TIMER0_OVF             ; Timer0 Overflow
48
                      jmp SPI_STC                ; SPI Serial Transfer Complete
49
                      jmp USART0_RXC             ; USART0, Rx Complete
50
                      jmp USART0_UDRE            ; USART0 Data Register Empty
51
                      jmp USART0_TXC             ; USART0, Tx Complete
52
                      jmp ADC_COMP               ; ADC Conversion Complete
53
                      jmp EE_READY               ; EEPROM Ready
54
                      jmp ANALOG_COMP            ; Analog Comparator
55
                      jmp TIMER1_COMPC           ; Timer1 CompareC
56
                      jmp TIMER3_CAPT            ; Timer3 Capture
57
                      jmp TIMER3_COMPA           ; Timer3 CompareA
58
                      jmp TIMER3_COMPB           ; Timer3 CompareB
59
                      jmp TIMER3_COMPC           ; Timer3 CompareC
60
                      jmp TIMER3_OVF             ; Timer3 Overflow
61
                      jmp USART1_RXC             ; USART1, Rx Complete
62
                      jmp USART1_UDRE            ; USART1, Data Register Empty
63
                      jmp USART1_TXC             ; USART1, Tx Complete
64
                      jmp TWI                    ; 2-wire Serial Interface
65
                      jmp SPM_READY              ; Store Program Memory Read
66
67
RESET:                ldi r16,high(RAMEND)
68
                      out SPH,r16
69
                      ldi r16,Low(RAMEND)
70
                      out SPL,r16
71
72
                      ;***************** PORTA ********************
73
                      ldi r16,$00
74
                      out DDRA,r16
75
76
                      ldi r16,$00
77
                      out PORTA,r16
78
79
                      ;***************** PORTB ********************
80
                      ldi r16,$FF
81
                      out DDRB,r16
82
83
                      ldi r16,$00
84
                      out PORTB,r16
85
86
                      ;************ TIMER_COUNTER_1 ***************
87
                      ldi r16,$00                ;TICIE1,OCIE1A,TOIE1
88
                      out TIMSK,r16
89
90
                      ldi r16,1<<WGM12|1<<CS12   ;ICNC1,ICES1,WGM13,WGM12,CS12,CS11,CS10
91
                      out TCCR1B,r16
92
93
                      ldi r16,High($0099)        ;
94
                      out OCR1AH,r16
95
96
                      ldi r16,Low($0099)         ;
97
                      out OCR1AL,r16
98
99
loop:                 in templ,TIFR
100
                      SBRC templ,4
101
                      rcall Count
102
                      rjmp loop
103
104
105
Count:                 out      led_port,PulsCounter
106
                       inc      PulsCounter
107
                 ;      breq    CountExit            ; wenn du Zählen willst falsch,beim nächsten inc wieder 0
108
                 ;      ldi      PulsCounter,0xFF     ; auch
109
110
CountExit:            in      akku,TIFR
111
                       cbr      akku,1<<OCF1A        ; ~ gehört da nicht hin     
112
                       out      TIFR,akku
113
                       ret
114
115
;=================================== Interrupt Handler ===================================
116
EXT_INT0:             reti                       ; IRQ0 Request
117
EXT_INT1:             reti                       ; IRQ1 Request
118
EXT_INT2:             reti                       ; IRQ2 Request
119
EXT_INT3:             reti                       ; IRQ3 Request
120
EXT_INT4:             reti                       ; IRQ4 Request
121
EXT_INT5:             reti                       ; IRQ5 Request
122
EXT_INT6:             reti                       ; IRQ6 Request
123
EXT_INT7:             reti                       ; IRQ7 Request
124
TIMER2_COMP:          reti                       ; Timer2 Compare
125
TIMER2_OVF:           reti                       ; Timer2 Overflow
126
TIMER1_CAPT:          reti                       ; Timer1 Capture
127
TIMER1_COMPA:         reti                       ; Timer1 CompareA
128
TIMER1_COMPB:         reti                       ; Timer CompareB
129
TIMER1_OVF:           reti                       ; Timer1 Overflow
130
TIMER0_COMP:          reti                       ; Timer0 Compare
131
TIMER0_OVF:           reti                       ; Timer0 Overflow
132
SPI_STC:              reti                       ; SPI Serial Transfer Complete
133
USART0_RXC:           reti                       ; USART0, Rx Complete
134
USART0_UDRE:          reti                       ; USART0 Data Register Empty
135
USART0_TXC:           reti                       ; USART0, Tx Complete
136
ADC_COMP:             reti                       ; ADC Conversion Complete
137
EE_READY:             reti                       ; EEPROM Ready
138
ANALOG_COMP:          reti                       ; Analog Comparator
139
TIMER1_COMPC:         reti                       ; Timer1 CompareC
140
TIMER3_CAPT:          reti                       ; Timer3 Capture
141
TIMER3_COMPA:         reti                       ; Timer3 CompareA
142
TIMER3_COMPB:         reti                       ; Timer3 CompareB
143
TIMER3_COMPC:         reti                       ; Timer3 CompareC
144
TIMER3_OVF:           reti                       ; Timer3 Overflow
145
USART1_RXC:           reti                       ; USART1, Rx Complete
146
USART1_UDRE:          reti                       ; USART1, Data Register Empty
147
USART1_TXC:           reti                       ; USART1, Tx Complete
148
TWI:                  reti                       ; 2-wire Serial Interface
149
SPM_READY:            reti                       ; Store Program Memory Read
150
;=================================== End of Interrupts ===================================
151
152
;====================================== End of File ======================================