.syntax unified
.global my_asm

my_asm:
//RCC

        ldr r1,=0x40023800
		ldr r2,=0x8001
		str	r2,[r1,#0x1c]

        ldr r1,=0x40020000
        ldr r2,=0xA8000400
        str r2,[r1,#0x00]
        cmp r0,#0
        BEQ Aus
        mov.w r2, #0x000020
        str r2,[r1,#0x14]
        bx lr
Aus:
        mov.w r2, #0x000000
        str r2,[r1,#0x14]
        bx lr

//
//ARMAssemblylanguagefunctiontosetLED1bittoavaluepassedfromC
//LED1getsvalue(passedfromCcompilerinR0)
//LED1isonGPIOport1bit18
//SeeChapter9intheLPC1768UserManual
//foralloftheGPIOregisterinfoandaddresses
//Pinnames.hhasthembedmodulespinportandbitconnections
//
//LoadGPIOPort1baseaddressinregisterR1
//LDRR1,=0x2009C020
//0x2009C020=GPIOport1baseaddress
//MovebitmaskinregisterR2forbit18only
//MOV.WR2,#0x040000//0x040000=1<<18all"0"switha"1"inbit18
//valuepassedfromCcompilercodeisinR0-comparetoa"0"
//CMPR0,#0//value==0?
//(If-Then-Else)onnexttwoinstructionsusingequalcondfromthezeroflag
//ITEEQ
//STOREifEQ-clearled1portbitusingGPIOFIOCLRregisterandmask
//STREQR2,[R1,#0x1C]//if==0,clearLED1bit
//STOREifNE-setled1portbitusingGPIOFIOSETregisterandmask
//STRNER2,[R1,#0x18]//if==1,setLED1bit
//ReturntoCusinglinkregister(BranchindirectusingLR-areturn)
//BXLR
//END
