Revision:
0:d392bb39c8b8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/serial.cpp	Sat Nov 05 07:01:59 2016 +0000
@@ -0,0 +1,54 @@
+#include "serial.h"
+
+    serial::serial(PinName tx, PinName rx, char *_Registar) : Serial(tx, rx)
+    {
+        Registar = _Registar;
+        DATA = 0;
+        count = 0;
+        for(int i = 0; i < 4; i++)arrayDATA[i] = 0;
+        baud(115200);
+        attach(this, &serial::getdata, Serial::RxIrq);
+    }
+    void serial::getdata()
+    {
+        if(readable())
+        {
+            count = getc();
+            if(count <= 3 && count >= 0)
+            {
+                putc(arrayDATA[count]);
+            }
+            else
+            {
+                //if(readable())    //No
+                *( Registar + (count-4) ) = getc();
+            }
+        }
+    }
+
+    int serial::getdata(int reg, int size)
+    {
+        int data = 0;
+        for(int i = 0; i < size; i++)
+        {
+            data  |= *(Registar + + reg + i) << (i*8);
+        }
+        return data;
+    }
+    void serial::putpc(const int data)
+    {
+        DATA = data;
+        for(int i = 0; i < 4; i++)
+        {
+            arrayDATA[i] = ( DATA >> (i*8) ) & 0x0ff;
+        }
+    }
+    
+    int serial::operator[](int reg)
+    {
+        return getdata(reg, 4);
+    }
+    void serial::operator=(const int data)
+    {
+        putpc(data);
+    }
\ No newline at end of file