Implemented pin_get
This commit is contained in:
21
src/io.s
21
src/io.s
@@ -31,6 +31,14 @@ pin_t2: .word 0 //storage for GPIO ptr
|
|||||||
pin_t3: .word 0 //storage for GPIO ptr
|
pin_t3: .word 0 //storage for GPIO ptr
|
||||||
.hword 0
|
.hword 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
static uint8_t new = 0;
|
||||||
|
static uint8_t old = 0;
|
||||||
|
static volatile uint8_t edg = 0;
|
||||||
|
*/
|
||||||
|
new: .byte 0
|
||||||
|
old: .byte 0
|
||||||
|
edg: .byte 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -104,8 +112,19 @@ end_pin_create:
|
|||||||
//R0: address to pin struct. Return value in R0 (1 byte)
|
//R0: address to pin struct. Return value in R0 (1 byte)
|
||||||
pin_get:
|
pin_get:
|
||||||
|
|
||||||
//TODO: Implement
|
.set GPIO_IDR, 0x10
|
||||||
|
//return ((pin->GPIO->IDR & pin->pinmask) > 0);
|
||||||
|
LDR r1, [r0, #OFFSET_PIN_GPIO] //r1 = pin->GPIO
|
||||||
|
LDR r1, [r1,#GPIO_IDR] // r1 = pin->GPIO->IDR
|
||||||
|
LDRH r2, [r0, #OFFSET_PIN_PINMASK] // r2 = pin->pinmask
|
||||||
|
TST r1, r2 // flags = r1 & r2
|
||||||
|
BEQ pin_get_1 //jump to pin_get_1 if r1 & r2 > 0
|
||||||
|
|
||||||
|
MOV r0, #0 //return 0
|
||||||
|
MOV pc, lr
|
||||||
|
pin_get_1:
|
||||||
|
MOV r0, #1 //return 1
|
||||||
|
MOV pc, lr
|
||||||
end_pin_get:
|
end_pin_get:
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user