/******************************************************************* * FileName: Morse Code Printf Solution.c * Processor: PIC18F4520 * Compiler: MPLAB C18 v.3.06 * * This file processes hardcoded string and transmits them using Morse Code * * * Creation and Revisions: * Author Date Comments * (your name here) 9/22/09 ********************************************************************/ /** Header Files ***************************************************/ #include #include /** Configuration Bits *********************************************/ #pragma config OSC = EC // EC = External 4MHz Crystal for PICDEM board only #pragma config WDT = OFF #pragma config LVP = OFF #pragma config BOREN = OFF /** Define Constants Here ******************************************/ #define MSG1_LENGTH 7 #define MSG2_LENGTH 15 /** Local Function Prototypes **************************************/ void sendMorseCode(char ary[], int numChars); void transmitChar(char charToTransmit); void dot(void); void dash(void); void spaceBetweenMarksWithinLetter(void); void spaceBetweenLetters(void); void spaceBetweenWords(void); void spaceAfterMessage(void); /** Global Variables ***********************************************/ /******************************************************************* * Function: void main(void) ********************************************************************/ #pragma code void main (void) { char msg1[] = "sos sos"; char msg2[] = "noon is so soon"; sendMorseCode(msg1,MSG1_LENGTH); sendMorseCode(msg2,MSG2_LENGTH); while (1) { // This area loops forever } } /******************************************************************* * Additional Helper Functions ********************************************************************/ void sendMorseCode(char ary[], int numCharsInArray) { int i; for (i=0 ; i < numCharsInArray ; i++) { transmitChar(ary[i]); if ( (i+1) < numCharsInArray && ary[i+1] != ' ' && ary[i] != ' ') spaceBetweenLetters(); } spaceAfterMessage(); } void transmitChar(char charToTransmit) { switch( charToTransmit ) { case ' ': spaceBetweenWords(); break; case 's': dot(); spaceBetweenMarksWithinLetter(); dot(); spaceBetweenMarksWithinLetter(); dot(); break; case 'o': dash(); spaceBetweenMarksWithinLetter(); dash(); spaceBetweenMarksWithinLetter(); dash(); break; case 'i': dot(); spaceBetweenMarksWithinLetter(); dot(); break; case 'n': dash(); spaceBetweenMarksWithinLetter(); dot(); break; default: break; } } void dot(void) { printf("*"); } void dash(void) { printf("---"); } void spaceBetweenMarksWithinLetter(void) { printf(" "); } void spaceBetweenLetters(void) { printf(" "); } void spaceBetweenWords(void) { printf(" "); } void spaceAfterMessage(void) { printf("\n"); }