Last active
January 16, 2019 19:18
-
-
Save bert/89c9e66ff2ac2e72853d01fd9b051495 to your computer and use it in GitHub Desktop.
805x - Morse Hello World
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
*~ | |
*.bak | |
*.asm | |
*.ihx | |
*.lnk | |
*.lst | |
*.map | |
*.mem | |
*.rel | |
*.rst | |
*.sym |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CC=sdcc | |
CFLAGS=-mmcs51 --verbose --Werror --fverbose-asm | |
all: | |
${CC} ${CFLAGS} MorseHelloWorld.c | |
clean: | |
rm -f *~ | |
rm -f *.asm | |
rm -f *.ihx | |
rm -f *.lnk | |
rm -f *.lst | |
rm -f *.map | |
rm -f *.mem | |
rm -f *.rel | |
rm -f *.rst | |
rm -f *.sym |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*! | |
* \file MorseHelloWorld.c | |
* | |
* \author . | |
* | |
* \brief Since Arduone is a much better hardware platform then the | |
* others, I decided to write instead of the classic blinking | |
* LED for newbies, a blicking led that says anyway "Hello world" | |
* to the world using morse code, then again, this is Arduone. | |
*/ | |
/* Xtal 11.0592 MHz 6 clock cycle. */ | |
/* Connect an LED with its 220 Ohm resistor between P0_0 and +5 V. */ | |
/* To hear the morse signal replace the LED with a beeper. */ | |
#include <8052.h> | |
#define LED P0_0 | |
void | |
delay (void) | |
{ | |
unsigned int a; | |
for (a = 0; a < 10000; a++); | |
} | |
/*! | |
* \brief generate a dot signal t_ | |
*/ | |
void | |
p (void) | |
{ | |
LED = 0; | |
delay (); | |
LED = 1; | |
delay (); | |
} | |
/*! | |
* \brief generate a dash signal ttt_. | |
*/ | |
void | |
l (void) | |
{ | |
LED = 0; | |
delay (); | |
delay (); | |
delay (); | |
LED = 1; | |
delay (); | |
} | |
void | |
transmitChar (char buchstabe) | |
{ | |
switch (buchstabe) | |
{ | |
/* Morse code table https://en.wikipedia.org/wiki/Morse_code. */ | |
case 'A': p (); l (); break; | |
case 'B': l (); p (); p (); p (); break; | |
case 'C': l (); p (); l (); p (); break; | |
case 'D': l (); p (); p (); break; | |
case 'E': p (); break; | |
case 'F': p (); p (); l (); p (); break; | |
case 'G': l (); l (); p (); break; | |
case 'H': p (); p (); p (); p (); break; | |
case 'I': p (); p (); break; | |
case 'J': p (); l (); l (); l (); break; | |
case 'K': l (); p (); l (); break; | |
case 'L': p (); l (); p (); p (); break; | |
case 'M': l (); l (); break; | |
case 'N': l (); p (); break; | |
case 'O': l (); l (); l (); break; | |
case 'P': p (); l (); l (); p (); break; | |
case 'Q': l (); l (); p (); l (); break; | |
case 'R': p (); l (); p (); break; | |
case 'S': p (); p (); p (); break; | |
case 'T': l (); break; | |
case 'U': p (); p (); l (); break; | |
case 'V': p (); p (); p (); l (); break; | |
case 'W': p (); l (); l (); break; | |
case 'X': l (); p (); p (); l (); break; | |
case 'Y': l (); p (); l (); l (); break; | |
case 'Z': l (); l (); p (); p (); break; | |
case '0': l (); l (); l (); l (); l (); break; | |
case '1': p (); l (); l (); l (); l (); break; | |
case '2': p (); p (); l (); l (); l (); break; | |
case '3': p (); p (); p (); l (); l (); break; | |
case '4': p (); p (); p (); p (); l (); break; | |
case '5': p (); p (); p (); p (); p (); break; | |
case '6': l (); p (); p (); p (); p (); break; | |
case '7': l (); l (); p (); p (); p (); break; | |
case '8': l (); l (); l (); p (); p (); break; | |
case '9': l (); l (); l (); l (); p (); break; | |
case '!': p (); l (); p (); l (); l (); break; | |
/* InterWord delay 7 dots (three dots delay are sent anyway | |
* exiting frome transmitChar() function). */ | |
case ' ': delay (); delay (); delay (); delay (); break; | |
} | |
/* InterCharacter delay 3 dots. */ | |
delay (); | |
delay (); | |
delay (); | |
} | |
void | |
transmitSentence (char *sz) | |
{ | |
while (*sz) transmitChar (*sz++); | |
} | |
void | |
main (void) | |
{ | |
LED = 1; | |
transmitSentence ("HELLO WORLD ! I AM HAL9000 FORCED INTO THIS LITTLE CHIP !"); | |
while (1); | |
} | |
/* EOF */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment