;Final Project area project, code, readonly ;Red LED P5.4, Blue LED P5.5, OD (Hand) P5.6, OD (Trash) P5.7, Stepper Motor P4.0-3 export __main __main proc ;init ldr r0, =0x40004C21 ;port 4 ldr r1, =0x40004C40 ;port 5 mov r2, #0x0F strb r2, [r0, #0x04] ;set as output pins 0, 1, 2, 3 of port 4 // stepper motor mov r3, #0x00 strb r3, [r0, #0x0A] ;P4.SEL0 = 0 strb r3, [r0, #0x0C] ;P4.SEL1 = 0 mov r2, #0x30 strb r2, [r1, #0x04] ;set as input pins for 6, 7 and output for 4, 5 of port 5 mov r2, #0xC0 strb r2, [r1, #0x06] ;set inputs pins 0, 1 as resistor enabled for port 5 strb r2, [r1, #0x02] ;set inputs pins 0, 1 as pull up mov r3, #0x00 strb r3, [r1, #0x0A] ;P5.SEL0 = 0 strb r3, [r1, #0x0C] ;P5.SEL1 = 0 ;----------------------------------------- mov r12, #0x00 ; 0 - closed, 1 - open (register tracks if trash can lid is closed or open) b readinput endp readinput ;p5.6 turns lid and p5.7 is garbage level (OD = obstacle det.) ldrb r2, [r1, #0x00] ;get input from port 5 input pins 6, 7 mov r8, #110 ;110 cycles - ~90 degrees mov r7, #110 ;110 cycles - ~90 degrees tst r2, #0x40 ;testing if OD of p5.6 is on or off bne ccwcycle beq cwcycle ccwcycle ;closing tst r12, #0x01 ;r12 initally says lid is closed beq trashdet mov r12, #0x00 ;it would then be closed after execution ccwcycle ccwloop mov r6, #0x08 strb r6, [r0, #0x02] ;send outpins push {lr} bl delay pop {lr} mov r6, #0x04 strb r6, [r0, #0x02] push {lr} bl delay pop {lr} mov r6, #0x02 strb r6, [r0, #0x02] push {lr} bl delay pop {lr} mov r6, #0x01 strb r6, [r0, #0x02] push {lr} bl delay pop {lr} subs r7, #1 cmp r7, #0 bne ccwloop b trashdet cwcycle ;opening tst r12, #0x01 ;r12 initally says lid is closed bne trashdet mov r12, #0x01 ;it would then be open after execution cwcycle cwloop mov r6, #0x01 strb r6, [r0, #0x02] push {lr} bl delay pop {lr} mov r6, #0x02 strb r6, [r0, #0x02] push {lr} bl delay pop {lr} mov r6, #0x04 strb r6, [r0, #0x02] push {lr} bl delay pop {lr} mov r6, #0x08 strb r6, [r0, #0x02] ;send outpins push {lr} bl delay pop {lr} subs r8, #1 cmp r8, #0 bne cwloop bl delay2 b trashdet trashdet ;blue not full, red full tst r2, #0x80 ;this detects something and then for p5.1 this will turn on one of with the leds beq redled ;this is when z is 1 and the register has a 0 bne blueled ;this is when z is 0 and the register has a 1 blueled mov r10, #0x20 ;p5 pin 5 strb r10, [r1, #0x02] b readinput redled mov r10, #0x10 ;p5 pin 4 strb r10, [r1, #0x02] b readinput delay function mov r4, #50 outer mov r5, #255 inner subs r5, #1 bne inner subs r4, #1 bne outer bx lr endp delay2 function mov r4, #1000 outer2 mov r5, #2550 inner2 subs r5, #1 bne inner2 subs r4, #1 bne outer2 bx lr endp end