Kansai Electric Power usage meter (Denki-yohou) for GainSpan Wi-Fi http://mbed.org/users/okini3939/notebook/denki-yohou/

Dependencies:   mbed GSwifi (old)

Revision:
1:beff52210994
Parent:
0:d8a2cab7091c
Child:
2:8646918ffff2
--- a/7seg.cpp	Tue Jul 10 05:28:10 2012 +0000
+++ b/7seg.cpp	Wed Sep 05 00:51:19 2012 +0000
@@ -12,14 +12,16 @@
     static int n = 0;
     int i, bit;
     
+    // led off
     for (i = 0; i < 8; i ++) {
         led_k[i] = 1;
     }
-    led_a[n] = 1;
+    led_a[n] = 1; // common off
 
     n ++;
     if (n >= 4) n = 0;
 
+    // led on
     if (ledbuf[n] >= 0) {
         bit = 1;
         for (i = 0; i < 7; i ++) {
@@ -28,26 +30,26 @@
         }
         led_k[7] = ledbuf[n] & 0x80 ? 0 : 1;
     }
-    led_a[n] = 0;
+    led_a[n] = 0; // common on
 }
 
-void writeled (int num, int dot, int place) {
-    if (num >= 1000 && place & 0x08) {
-        ledbuf[0] = num / 1000;
+void writeled (int num, int dot, int mask, int zero) {
+    if (((num >= 1000) || (zero & 0x08)) && (mask & 0x08)) {
+        ledbuf[0] = num / 1000 % 10;
     } else {
         ledbuf[0] = -1;
     }
-    if (num >= 100 && place & 0x04) {
+    if (((num >= 100) || (zero & 0x04)) && (mask & 0x04)) {
         ledbuf[1] = (num / 100) % 10;
     } else {
         ledbuf[1] = -1;
     }
-    if (num >= 10 && place & 0x02) {
+    if (((num >= 10) || (zero & 0x02)) && (mask & 0x02)) {
         ledbuf[2] = (num / 10) % 10;
     } else {
         ledbuf[2] = -1;
     }
-    if (place & 0x01) {
+    if (mask & 0x01) {
         ledbuf[3] = num % 10;
     } else {
         ledbuf[3] = -1;