Sends "HELLO WORLD" out in Morse code on LED1

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
K7ESU
Date:
Thu Oct 07 20:59:36 2010 +0000
Commit message:
My first mbed program

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r c1136e029881 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Oct 07 20:59:36 2010 +0000
@@ -0,0 +1,149 @@
+
+
+// My first code for the mbed.
+// Blinks "HELLO WORLD" out in Morse Code on LED1
+// Repeats forever
+//
+
+
+#include "mbed.h"
+
+#define WAIT_time 0.20      // about 5 wpm
+#define D() wait(WAIT_time)
+
+DigitalOut myled1(LED1);
+
+
+void send_dah();
+void send_dit();
+void send_space();
+void send_morse(char);
+void blink_out(char *ptr);
+ 
+ 
+char temp1;
+char rotate_char;
+char loops;
+char morse;
+ 
+ 
+ 
+// Offset 0x2C for ASCII to Morse code character pattern conversion
+// 0xFF means it is not a valid Morse code character
+
+// Characters are packed this way: Bits are rotated right until a "1". After that, "1" is a Dah, "0" is a Dit.
+// So, pad the LSBits with "0"s until the 8 bits represent a valid Morse Code charater.
+char mcode[100]=
+{
+ 0xCE,0xFF,0xAA,0xFF,
+ 0xFC,0xF4,0xE4,0xC4,0x84,0x04,0x0C,0x1C,0x3C,0x7C,     
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0x32,0xFF,
+ 
+ 0xA0,0x18,0x58,0x30,0x40,0x48,0x70,0x08,0x20,0xE8,
+ 0xB0,0x28,0xE0,0x60,0xF0,0x68,0xB1,0x50,0x10,0xC0,
+ 0x90,0x81,0xD0,0x91,0xD8,0x31,
+
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+
+ 0xA0,0x18,0x58,0x30,0x40,0x48,0x70,0x08,0x20,0xE8,
+ 0xB0,0x28,0xE0,0x60,0xF0,0x68,0xB1,0x50,0x10,0xC0,
+ 0x90,0x81,0xD0,0x91,0xD8,0x31,
+};
+
+
+
+int main() {
+
+    myled1 = 0;
+    
+    while(1) {
+        blink_out("HELLO WORLD");
+        send_space();
+
+    }   
+      
+}        
+        
+        
+void send_morse(char morse) {
+        
+    rotate_char = 0x01;            // set up mask bit 
+    loops = 0x00;
+    do {
+        rotate_char <<= 1;
+        loops++;
+    }while ((morse & rotate_char) == 0);
+        
+    rotate_char <<= 1;
+    loops++;
+
+    do {
+        if ((morse & rotate_char) == 0)       // if it is a zero, send a dit
+            send_dit();
+
+        else
+            send_dah();
+        
+        rotate_char <<= 1;
+        loops++;
+    
+    }while(loops < 8);                  // there are 8 bits 
+
+}
+
+
+
+void send_dit() {                      // dit is on one unit, off one unit 
+
+    myled1 = 1;
+    D();
+    myled1 = 0;
+    D();
+   
+}
+
+
+void send_dah() {                      // dah is on 2 units, off 1 unit 
+
+    myled1 = 1;
+    D();
+    D();
+    myled1 = 0;
+    D();
+    
+   
+}
+
+void send_space() {                   // space between words is 7 units 
+
+    D();
+    D();
+    D();
+    D();
+    D();
+    D();
+    D();
+
+}    
+
+
+void blink_out(char *ptr) {
+
+    while (*ptr)
+        {temp1 = *ptr++;
+       
+        if (temp1 == 0x20)
+                {send_space();
+                temp1 = *ptr++;
+                };
+            
+        temp1-= 0x2C;                       
+        morse = mcode[temp1];
+        send_morse(morse);
+        D();                                // 2 unit space
+        D();
+        }
+}
+
+
+
diff -r 000000000000 -r c1136e029881 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Thu Oct 07 20:59:36 2010 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/e2ac27c8e93e