Removed an unnecessary sleep from r0ketbeam. Added support for 7 segment
[cerebrum.git] / util.c
blob39bbd1e4c897a5d511aa1fffbeb85ff64ec6c247
1 /*
2 Copyright (C) 2012 jaseg <s@jaseg.de>
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 version 3 as published by the Free Software Foundation.
7 */
9 #include "util.h"
10 #include "uart.h"
12 void uart_puthex_nibble(uint8_t nibble){
13 if(nibble < 0xA)
14 uart_putc('0'+nibble);
15 else
16 uart_putc('A'+nibble-0xA);
19 void uart_puthex(uint8_t data){
20 uart_puthex_nibble(data>4);
21 uart_puthex_nibble(data&0xF);
24 void uart_puthex_16(uint16_t data){
25 uart_puthex(data>>8);
26 uart_puthex(data&0xFF);
29 void uart_puthex_flip_16(uint16_t data){
30 uart_puthex(data&0xFF);
31 uart_puthex(data>>8);
34 void uart_puthex_32(uint32_t data){
35 uint16_t high = data>>16;
36 uart_puthex_16(high);
37 uint16_t low = data&0xFFFF;
38 uart_puthex_16(low);
41 void uart_puthex_flip_32(uint32_t data){
42 uint16_t low = data&0xFFFF;
43 uart_puthex_flip_16(low);
44 uint16_t high = data>>16;
45 uart_puthex_flip_16(high);
48 void uart_putdec(uint8_t data){
49 if(data >= 100){
50 if(data >= 200){
51 uart_putc('2');
52 data -= 200;
53 }else{
54 uart_putc('1');
55 data -= 100;
58 uint8_t d2 = data/10;
59 data %= 10;
60 uart_putc('0'+d2);
61 uart_putc('0'+data);