'GenAkustAlfa

Bascom

Generator hasła.
Program pokazuje prosty sposób wyemitowania niedługiego hasła w Alfabecie Morsa. Hasło należy wpisać do pętli Do i podać 0 do Portd.6, tekst zostanie wyemitowany z głośnika wzmacniacza.



Uwaga! Przycisk dźwiękowy (poniżej) nie działa w przeglądarce Firefox


'GenAkustAlfa.bas

 'Generator hasła w Alfabecie Morsa.

 'Procesor oscyluje z generatorem wenętrznym RC 4MHz.

 'Opis pod programem.

 'Opracował Henryk Wydmuch

 'Program zajmuje 11% pamięci.

 

 $regfile = "m8def.dat"                                     'Info dla kompilatora.

$crystal = 4000000                                          'Informujemy kompilator o frekwencji 4MHz.

 

 Config Lcd = 16 * 2                                        'Konfiguracja Lcd.

 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5

 

 Config Timer0 = Timer , Prescale = 1                       '

 

 

 Dim I As Byte                                              'Zmienna operacyjna dla pętli For.

 Dim Wp As Byte                                             'Zawiera liczbę wysokości tonu.

 Dim Zm As Byte                                             'Zawiera liczbę przepełnień Timer0.

 

  Config Pind.1 = Output                                    'Port wyjściowy impulsów blokujących i dla Led.

  Set Portd.1                                               '

  Config Pind.3 = Output                                    'Port wyjściowy impulsów dźwiękowych.

  Set Portd.3                                               '

  Config Pind.6 = Input                                     'Port startowy.

  Set Portd.6                                               '

 

  Declare Sub Kreska                                        'Podprogram pętli For.

  Declare Sub Kropka

 

  On Timer0 Licz                                            'Włącz podprogram Timer0.

  Enable Interrupts                                         'Odblokuj wszystkie przerwania.

 

 Cls                                                        '

'''''''''''''''''''''''''''''''''''''''

 Do                                                         'Pętla Do.

 Wp = 6                                                     'Tu wpisz wysokość tonu.

 

 If Pind.6 = 0 Then                                         'Jeśli przyciśnięto Start.

 

 Start Timer0                                               '

 Lcd "SP3JCG"                                               '

'---------------------------

'---s-----------------------

 Call Kropka                                                '

 Call Kropka                                                '

 Call Kropka                                                '

 Waitms 180                                                 'Przerwa między literami.

'---p-----------------------

 Call Kropka                                                '

 Call Kreska                                                '

 Call Kreska                                                '

 Call Kropka                                                '

 Waitms 180                                                 '

'---3------------------------

 Call Kropka                                                '

 Call Kropka                                                '

 Call Kropka                                                '

 Call Kreska                                                '

 Call Kreska                                                '

 Waitms 180                                                 '

'---j------------------------

 Call Kropka                                                '

 Call Kreska                                                '

 Call Kreska                                                '

 Call Kreska                                                '

 Waitms 180                                                 '

'---c-----------------------

 Call Kreska                                                '

 Call Kropka                                                '

 Call Kreska                                                '

 Call Kropka                                                '

 Waitms 180                                                 '

'---g-----------------------

 Call Kreska                                                '

 Call Kreska                                                '

 Call Kropka                                                '

 Waitms 180                                                 '

'---------------------------

 Waitms 540                                                 'Przerwa między znakami.

'----------------------------

  Cls                                                       '

                                                                                                   '

 End If                                                     '

Loop                                                        '

End                                                         '

 ''''''''''''''''''''''''''''''''''''

 Licz:                                                      'Podprogram generatora Timer0.

 Incr Zm                                                    'Powiększaj przepełnienia Timer0 (po każdym 256 impulsie)..

 If Zm = Wp Then                                            'Jeśli przepełnień będzie tyle, ile zawiera Wp...

 Toggle Portd.3                                             'Zmień poziom Portu.

 Zm = 0                                                     '

 End If                                                     '

 Return                                                     '

''''''''''''''''''''''''''''''''''''''

Sub Kropka

   For I = 1 To 1                                           'Deklaracja kropki.

   Enable Timer0                                            '

   Toggle Portd.1                                           '

   Waitms 40                                                '

   Toggle Portd.1                                           '

   Disable Timer0                                           '

   Waitms 40                                                '

 Next I                                                     '

 End Sub                                                    'Koniec deklaracji.

'''''''''''''''''''''''''''''''''''''''

Sub Kreska

   For I = 1 To 1                                           'Deklaracja kreski.

   Enable Timer0                                            '

   Toggle Portd.1                                           '

   Waitms 120                                               '

   Toggle Portd.1                                           '

   Disable Timer0                                           '

   Waitms 40                                                '

 Next I                                                     '

 End Sub                                                    'Koniec deklaracji.

'''''''''''''''''''''''''''''''''''''''

 'Objaśnienie:

 'Program emituje komunikat w Alfabecie Morsa.

 'Po naciśnięciu Start (Pind.6=0) pętla ruszy i wyemituje wpisane hasło.

 'Wysokość tonów poszczególnych znaków zależy od wartości w zmiennej WP, którą trzeba wpisać.

 'Aby wpisać hasło, które ma być emitowane należy wpisać odpowiednią ilość kropek i kresek,

 'czyli w pętli Do odpowiednią ilość Call Kropka, Call Kreska.

 'Lcd można pominąć.

 'Koniec.