|
|
|
@ -13,32 +13,22 @@ fn panic_handler(_info: &PanicInfo) -> ! {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const OUTPUT: *mut u32 = 0x2000_0000 as *mut u32;
|
|
|
|
|
const BTNS: *mut u8 = 0x2000_0008 as *mut u8;
|
|
|
|
|
// const BTNS: *mut u8 = 0x2000_0008 as *mut u8;
|
|
|
|
|
|
|
|
|
|
const SCREEN: *mut u32 = 0x2000_0080 as *mut u32;
|
|
|
|
|
|
|
|
|
|
#[entry]
|
|
|
|
|
fn main() -> ! {
|
|
|
|
|
let mut value: u32 = 1;
|
|
|
|
|
let mut btnA_prev = false;
|
|
|
|
|
let mut btnB_prev = false;
|
|
|
|
|
let mut offset: isize = 0;
|
|
|
|
|
loop {
|
|
|
|
|
let btns_value;
|
|
|
|
|
unsafe {
|
|
|
|
|
btns_value = BTNS.read_volatile();
|
|
|
|
|
}
|
|
|
|
|
let btnA = (btns_value & 0b00000001) > 0;
|
|
|
|
|
let btnB = (btns_value & 0b00000010) > 0;
|
|
|
|
|
if btnA && !btnA_prev {
|
|
|
|
|
value >>= 1;
|
|
|
|
|
} else if btnB && !btnB_prev {
|
|
|
|
|
value <<= 1;
|
|
|
|
|
SCREEN.offset(offset).write_volatile(value);
|
|
|
|
|
}
|
|
|
|
|
value <<= 1;
|
|
|
|
|
offset += 1;
|
|
|
|
|
if value == 0 {
|
|
|
|
|
panic!();
|
|
|
|
|
}
|
|
|
|
|
unsafe {
|
|
|
|
|
OUTPUT.write_volatile(value);
|
|
|
|
|
}
|
|
|
|
|
btnA_prev = btnA;
|
|
|
|
|
btnB_prev = btnB;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|