diff options
author | Clifford Wolf <clifford@clifford.at> | 2015-06-26 22:02:22 +0200 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2015-06-26 23:15:30 +0200 |
commit | d4331491a87aa27fb77e5971c887e345886de2be (patch) | |
tree | 3e64f1b034055da5a47d963623d866172b544b56 /firmware/print.c | |
parent | f0b824ad9a0d9c4a010baf62114009c847f6a94d (diff) | |
download | picorv32-d4331491a87aa27fb77e5971c887e345886de2be.tar.gz picorv32-d4331491a87aa27fb77e5971c887e345886de2be.zip |
Test firmware refactoring
Diffstat (limited to 'firmware/print.c')
-rw-r--r-- | firmware/print.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/firmware/print.c b/firmware/print.c new file mode 100644 index 0000000..03e9b09 --- /dev/null +++ b/firmware/print.c @@ -0,0 +1,36 @@ + +#include "firmware.h" + +#define OUTPORT 0x10000000 + +void print_chr(char ch) +{ + *((volatile uint32_t*)OUTPORT) = ch; +} + +void print_str(const char *p) +{ + while (*p != 0) + *((volatile uint32_t*)OUTPORT) = *(p++); +} + +void print_dec(int val) +{ + char buffer[10]; + char *p = buffer; + while (val || p == buffer) { + *(p++) = val % 10; + val = val / 10; + } + while (p != buffer) { + *((volatile uint32_t*)OUTPORT) = '0' + *(--p); + } +} + +void print_hex(unsigned int val) +{ + int i; + for (i = 32-4; i >= 0; i -= 4) + *((volatile uint32_t*)OUTPORT) = "0123456789ABCDEF"[(val >> i) % 16]; +} + |