Assembly procedure that represents binary using the LEDs on the mbed.

Dependencies:   mbed

Committer:
jp
Date:
Thu Jan 27 06:24:28 2011 +0000
Revision:
0:13e4e935bed6
Child:
2:a81c9bc37084

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jp 0:13e4e935bed6 1 AREA |.text|, CODE, READONLY
jp 0:13e4e935bed6 2 EXPORT binasm
jp 0:13e4e935bed6 3
jp 0:13e4e935bed6 4 binasm PROC
jp 0:13e4e935bed6 5 PUSH {R4, LR}
jp 0:13e4e935bed6 6
jp 0:13e4e935bed6 7 MOV R1, #0
jp 0:13e4e935bed6 8 MOV R2, #0
jp 0:13e4e935bed6 9 MOV R3, #0
jp 0:13e4e935bed6 10
jp 0:13e4e935bed6 11 ; Load GPIO Port 1 base address in register R1
jp 0:13e4e935bed6 12 LDR R1, =0x2009C020 ; 0x2009C020 = GPIO port 1 base address
jp 0:13e4e935bed6 13 LDR R4, =leds
jp 0:13e4e935bed6 14
jp 0:13e4e935bed6 15 ;CLEAR LEDS
jp 0:13e4e935bed6 16 MOV.W R2, #0xB40000
jp 0:13e4e935bed6 17 STR R2, [R1,#0x1C]
jp 0:13e4e935bed6 18
jp 0:13e4e935bed6 19 ADD R3, R3, #12 ; COUNTER FOR LOOP
jp 0:13e4e935bed6 20 ADD R0, R0, #1 ; INCREMENT PARAMETER BY 1
jp 0:13e4e935bed6 21
jp 0:13e4e935bed6 22 loop
jp 0:13e4e935bed6 23 ; CLEAR THE CARRY FLAG
jp 0:13e4e935bed6 24 ADC R0, R0, #0
jp 0:13e4e935bed6 25
jp 0:13e4e935bed6 26 LDR.W R2, [R4, R3]
jp 0:13e4e935bed6 27 LSRS R0, R0, #1
jp 0:13e4e935bed6 28
jp 0:13e4e935bed6 29 STRCC R2, [R1,#0x1C] ; if==0, clear LED bit
jp 0:13e4e935bed6 30 STRCS R2, [R1,#0x18] ; if==1, set LED bit
jp 0:13e4e935bed6 31
jp 0:13e4e935bed6 32 CMP R3, #0
jp 0:13e4e935bed6 33 SUB R3, R3, #4
jp 0:13e4e935bed6 34 BNE loop
jp 0:13e4e935bed6 35
jp 0:13e4e935bed6 36 POP {R4, PC}
jp 0:13e4e935bed6 37 ENDP
jp 0:13e4e935bed6 38
jp 0:13e4e935bed6 39 AREA |.data|, DATA, READWRITE
jp 0:13e4e935bed6 40 EXPORT leds
jp 0:13e4e935bed6 41
jp 0:13e4e935bed6 42 ;BIT MASK FOR LED1...LED4
jp 0:13e4e935bed6 43
jp 0:13e4e935bed6 44 leds DCD 0x040000
jp 0:13e4e935bed6 45 DCD 0x100000
jp 0:13e4e935bed6 46 DCD 0x200000
jp 0:13e4e935bed6 47 DCD 0x800000
jp 0:13e4e935bed6 48
jp 0:13e4e935bed6 49 ALIGN
jp 0:13e4e935bed6 50 END