document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #include <avr/io.h>
  2. #include <util/delay.h>
  3.  
  4. #define _DOTTIME 100  //Morse code timing is based on a dot duration
  5. #define LED PB2       //Name for led pin
  6. #define BUT PA7       //Name for button pin
  7.  
  8. //function prototypes
  9. void morseSOS(void);  //flashes SOS
  10. void morseDot(void);  //flashes a DOT
  11. void morseDash(void); //flashes a Dash
  12. void morseSpace(void); //waits a space between letters time
  13. void morseNewWord(void); //waits a space between words time
  14. void blink(void);
  15.  
  16. int main (void)
  17. {
  18.     DDRB |= (1<<LED);
  19.     PORTA |= (1<<BUT);
  20.     //DDRB = 0x00; Still can see a dimm light even if not set as an output
  21.  
  22.     while(1){
  23.         if (!(PINA & (1<<BUT))){
  24.             morseSOS();
  25.             morseNewWord();
  26.         }
  27.     }
  28. }
  29.  
  30. void morseSOS(void){
  31.         morseDot();
  32.         morseDot();
  33.         morseDot();
  34.         morseSpace();
  35.         morseDash();
  36.         morseDash();
  37.         morseDash();
  38.         morseSpace();
  39.         morseDot();
  40.         morseDot();
  41.         morseDot();
  42. }
  43.  
  44. void morseDot(void){
  45.     PORTB |= (1<<LED);
  46.     _delay_ms(_DOTTIME);
  47.     PORTB &= ~(1<<LED);
  48.     _delay_ms(_DOTTIME);
  49. }
  50.  
  51. void morseDash(void){
  52.     PORTB |= (1<<LED);
  53.     _delay_ms(3*_DOTTIME);
  54.     PORTB &= ~(1<<LED);
  55.     _delay_ms(_DOTTIME);
  56. }
  57.  
  58. void morseSpace(void){
  59.     _delay_ms(2*_DOTTIME);
  60. }
  61.  
  62. void morseNewWord(void){
  63.     _delay_ms(6*_DOTTIME);
  64. }
  65.  
  66. void blink(void){
  67.     PORTB |= (1<<LED);
  68.     _delay_ms(500);
  69.     PORTB &= ~(1<<LED);
  70.     _delay_ms(500);
  71. }
');