|
|
|
@ -6,20 +6,39 @@ use riscv_rt::entry;
|
|
|
|
|
|
|
|
|
|
#[panic_handler]
|
|
|
|
|
fn panic_handler(_info: &PanicInfo) -> ! {
|
|
|
|
|
unsafe {
|
|
|
|
|
OUTPUT.write_volatile(0xDEADC0DE);
|
|
|
|
|
}
|
|
|
|
|
loop {}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[used]
|
|
|
|
|
static TEXT: &str = "lmao YEET";
|
|
|
|
|
const OUTPUT: *mut u32 = 0x2000_0000 as *mut u32;
|
|
|
|
|
const BTNS: *mut u8 = 0x2000_0008 as *mut u8;
|
|
|
|
|
|
|
|
|
|
#[entry]
|
|
|
|
|
fn main() -> ! {
|
|
|
|
|
let output = 0x2000_0000 as *mut u32;
|
|
|
|
|
let mut n: u32 = 6814;
|
|
|
|
|
let mut value: u32 = 1;
|
|
|
|
|
let mut btnA_prev = false;
|
|
|
|
|
let mut btnB_prev = false;
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
if value == 0 {
|
|
|
|
|
panic!();
|
|
|
|
|
}
|
|
|
|
|
unsafe {
|
|
|
|
|
output.write_volatile(n);
|
|
|
|
|
OUTPUT.write_volatile(value);
|
|
|
|
|
}
|
|
|
|
|
n += 1;
|
|
|
|
|
btnA_prev = btnA;
|
|
|
|
|
btnB_prev = btnB;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|