test.c 608 B

123456789101112131415161718192021222324252627
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <sys/io.h>
  5. #include <stdint.h>
  6. #include <string.h>
  7. int main(void)
  8. {
  9. unsigned char val;
  10. if (ioperm(0xA45, 1, 1) < 0 || ioperm(0xA46, 1, 1) < 0 || ioperm(0xEB, 1, 1) < 0) {
  11. perror("Failed to request I/O port permission");
  12. return 1;
  13. }
  14. outb(0x00,0xA45);
  15. outb(inb(0xA46) | 0x40, 0xA46);//update VBAT
  16. outb(0x00,0xEB);
  17. outb(0x00,0xEB);
  18. outb(0x00,0xEB);
  19. outb(0x28,0xA45);
  20. val = inb(0xA46);//read VBAT
  21. printf("VBAT value = %dmv\n", val * 2 * 11);
  22. }