2022-11-24 05:07:44 +00:00
|
|
|
#![feature(asm_experimental_arch)]
|
2022-11-21 06:38:10 +00:00
|
|
|
#![no_std]
|
|
|
|
#![no_main]
|
|
|
|
|
2022-11-24 05:07:44 +00:00
|
|
|
use core::arch::asm;
|
|
|
|
use core::ptr::{read_volatile, write_volatile};
|
|
|
|
|
|
|
|
const DDRB: *mut u8 = 0x24 as *mut u8;
|
|
|
|
const PORTB: *mut u8 = 0x25 as *mut u8;
|
|
|
|
|
|
|
|
const CPU_SPEED: u32 = 16_000_000;
|
|
|
|
|
2022-11-21 06:38:10 +00:00
|
|
|
#[no_mangle]
|
2022-11-24 05:07:44 +00:00
|
|
|
pub extern "C" fn main() -> ! {
|
|
|
|
unsafe { write_volatile(DDRB, 0b11111111) };
|
|
|
|
|
|
|
|
loop {
|
|
|
|
unsafe { write_volatile(PORTB, 0b00000000) };
|
|
|
|
sleep(1);
|
|
|
|
unsafe { write_volatile(PORTB, 0b00100000) };
|
|
|
|
sleep(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fn sleep(time: u32) {
|
|
|
|
for _ in 0..(CPU_SPEED / 10 * time) {
|
|
|
|
unsafe { asm!("nop") }
|
|
|
|
}
|
|
|
|
}
|
2022-11-21 06:38:10 +00:00
|
|
|
|
2022-11-22 06:04:29 +00:00
|
|
|
#[panic_handler]
|
2022-11-21 06:38:10 +00:00
|
|
|
fn panic(_info: &::core::panic::PanicInfo) -> ! {
|
|
|
|
loop {}
|
|
|
|
}
|