Lab Checkoff

Dependencies:   SDFileSystem TextLCD mbed-rtos mbed wave_player FATFileSystem

Committer:
doubster
Date:
Wed Nov 13 20:00:28 2013 +0000
Revision:
0:67dbd54e60d4
Lab Checkoff

Who changed what in which revision?

UserRevisionLine numberNew contents of line
doubster 0:67dbd54e60d4 1 AREA dig_out, CODE, READONLY
doubster 0:67dbd54e60d4 2 ;--------------------OVERVIEW------------------------
doubster 0:67dbd54e60d4 3 ; This file contains ARM Assembly language functions to set
doubster 0:67dbd54e60d4 4 ; designated pins to General Purpose Output. It uses
doubster 0:67dbd54e60d4 5 ; the PINSELx Register to Set the Pin Function to GPIO.
doubster 0:67dbd54e60d4 6 ; Then, it uses the FIOxDIR register to set the
doubster 0:67dbd54e60d4 7 ; direction of the pin to output. It also contains functions
doubster 0:67dbd54e60d4 8 ; to write a digital HIGH or LOW to these output pins. It uses
doubster 0:67dbd54e60d4 9 ; the FIOxCLR AND FIOxSET registers to clear/set the
doubster 0:67dbd54e60d4 10 ; port bits respectively. Refer to the Pinnames.h
doubster 0:67dbd54e60d4 11 ; file to see which LPC1768 pins a given mbed module is
doubster 0:67dbd54e60d4 12 ; connected to. Then, refer to Chapters 8 and 9 of the
doubster 0:67dbd54e60d4 13 ; LPC1768 User Manual to acquire information on the GPIO
doubster 0:67dbd54e60d4 14 ; registers and their addresses.
doubster 0:67dbd54e60d4 15 ;
doubster 0:67dbd54e60d4 16 ; Example:
doubster 0:67dbd54e60d4 17 ; LED1 is on GPIO port 1 bit 18 according to Pinnames.h
doubster 0:67dbd54e60d4 18 ; For this bit: -the PINSEL3 register determines its pin function
doubster 0:67dbd54e60d4 19 ; -the FIO1DIR register determines its pin direction
doubster 0:67dbd54e60d4 20 ; According to the LPC1768 User Manual: -PINSEL3 is located at 0x4002C00C
doubster 0:67dbd54e60d4 21 ; -FIO1DIR is located at 0x2009C020
doubster 0:67dbd54e60d4 22 ; Now refer to the dig_out_LED1 function below to see the execution
doubster 0:67dbd54e60d4 23 ;------------------------------------------------------
doubster 0:67dbd54e60d4 24 ;
doubster 0:67dbd54e60d4 25 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 26 EXPORT dig_out_LED1
doubster 0:67dbd54e60d4 27 dig_out_LED1
doubster 0:67dbd54e60d4 28 ;========dig_out_LED1========
doubster 0:67dbd54e60d4 29 ; LED1 LOCATED AT PORT-1 PIN-18
doubster 0:67dbd54e60d4 30 LDR R0, =0x4002C00C ; LOAD ADDRESS OF PINSEL3 REGISTER
doubster 0:67dbd54e60d4 31 MOV.W R1, #0x00040000 ; MOVE BIT MASK (FOR BIT 18) INTO TEMP REGISTER (0x40000 = 0x01 << 18)
doubster 0:67dbd54e60d4 32 ; ; NOTE: THE ABOVE IS A 32-BIT INSTRUCTION BC OF ".W" QUALIFIER
doubster 0:67dbd54e60d4 33 LDR R2, =0x2009C020 ; LOAD ADDRESS OF FIO1DIR REGISTER
doubster 0:67dbd54e60d4 34 MOV R3, #0x30 ; FORM BITMASK FOR PINSEL3 REGISTER (clear appropriate bits)
doubster 0:67dbd54e60d4 35 B dig_out_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 36 ;
doubster 0:67dbd54e60d4 37 ;
doubster 0:67dbd54e60d4 38 ;
doubster 0:67dbd54e60d4 39 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 40 EXPORT LED1_write
doubster 0:67dbd54e60d4 41 LED1_write
doubster 0:67dbd54e60d4 42 ;========LED1_write=========
doubster 0:67dbd54e60d4 43 ; LED1 LOCATED AT PORT-1 PIN-18
doubster 0:67dbd54e60d4 44 LDR R1, =0x2009C020 ; LOAD ADDRESS OF FIO1DIR (PORT 1 BASE REGISTER)
doubster 0:67dbd54e60d4 45 MOV.W R2, #0x040000 ; MOVE BIT MASK (FOR BIT 18) INTO TEMP REGISTER (0x40000 = 0x01 << 18)
doubster 0:67dbd54e60d4 46 B write_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 47 ;
doubster 0:67dbd54e60d4 48 ;
doubster 0:67dbd54e60d4 49 ;
doubster 0:67dbd54e60d4 50 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 51 EXPORT dig_out_LED2
doubster 0:67dbd54e60d4 52 dig_out_LED2
doubster 0:67dbd54e60d4 53 ;========dig_out_LED2========
doubster 0:67dbd54e60d4 54 ; LED2 LOCATED AT PORT-1 PIN-20
doubster 0:67dbd54e60d4 55 LDR R0, =0x4002C00C ; LOAD ADDRESS OF PINSEL3 REGISTER
doubster 0:67dbd54e60d4 56 LDR R1, =0x00100000 ; MOVE BIT MASK (FOR BIT 20) INTO TEMP REGISTER (0x100000 = 0x01 << 20)
doubster 0:67dbd54e60d4 57 LDR R2, =0x2009C020 ; LOAD ADDRESS OF FIO1DIR REGISTER
doubster 0:67dbd54e60d4 58 MOV.W R3, #0x300 ; FORM BITMASK FOR PINSEL3 REGISTER (clear appropriate bits)
doubster 0:67dbd54e60d4 59 ; ; NOTE: THE ABOVE IS A 32-BIT INSTRUCTION BC OF ".W" QUALIFIER
doubster 0:67dbd54e60d4 60 B dig_out_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 61 ;
doubster 0:67dbd54e60d4 62 ;
doubster 0:67dbd54e60d4 63 ;
doubster 0:67dbd54e60d4 64 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 65 EXPORT LED2_write
doubster 0:67dbd54e60d4 66 LED2_write
doubster 0:67dbd54e60d4 67 ;========LED2_write=========
doubster 0:67dbd54e60d4 68 ; LED2 LOCATED AT PORT-1 PIN-20
doubster 0:67dbd54e60d4 69 LDR R1, =0x2009C020 ; LOAD ADDRESS OF FIO1DIR (PORT 1 BASE REGISTER)
doubster 0:67dbd54e60d4 70 LDR R2, =0x0100000 ; MOVE BIT MASK (FOR BIT 20) INTO TEMP REGISTER (0x100000 = 0x01 << 20)
doubster 0:67dbd54e60d4 71 B write_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 72 ;
doubster 0:67dbd54e60d4 73 ;
doubster 0:67dbd54e60d4 74 ;
doubster 0:67dbd54e60d4 75 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 76 EXPORT dig_out_LED3
doubster 0:67dbd54e60d4 77 dig_out_LED3
doubster 0:67dbd54e60d4 78 ;========dig_out_LED3========
doubster 0:67dbd54e60d4 79 ; LED3 LOCATED AT PORT-1 PIN-21
doubster 0:67dbd54e60d4 80 LDR R0, =0x4002C00C ; LOAD ADDRESS OF PINSEL3 REGISTER
doubster 0:67dbd54e60d4 81 LDR R1, =0x00200000 ; MOVE BIT MASK (FOR BIT 21) INTO TEMP REGISTER (0x200000 = 0x01 << 21)
doubster 0:67dbd54e60d4 82 LDR R2, =0x2009C020 ; LOAD ADDRESS OF FIO1DIR REGISTER
doubster 0:67dbd54e60d4 83 MOV.W R3, #0xC00 ; FORM BITMASK FOR PINSEL3 REGISTER (clear appropriate bits)
doubster 0:67dbd54e60d4 84 ; ; NOTE: THE ABOVE IS A 32-BIT INSTRUCTION BC OF ".W" QUALIFIER
doubster 0:67dbd54e60d4 85 B dig_out_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 86 ;
doubster 0:67dbd54e60d4 87 ;
doubster 0:67dbd54e60d4 88 ;
doubster 0:67dbd54e60d4 89 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 90 EXPORT LED3_write
doubster 0:67dbd54e60d4 91 LED3_write
doubster 0:67dbd54e60d4 92 ;========LED3_write=========
doubster 0:67dbd54e60d4 93 ; LED3 LOCATED AT PORT-1 PIN-21
doubster 0:67dbd54e60d4 94 LDR R1, =0x2009C020 ; LOAD ADDRESS OF FIO1DIR (PORT 1 BASE REGISTER)
doubster 0:67dbd54e60d4 95 LDR R2, =0x0200000 ; MOVE BIT MASK (FOR BIT 21) INTO TEMP REGISTER (0x200000 = 0x01 << 21)
doubster 0:67dbd54e60d4 96 B write_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 97 ;
doubster 0:67dbd54e60d4 98 ;
doubster 0:67dbd54e60d4 99 ;
doubster 0:67dbd54e60d4 100 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 101 EXPORT dig_out_LED4
doubster 0:67dbd54e60d4 102 dig_out_LED4
doubster 0:67dbd54e60d4 103 ;========dig_out_LED4========
doubster 0:67dbd54e60d4 104 ; LED4 LOCATED AT PORT-1 PIN-23
doubster 0:67dbd54e60d4 105 LDR R0, =0x4002C00C ; LOAD ADDRESS OF PINSEL3 REGISTER
doubster 0:67dbd54e60d4 106 LDR R1, =0x00800000 ; MOVE BIT MASK (FOR BIT 23) INTO TEMP REGISTER (0x800000 = 0x01 << 23)
doubster 0:67dbd54e60d4 107 LDR R2, =0x2009C020 ; LOAD ADDRESS OF FIO1DIR REGISTER
doubster 0:67dbd54e60d4 108 MOV.W R3, #0xC000 ; FORM BITMASK FOR PINSEL3 REGISTER (clear appropriate bits)
doubster 0:67dbd54e60d4 109 ; ; NOTE: THE ABOVE IS A 32-BIT INSTRUCTION BC OF ".W" QUALIFIER
doubster 0:67dbd54e60d4 110 B dig_out_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 111 ;
doubster 0:67dbd54e60d4 112 ;
doubster 0:67dbd54e60d4 113 ;
doubster 0:67dbd54e60d4 114 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 115 EXPORT LED4_write
doubster 0:67dbd54e60d4 116 LED4_write
doubster 0:67dbd54e60d4 117 ;========LED4_write=========
doubster 0:67dbd54e60d4 118 ; LED4 LOCATED AT PORT-1 PIN-23
doubster 0:67dbd54e60d4 119 LDR R1, =0x2009C020 ; LOAD ADDRESS OF FIO1DIR (PORT 1 BASE REGISTER)
doubster 0:67dbd54e60d4 120 LDR R2, =0x0800000 ; MOVE BIT MASK (FOR BIT 21) INTO TEMP REGISTER (0x800000 = 0x01 << 23)
doubster 0:67dbd54e60d4 121 B write_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 122 ;
doubster 0:67dbd54e60d4 123 ;
doubster 0:67dbd54e60d4 124 ;
doubster 0:67dbd54e60d4 125 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 126 EXPORT dig_out_P11
doubster 0:67dbd54e60d4 127 dig_out_P11
doubster 0:67dbd54e60d4 128 ;========dig_out_P11========
doubster 0:67dbd54e60d4 129 ; P11 LOCATED AT PORT-0 PIN-18
doubster 0:67dbd54e60d4 130 LDR R0, =0x4002C004 ; LOAD ADDRESS OF PINSEL1 REGISTER
doubster 0:67dbd54e60d4 131 MOV.W R1, #0x00040000 ; MOVE BIT MASK (FOR BIT 18) INTO TEMP REGISTER (0x40000 = 0x01 << 18)
doubster 0:67dbd54e60d4 132 ; ; NOTE: THE ABOVE IS A 32-BIT INSTRUCTION BC OF ".W" QUALIFIER
doubster 0:67dbd54e60d4 133 LDR R2, =0x2009C000 ; LOAD ADDRESS OF FIO0DIR0 REGISTER
doubster 0:67dbd54e60d4 134 MOV R3, #0x30 ; FORM BITMASK FOR PINSEL1 REGISTER (clear appropriate bits)
doubster 0:67dbd54e60d4 135 B dig_out_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 136 ;
doubster 0:67dbd54e60d4 137 ;
doubster 0:67dbd54e60d4 138 ;
doubster 0:67dbd54e60d4 139 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 140 EXPORT P11_write
doubster 0:67dbd54e60d4 141 P11_write
doubster 0:67dbd54e60d4 142 ;========P11_write=========
doubster 0:67dbd54e60d4 143 ; P11 LOCATED AT PORT-0 PIN-18
doubster 0:67dbd54e60d4 144 LDR R1, =0x2009C000 ; LOAD ADDRESS OF FIO0DIR0 (PORT 0 BASE REGISTER)
doubster 0:67dbd54e60d4 145 MOV.W R2, #0x040000 ; MOVE BIT MASK (FOR BIT 18) INTO TEMP REGISTER (0x40000 = 0x01 << 18)
doubster 0:67dbd54e60d4 146 B write_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 147 ;
doubster 0:67dbd54e60d4 148 ;
doubster 0:67dbd54e60d4 149 ;
doubster 0:67dbd54e60d4 150 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 151 EXPORT dig_out_P12
doubster 0:67dbd54e60d4 152 dig_out_P12
doubster 0:67dbd54e60d4 153 ;========dig_out_P12========
doubster 0:67dbd54e60d4 154 ; P12 LOCATED AT PORT-0 PIN-17
doubster 0:67dbd54e60d4 155 LDR R0, =0x4002C004 ; LOAD ADDRESS OF PINSEL1 REGISTER
doubster 0:67dbd54e60d4 156 MOV.W R1, #0x20000; MOVE BIT MASK (FOR BIT 17) INTO TEMP REGISTER (0x40000 = 0x01 << 17)
doubster 0:67dbd54e60d4 157 ; ; NOTE: THE ABOVE IS A 32-BIT INSTRUCTION BC OF ".W" QUALIFIER
doubster 0:67dbd54e60d4 158 LDR R2, =0x2009C000 ; LOAD ADDRESS OF FIO0DIR0 REGISTER
doubster 0:67dbd54e60d4 159 MOV.W R3, #0xC ; FORM BITMASK FOR PINSEL1 REGISTER (clear appropriate bits)
doubster 0:67dbd54e60d4 160 B dig_out_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 161 ;
doubster 0:67dbd54e60d4 162 ;
doubster 0:67dbd54e60d4 163 ;
doubster 0:67dbd54e60d4 164 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 165 EXPORT P12_write
doubster 0:67dbd54e60d4 166 P12_write
doubster 0:67dbd54e60d4 167 ;========P12_write=========
doubster 0:67dbd54e60d4 168 ; P12 LOCATED AT PORT-0 PIN-17
doubster 0:67dbd54e60d4 169 LDR R1, =0x2009C000 ; LOAD ADDRESS OF FIO0DIR0 (PORT 0 BASE REGISTER)
doubster 0:67dbd54e60d4 170 MOV.W R2, #0x20000 ; MOVE BIT MASK (FOR BIT 17) INTO TEMP REGISTER (0x800000 = 0x01 << 17)
doubster 0:67dbd54e60d4 171 B write_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 172 ;
doubster 0:67dbd54e60d4 173 ;
doubster 0:67dbd54e60d4 174 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 175 EXPORT dig_out_P13
doubster 0:67dbd54e60d4 176 dig_out_P13
doubster 0:67dbd54e60d4 177 ;========dig_out_P13========
doubster 0:67dbd54e60d4 178 ; P13 LOCATED AT PORT-0 PIN-15
doubster 0:67dbd54e60d4 179 LDR R0, =0x4002C000 ; LOAD ADDRESS OF PINSEL0 REGISTER
doubster 0:67dbd54e60d4 180 MOV.W R1, #0x00008000 ; MOVE BIT MASK (FOR BIT 15) INTO TEMP REGISTER (0x08000 = 0x01 << 15)
doubster 0:67dbd54e60d4 181 ; ; NOTE: THE ABOVE IS A 32-BIT INSTRUCTION BC OF ".W" QUALIFIER
doubster 0:67dbd54e60d4 182 LDR R2, =0x2009C000 ; LOAD ADDRESS OF FIO0DIR0 REGISTER
doubster 0:67dbd54e60d4 183 LDR R3, =0x70000000 ; FORM BITMASK FOR PINSEL0 REGISTER (clear appropriate bits)
doubster 0:67dbd54e60d4 184 B dig_out_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 185 ;
doubster 0:67dbd54e60d4 186 ;
doubster 0:67dbd54e60d4 187 ;
doubster 0:67dbd54e60d4 188 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 189 EXPORT P13_write
doubster 0:67dbd54e60d4 190 P13_write
doubster 0:67dbd54e60d4 191 ;========P13_write=========
doubster 0:67dbd54e60d4 192 ; P13 LOCATED AT PORT-0 PIN-15
doubster 0:67dbd54e60d4 193 LDR R1, =0x2009C000 ; LOAD ADDRESS OF FIO0DIR0 (PORT 0 BASE REGISTER)
doubster 0:67dbd54e60d4 194 MOV.W R2, #0x008000 ; MOVE BIT MASK (FOR BIT 15) INTO TEMP REGISTER (0x08000 = 0x01 << 15)
doubster 0:67dbd54e60d4 195 B write_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 196 ;
doubster 0:67dbd54e60d4 197 ;
doubster 0:67dbd54e60d4 198 ;
doubster 0:67dbd54e60d4 199 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 200 EXPORT dig_out_P14
doubster 0:67dbd54e60d4 201 dig_out_P14
doubster 0:67dbd54e60d4 202 ;========dig_out_P14========
doubster 0:67dbd54e60d4 203 ; P14 LOCATED AT PORT-0 PIN-16
doubster 0:67dbd54e60d4 204 LDR R0, =0x4002C004 ; LOAD ADDRESS OF PINSEL1 REGISTER
doubster 0:67dbd54e60d4 205 MOV.W R1, #0x00010000 ; MOVE BIT MASK (FOR BIT 16) INTO TEMP REGISTER (0x10000 = 0x01 << 16)
doubster 0:67dbd54e60d4 206 ; ; NOTE: THE ABOVE IS A 32-BIT INSTRUCTION BC OF ".W" QUALIFIER
doubster 0:67dbd54e60d4 207 LDR R2, =0x2009C000 ; LOAD ADDRESS OF FIO0DIR0 REGISTER
doubster 0:67dbd54e60d4 208 MOV R3, #0x03 ; FORM BITMASK FOR PINSEL0 REGISTER (clear appropriate bits)
doubster 0:67dbd54e60d4 209 B dig_out_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 210 ;
doubster 0:67dbd54e60d4 211 ;
doubster 0:67dbd54e60d4 212 ;
doubster 0:67dbd54e60d4 213 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 214 EXPORT P14_write
doubster 0:67dbd54e60d4 215 P14_write
doubster 0:67dbd54e60d4 216 ;========P14_write=========
doubster 0:67dbd54e60d4 217 ; P14 LOCATED AT PORT-0 PIN-16
doubster 0:67dbd54e60d4 218 LDR R1, =0x2009C000 ; LOAD ADDRESS OF FIO0DIR0 (PORT 0 BASE REGISTER)
doubster 0:67dbd54e60d4 219 MOV.W R2, #0x010000 ; MOVE BIT MASK (FOR BIT 16) INTO TEMP REGISTER (0x10000 = 0x01 << 16)
doubster 0:67dbd54e60d4 220 B write_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 221 ;
doubster 0:67dbd54e60d4 222 ;
doubster 0:67dbd54e60d4 223 ;
doubster 0:67dbd54e60d4 224 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 225 EXPORT dig_out_P15
doubster 0:67dbd54e60d4 226 dig_out_P15
doubster 0:67dbd54e60d4 227 ;========dig_out_P15========
doubster 0:67dbd54e60d4 228 ; P15 LOCATED AT PORT-0 PIN-23
doubster 0:67dbd54e60d4 229 LDR R0, =0x4002C004 ; LOAD ADDRESS OF PINSEL1 REGISTER
doubster 0:67dbd54e60d4 230 LDR R1, =0x00800000 ; MOVE BIT MASK (FOR BIT 23) INTO TEMP REGISTER (0x800000 = 0x01 << 23)
doubster 0:67dbd54e60d4 231 LDR R2, =0x2009C000 ; LOAD ADDRESS OF FIO0DIR0 REGISTER
doubster 0:67dbd54e60d4 232 MOV.W R3, #0x7000 ; FORM BITMASK FOR PINSEL1 REGISTER (clear appropriate bits)
doubster 0:67dbd54e60d4 233 ; ; NOTE: THE ABOVE IS A 32-BIT INSTRUCTION BC OF ".W" QUALIFIER
doubster 0:67dbd54e60d4 234 B dig_out_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 235 ;
doubster 0:67dbd54e60d4 236 ;
doubster 0:67dbd54e60d4 237 ;
doubster 0:67dbd54e60d4 238 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 239 EXPORT P15_write
doubster 0:67dbd54e60d4 240 P15_write
doubster 0:67dbd54e60d4 241 ;========P15_write=========
doubster 0:67dbd54e60d4 242 ; P15 LOCATED AT PORT-0 PIN-23
doubster 0:67dbd54e60d4 243 LDR R1, =0x2009C000 ; LOAD ADDRESS OF FIO0DIR0 (PORT 0 BASE REGISTER)
doubster 0:67dbd54e60d4 244 MOV.W R2, #0x0800000 ; MOVE BIT MASK (FOR BIT 23) INTO TEMP REGISTER (0x800000 = 0x01 << 23)
doubster 0:67dbd54e60d4 245 B write_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 246 ;
doubster 0:67dbd54e60d4 247 ;
doubster 0:67dbd54e60d4 248 ;
doubster 0:67dbd54e60d4 249 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 250 EXPORT dig_out_P16
doubster 0:67dbd54e60d4 251 dig_out_P16
doubster 0:67dbd54e60d4 252 ;========dig_out_P16========
doubster 0:67dbd54e60d4 253 ; P16 LOCATED AT PORT-0 PIN-24
doubster 0:67dbd54e60d4 254 LDR R0, =0x4002C004 ; LOAD ADDRESS OF PINSEL1 REGISTER
doubster 0:67dbd54e60d4 255 LDR R1, =0x01000000 ; MOVE BIT MASK (FOR BIT 24) INTO TEMP REGISTER (0x1000000 = 0x01 << 24)
doubster 0:67dbd54e60d4 256 LDR R2, =0x2009C000 ; LOAD ADDRESS OF FIO0DIR0 REGISTER
doubster 0:67dbd54e60d4 257 MOV.W R3, #0x30000 ; FORM BITMASK FOR PINSEL1 REGISTER (clear appropriate bits)
doubster 0:67dbd54e60d4 258 ; ; NOTE: THE ABOVE IS A 32-BIT INSTRUCTION BC OF ".W" QUALIFIER
doubster 0:67dbd54e60d4 259 B dig_out_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 260 ;
doubster 0:67dbd54e60d4 261 ;
doubster 0:67dbd54e60d4 262 ;
doubster 0:67dbd54e60d4 263 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 264 EXPORT P16_write
doubster 0:67dbd54e60d4 265 P16_write
doubster 0:67dbd54e60d4 266 ;========P16_write=========
doubster 0:67dbd54e60d4 267 ; P16 LOCATED AT PORT-0 PIN-24
doubster 0:67dbd54e60d4 268 LDR R1, =0x2009C000 ; LOAD ADDRESS OF FIO0DIR0 (PORT 0 BASE REGISTER)
doubster 0:67dbd54e60d4 269 MOV.W R2, #0x1000000 ; MOVE BIT MASK (FOR BIT 23) INTO TEMP REGISTER (0x1000000 = 0x01 << 24)
doubster 0:67dbd54e60d4 270 B write_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 271 ;
doubster 0:67dbd54e60d4 272 ;
doubster 0:67dbd54e60d4 273 ;
doubster 0:67dbd54e60d4 274 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 275 EXPORT dig_out_P17
doubster 0:67dbd54e60d4 276 dig_out_P17
doubster 0:67dbd54e60d4 277 ;========dig_out_P17========
doubster 0:67dbd54e60d4 278 ; P17 LOCATED AT PORT-0 PIN-25
doubster 0:67dbd54e60d4 279 LDR R0, =0x4002C004 ; LOAD ADDRESS OF PINSEL1 REGISTER
doubster 0:67dbd54e60d4 280 LDR R1, =0x2000000 ; MOVE BIT MASK (FOR BIT 25) INTO TEMP REGISTER (0x1000000 = 0x01 << 25)
doubster 0:67dbd54e60d4 281 LDR R2, =0x2009C000 ; LOAD ADDRESS OF FIO0DIR0 REGISTER
doubster 0:67dbd54e60d4 282 MOV.W R3, #0xC0000 ; FORM BITMASK FOR PINSEL1 REGISTER (clear appropriate bits)
doubster 0:67dbd54e60d4 283 B dig_out_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 284 ;
doubster 0:67dbd54e60d4 285 ;
doubster 0:67dbd54e60d4 286 ;
doubster 0:67dbd54e60d4 287 ; EXPORT FUNCTION LOCATION SO THAT C-COMPILER CAN LINK
doubster 0:67dbd54e60d4 288 EXPORT P17_write
doubster 0:67dbd54e60d4 289 P17_write
doubster 0:67dbd54e60d4 290 ;========P17_write=========
doubster 0:67dbd54e60d4 291 ; P17 LOCATED AT PORT-0 PIN-25
doubster 0:67dbd54e60d4 292 LDR R1, =0x2009C000 ; LOAD ADDRESS OF FIO0DIR0 (PORT 0 BASE REGISTER)
doubster 0:67dbd54e60d4 293 MOV.W R2, #0x2000000 ; MOVE BIT MASK (FOR BIT 25) INTO TEMP REGISTER (0x1000000 = 0x01 << 25)
doubster 0:67dbd54e60d4 294 B write_exec ; CALL SUBROUTINE TO EXECUTE YOUR CHANGES
doubster 0:67dbd54e60d4 295 ;
doubster 0:67dbd54e60d4 296 ;
doubster 0:67dbd54e60d4 297 ;
doubster 0:67dbd54e60d4 298 dig_out_exec
doubster 0:67dbd54e60d4 299 ;========dig_out_execution========
doubster 0:67dbd54e60d4 300 ; SET PIN FUNCTION TO GPIO
doubster 0:67dbd54e60d4 301 LDR R4, [R0] ; \
doubster 0:67dbd54e60d4 302 BIC R4, R3 ; - APPLY BITMASK FOR PINSELx REGISTER (clear appropriate bits)
doubster 0:67dbd54e60d4 303 STR R4, [R0] ; STORE BITMASK IN PINSELx REGISTER
doubster 0:67dbd54e60d4 304 ;
doubster 0:67dbd54e60d4 305 ; SET UP GPIO PORT FOR OUTPUT DIRECTION (WITH SPECIFIED BITMASK IN REGISTER R2)
doubster 0:67dbd54e60d4 306 LDR R6, [R2] ; \
doubster 0:67dbd54e60d4 307 ORR R6, R1 ; - ACQUIRE BITMASK FOR FIOxDIR REGISTER (1 = Output)
doubster 0:67dbd54e60d4 308 STR R6, [R2] ; STORE BITMASK IN FIOxDIR REGISTER
doubster 0:67dbd54e60d4 309 ;
doubster 0:67dbd54e60d4 310 ;RETURN TO MAIN
doubster 0:67dbd54e60d4 311 BX LR ; RETURN TO MAIN USING LINKER REGISTER
doubster 0:67dbd54e60d4 312 ;
doubster 0:67dbd54e60d4 313 ;
doubster 0:67dbd54e60d4 314 ;
doubster 0:67dbd54e60d4 315 write_exec
doubster 0:67dbd54e60d4 316 ;========write_execution=========
doubster 0:67dbd54e60d4 317 ; CLEAR/SET BASED ON INPUT VALUE
doubster 0:67dbd54e60d4 318 CMP R0, #0 ; VALUE == 0 ?
doubster 0:67dbd54e60d4 319 ITE EQ ; (IF-THEN-ELSE) ON NEXT TWO INSTRUCTIONS USING "EQ" FLAG
doubster 0:67dbd54e60d4 320 STREQ R2, [R1,#0x1C] ; if==0, CLEAR LED1 BIT
doubster 0:67dbd54e60d4 321 STRNE R2, [R1,#0x18] ; if==1, SET LED1 BIT
doubster 0:67dbd54e60d4 322 ;
doubster 0:67dbd54e60d4 323 ; RETURN TO MAIN
doubster 0:67dbd54e60d4 324 BX LR ; RETURN TO MAIN USING LINKER REGISTER
doubster 0:67dbd54e60d4 325 ;
doubster 0:67dbd54e60d4 326 ;
doubster 0:67dbd54e60d4 327 ;
doubster 0:67dbd54e60d4 328 END
doubster 0:67dbd54e60d4 329