my_asm:
//
//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
