4180 lab 1

Dependencies:   mbed MCP23S17 PinDetect USBDevice

assembly_ec.s

Committer:
emilywilson
Date:
2020-01-22
Revision:
12:cc5bda248946
Parent:
7:b7720a8623b5

File content as of revision 12:cc5bda248946:

//    AREA asm_func, CODE, READONLY
//; Export my_asm function location so that C compiler can find it and link
//    EXPORT assembly_ec
//assembly_ec
//;
//; ARM Assembly language function to set LED1 bit to a value passed from C   
//; Pushbutton is on GPIO port 2.4 (connected to p22)
//; Led is on GPIO port 2.0 (connected to p26)
//; See Chapter 9 in the LPC1768 User Manual
//; for all of the GPIO register info and addresses
//; Pinnames.h has the mbed modules pin port and bit connections
//;
//
//; Load GPIO Port 2 base address in register R1
//    LDR     R1, =0x2009C040 ; 0x2009C040 = GPIO port 2 base address
//; Load value from pushbutton into register R0
//    LDR     R0, R1
//; Move bit mask in register R2 for bit 4 only
//    MOV.W   R2, #0x000010   ; 0x000010 = 1<<4 all "0"s with a "1" in bit 4
//; See if pushbutton is pressed
//    CMP     R0, #0
//; (If-Then-Else) on next two instructions using equal cond from the zero flag
//    ITE EQ
//; STORE if EQ - clear led 1 port bit using GPIO FIOCLR register and mask
//    STREQ   R2, [R1,#0x58]  ; if==0, set LED1 bit
//; STORE if NE - set led 1 port bit using GPIO FIOSET register and mask
//    STRNE   R2, [R1,#0x5C]  ; if==1, clear LED1 bit
//; Return to C using link register (Branch indirect using LR - a return)
//    BX      LR
//    END