/*
 *Aufgabe 5.2
 *
 *  Created on: 15.01.2021
 *      Author: Julia Kisela
 */
.text /* Specify that code goes in text segment */

.equ IOPIN0, 0xE0028000 // Port 0 Pin value register address
.equ IODIR1, 0xE0028018 // Port 1 Direction register address
.equ IOSET1, 0xE0028014 // Port 1 Output set register address
.equ IOCLR1, 0xE002801C // Port 1 Output clear register

.code 32 /* Select ARM instruction set */

.global _startup /* Specify global symbol */
_startup:

//Aufgabe 5_1
	ldr sp, =0x40001000

	ldr r1, =IODIR1
	ldr r0, =0x00ff0000
	str r0, [r1]
	ldr r2, =IOSET1
	ldr r3, =IOCLR1

start:
	ldr r0, =0x10000

while:
	str r0, [r2]
	bl delay
	str r0, [r3]
	mov r0, r0, lsl #1
	cmp r0, #0x01, 8
	bne while
	b start


stop:
nop
bal stop

delay:
	stmfd sp!, {r7, lr} /* Speichern des verwendeten Registers und des lr auf Stack */
	ldr r7,=5000000
wait:
	subs r7,r7,#1
	bne wait
	ldmfd sp!, {r7, pc} /* Lesen des verwendetes Registers und des pc vom Stack */

.end

