start implementing time utils
This commit is contained in:
@@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
uint8 inportb(uint16 _port);
|
uint8 inportb(uint16 _port);
|
||||||
void outportb(uint16 _port, uint8 _data);
|
void outportb(uint16 _port, uint8 _data);
|
||||||
|
uint8_t get_rtc(uint8_t reg);
|
||||||
|
void get_fancy_datetime();
|
||||||
|
|
||||||
#define inb inportb
|
#define inb inportb
|
||||||
#define outb outportb
|
#define outb outportb
|
||||||
|
|||||||
+21
@@ -12,3 +12,24 @@ void outportb(uint16 _port, uint8 _data)
|
|||||||
{
|
{
|
||||||
__asm__ __volatile__ ("outb %1, %0" : : "dN" (_port), "a" (_data));
|
__asm__ __volatile__ ("outb %1, %0" : : "dN" (_port), "a" (_data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t get_rtc(uint8_t reg)
|
||||||
|
{
|
||||||
|
uint8_t nmi_disable_bit = 0;
|
||||||
|
outb(0x70, (nmi_disable_bit << 7) | reg);
|
||||||
|
uint8_t result = inb(0x71);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
void get_fancy_datetime()
|
||||||
|
{
|
||||||
|
uint8_t century = get_rtc(0x32);
|
||||||
|
uint8_t year = get_rtc(0x09);
|
||||||
|
uint8_t month = get_rtc(0x08);
|
||||||
|
uint8_t day_of_month = get_rtc(0x07);
|
||||||
|
uint8_t hour = get_rtc(0x04);
|
||||||
|
uint8_t minute = get_rtc(0x02);
|
||||||
|
uint8_t second = get_rtc(0x00);
|
||||||
|
printf("%X-%X-%X%X %X:%X:%X\n", day_of_month, month, century, year, hour, minute, second);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user