led7seg.inc
changeset 25 33496b1a964f
parent 23 a6afc0eb347f
child 26 db2ec641c955
--- a/led7seg.inc	Sat May 08 20:58:32 2010 +0300
+++ b/led7seg.inc	Sat May 08 20:59:22 2010 +0300
@@ -87,7 +87,54 @@
 
     ; Done
         ret
- 
+
+;; Display an 8-bit hexadecimal value on the display
+;;  Input: r16
+LED7_ShowHex:
+        ; base16
+        ldi         r17, 16 
+
+        ; 1's
+        call        div8u
+        
+        ; r16 = result, r15 = remainder
+        mov         r17, r15 
+
+    ; Continue
+        rjmp        LED7_Show
+
+;; Display an 8-bit decimal value on the display
+;;  Input: r16
+LED7_ShowDec:
+        ; base10
+        ldi         r17, 10
+
+        ; 1's
+        call        div8u
+        mov         r8, r15
+
+        ; 10's
+        call        div8u
+        mov         r9, r16         ; 100's
+        
+        ; 1's from r8
+        rcall       LED7_LoadChar
+        mov         r17, r8
+
+        ; 10's from r15
+        mov         r8, r15
+        rcall       LED7_LoadChar
+        mov         r16, r8
+           
+        ; Set dots for 100's 
+        sbrc        r9, 0
+        ori         r17, 0b10000000 ; +100
+        sbrc        r9, 1
+        ori         r16, 0b10000000 ; +200
+
+    ; Continue
+        rjmp        LED7_ShowRaw
+
 ;; Display a single digit on the display
 ;;  Input: r16, r17
 LED7_Show:
@@ -95,9 +142,9 @@
         rcall       LED7_LoadChar
         mov         r16, r8
 
-        mov         r8, r16
+        mov         r8, r17
         rcall       LED7_LoadChar
-        mov         r16, r8
+        mov         r17, r8
         
     ;; Continue