-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.s
175 lines (125 loc) · 2.48 KB
/
main.s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
AREA main_s,code
EXPORT main
EXPORT TIMER0_IRQHandler
EXPORT TIMER1_IRQHandler
INCLUDE LPC1778_REG_ASM.s
LED_DELAY equ (0x100000)
;LED_DELAY equ (0x2)
PRESCALE_VALUE equ (0x1D4C0)
main
LDR r0, =LPC_TIM0_PR
LDR r1, =PRESCALE_VALUE
STR r1, [r0]
LDR r0, =LPC_TIM1_PR
LDR r1, =PRESCALE_VALUE
STR r1, [r0]
LDR r0, =LPC_TIM0_MR0
MOV r1, #0xA
STR r1, [r0]
LDR r0, =LPC_TIM0_MR1
MOV r1, #0x1
STR r1, [r0]
LDR r0, =LPC_TIM0_TCR
MOV r1, #0x1
STR r1, [r0]
LDR r0, =LPC_TIM1_TCR
MOV r1, #0x1
STR r1, [r0]
LDR r0, =LPC_TIM0_MCR
MOV r1, #0x2
STR r1, [r0]
LDR r0, =LPC_TIM1_MCR
MOV r1, #0x2
STR r1, [r0]
LDR r0, =LPC_ISER0
MOV r1, #0x1
STR r1, {r0]
LDR r0, =LPC_ISER1
MOV r1, #0x2
STR r1, {r0]
LDR r0, =LPC_GPIO0_DIR
MOV r1, #0x00FF00
STR r1, [r0]
MOV r7, #0x0 ;zehner wert
MOV r8, #0x0 ;einser wert
pollme
LDR r3, =LPC_GPIO0_PIN
LDR r4, [r3]
AND r4, r4, #0xFF0000
CMP r4, #0xFE0000 ;Starttaste
BEQ Stoppuhrstart
CMP r4, #0xFD0000
;BEQ Stoppuhrstop ;Stoptaste
CMP r4, #0xFC0000
;BEQ Stoppuhrreset ;Resettaste
BNE pollme
TIMER0_IRQHandler
ADD r8, r8, #0x1
MOV r0, r8
MOV r1, #0x1
PUSH{LR}
BL zahlAusgeben
POP{LR}
BX LR
TIMER1_IRQHandler
LDR r3, =LPC_GPIO0_SET
AND r3, r3, #0x7F
Stoppuhrstart
MOV r0, #0x0
MOV r1, #0x0
loop
BL zahlAusgeben
CMP r0, #0x9
BEQ neueZehn
ADD r0, r0, #0x1
B loop
neueZehn
ADD r7, r7, #0x1
MOV r0, r7
MOV r1, #0x1
BL zahlAusgeben
B Stoppuhrstart
zahlAusgeben
PUSH {LR}
LDR r2, =werte
LDR r3, [r2, r0, LSL #2]
CMP r1, #0x0
BEQ linksAusgeben
CMP r1, #0x1
BEQ rechtsAusgeben
zahlSetzen
LDR r4, =LPC_GPIO0_SET
LSL r3, r3, #8
MOV r5, r3
STR r5, [r4]
PUSH{r0}
LDR r0, =LED_DELAY
BL warteschleife
LDR r4, =LPC_GPIO0_CLR
MOV r5, r3
STR r5, [r4]
LDR r0, =LED_DELAY
BL warteschleife
POP {r0}
POP {LR}
BX LR
linksAusgeben
LDR r6, =0x7F
AND r3, r3, r6
B zahlSetzen
rechtsAusgeben
LDR r6, =0x80
ORR r3, r3, r6
B zahlSetzen
warte
LDR r1, =0x1770
;LDR r1, =0x1
MUL r0, r0, r1
warteschleife
SUB r0, r0, #0x1
CMP r0, #0x0
BNE warteschleife
BX LR
werte DCD 63, 6, 91, 79, 102, 109, 125, 7, 127, 103
stop
end