#include <16F876.H> #device ICD=FALSE #fuses HS, NOWDT #use delay(clock=20000000) #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) #define GREEN_LED PIN_C1 #define RED_LED PIN_C0 void dash() { output_high(RED_LED); output_low(GREEN_LED); delay_ms(750); output_low(RED_LED); delay_ms(100); } void dot() { output_low(RED_LED); output_high(GREEN_LED); delay_ms(500); output_low(GREEN_LED); delay_ms(100); } void morse(char c) { switch(c) { case ' ': delay_ms(300); break; case 'A': case 'a': dot(); dash(); break; case 'B': case 'b': dash(); dot(); dot(); dot(); break; case 'C': case 'c': dash(); dot(); dash(); dot(); break; case 'D': case 'd': dash(); dot(); dot(); break; case 'E': case 'e': dot(); break; case 'F': case 'f': dot(); dot(); dash(); dot(); break; case 'G': case 'g': dash(); dash(); dot(); break; case 'H': case 'h': dot(); dot(); dot(); dot(); break; case 'I': case 'i': dot(); dot(); break; case 'J': case 'j': dot(); dash(); dash(); dash(); break; case 'K': case 'k': dash(); dot(); dash(); break; case 'L': case 'l': dot(); dash(); dot(); dot(); break; case 'M': case 'm': dash(); dash(); break; case 'N': case 'n': dash(); dot(); break; case 'O': case 'o': dash(); dash(); dash(); break; case 'P': case 'p': dot(); dash(); dash(); dot(); break; case 'Q': case 'q': dash(); dash(); dot(); dash(); break; case 'R': case 'r': dot(); dash(); dot(); break; case 'S': case 's': dot(); dot(); dot(); break; case 'T': case 't': dash(); break; case 'U': case 'u': dot(); dot(); dash(); break; case 'V': case 'v': dot(); dot(); dot(); dash(); break; case 'W': case 'w': dot(); dash(); dash(); break; case 'X': case 'x': dash(); dot(); dot(); dash(); case 'Y': case 'y': dash(); dot(); dash(); dash(); case 'Z': case 'z': dash(); dash(); dot(); dot(); break; case '0': dash(); dash(); dash(); dash(); dash(); break; case '1': dot(); dash(); dash(); dash(); dash(); break; case '2': dot(); dot(); dash(); dash(); dash(); break; case '3': dot(); dot(); dot(); dash(); dash(); break; case '4': dot(); dot(); dot(); dot(); dash(); break; case '5': dot(); dot(); dot(); dot(); dot(); break; case '6': dash(); dot(); dot(); dot(); dot(); break; case '7': dash(); dash(); dot(); dot(); dot(); break; case '8': dash(); dash(); dash(); dot(); dot(); break; case '9': dash(); dash(); dash(); dash(); dot(); break; case '.': dot(); dash(); dot(); dash(); dot(); dash(); break; case ',': dash(); dash(); dot(); dot(); dash(); dash(); break; case '?': dot(); dot(); dash(); dash(); dot(); dot(); break; } delay_ms(300); } void main() { char string[14] = "hello world "; int size = 13; int i = 0; while (1) { morse(string[i++]); i %= size; } }