Bascom

Program pokazuje, jak przy pomocy kodu BCD można wybrać 10 czynności, które ma wykonać procesor. Czynności te trzeba wpisać do programu zamiast 'zaświeć D4'

'BCDbity3.bas

'Praca na bitach.

'Tutaj, jeśli nastawiono BCD=od 1 do 10, wykonaj...

'Opracował Henryk Wydmuch.

'Pamięć zajęta w 14%.

'Fusebit ustawiony na 0011, czyli wewnętrzny generator RC 4MHz.

 

$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 Pind.0 = Input                                      'Wejście informacji do Portu.

 Config Pind.1 = Input                                      'Wejście informacji do Portu.

 Config Pind.2 = Input                                      'Wejście informacji do Portu.

 Config Pind.3 = Input                                      'Wejście informacji do Portu.

 Config Pinb.1 = Output                                     'Led

 Set Portd.0                                                'Dołącz rezystor podciągający.

 Set Portd.1                                                'Dołącz rezystor podciągający.

 Set Portd.2                                                'Dołącz rezystor podciągający.

 Set Portd.3                                                'Dołącz rezystor podciągający.

 Set Portb.1

 

 Dim A1 As Byte                                             'Zmienne.

 Dim B1 As Byte                                             '

 Dim C1 As Byte                                             '

 Dim D1 As Byte                                             '

 Dim Ind As Byte                                            'Zmienna do zsumowania zawartości A1, B1, C1, D1.

 

 A Alias Pind.0                                             'Pind.0 będzie się nazywał A.

 B Alias Pind.1                                             'Pind.1 będzie się nazywał B.

 C Alias Pind.2                                             'Pind.2 będzie się nazywał C.

 D Alias Pind.3                                             'Pind.3 będzie się nazywał D.

 

 Declare Sub Reg1                                           'Podprogramy, pętle Do.

 Declare Sub Reg2                                           '

 Declare Sub Reg3                                           '

 Declare Sub Reg4                                           '

 Declare Sub Reg5                                           '

 Declare Sub Reg6                                           '

 Declare Sub Reg7                                           '

 Declare Sub Reg8                                           '

 Declare Sub Reg9                                           '

 Declare Sub Reg10                                          '

 

 Cls                                                        'Czyść.

 

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

 Do                                                         'Pętla sprawdzająca na którym Porcie jest 0.

 

    If A = 0 Then                                           'Gdy na Pind.0...

   A1 = 1                                                   'Wtedy zmienna A1 będzie załadowana 1.

End If                                                      '

 

   If B = 0 Then                                            'Gdy na Pind.1...

   B1 = 2                                                   'Wtedy zmienna A1 będzie załadowana 2.

End If                                                      '

 

   If C = 0 Then                                            'Gdy na Pind.2...

   C1 = 4                                                   'Wtedy zmienna A1 będzie załadowana 4.

End If                                                      '

 

   If D = 0 Then                                            'Gdy na Pind.3...

   D1 = 8                                                   'Wtedy zmienna A1 będzie załadowana 8.

End If                                                      '

 

  Ind = Ind + A1                                            'To co jest w zmiennych A1, B1, C1, D1 załaduj do Ind.

   Ind = Ind + B1                                           '

    Ind = Ind + C1                                          '

     Ind = Ind + D1                                         '

   Home                                                     'Pokazuj w jednym miejscu.

   Lcd Ind                                                  'Pokaż sumę A1, B1, C1, D1.

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

 

   If Ind = 1 Then                                          'Jeśli w zmiennej znalazła się liczba 1...

    Call Reg1                                               'to wywołaj podprogram Reg1.

  Else                                                      'Albo...

   If Ind = 2 Then                                          '

    Call Reg2                                               '

  Else                                                      '

   If Ind = 3 Then                                          '

    Call Reg3                                               '

  Else                                                      '

    If Ind = 4 Then                                         '

    Call Reg4                                               '

  Else                                                      '

    If Ind = 5 Then                                         '

    Call Reg5                                               '

  Else                                                      '

    If Ind = 6 Then                                         '

    Call Reg6                                               '

  Else                                                      '

   If Ind = 7 Then                                          '

    Call Reg7                                               '

  Else                                                      '

    If Ind = 8 Then                                         '

    Call Reg8                                               '

  Else                                                      '

    If Ind = 9 Then                                         '

    Call Reg9                                               '

  Else                                                      '

    If Ind = 10 Then                                        '

    Call Reg10                                              '

 

   End If                                                   '

   End If                                                   '

   End If                                                   '

   End If                                                   '

   End If                                                   '

   End If                                                   '

   End If                                                   '

   End If                                                   '

   End If                                                   '

   End If                                                   '

 

 Loop                                                       '                                                     '

 End                                                        '                                                     '

'---jeśli BCD, to wykonaj to co poniżej------------

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

 Sub Reg8                                                   'Podprogram.

  Do                                                        'Pętla potprogramu.

   If Ind = 8 Then                                          'Jeśli zmienna Ind zawiera 8...

    Reset Portb.1                                           '

    End If                                                  '

  Loop                                                      '

  End                                                       '

 End Sub                                                    'Koniec procedury.

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

 Sub Reg9                                                   'Podprogram.

  Do                                                        'Pętla potprogramu.

   If Ind = 9 Then                                          'Jeśli zmienna Ind zawiera 9...

    Reset Portb.1                                           '

    End If                                                  '

  Loop                                                      '

  End                                                       '

 End Sub                                                    'Koniec procedury.

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

  Sub Reg10                                                 'Podprogram.

  Do                                                        'Pętla potprogramu.

   If Ind = 10 Then                                         'Jeśli zmienna Ind zawiera 10...

    Reset Portb.1                                           '

    End If                                                  '

  Loop                                                      '

  End                                                       '

 End Sub                                                    'Koniec procedury.

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

 Sub Reg7                                                   'Podprogram.

  Do                                                        'Pętla potprogramu.

   If Ind = 7 Then                                          'Jeśli zmienna Ind zawiera7...

    Reset Portb.1                                           '

    End If                                                  '

  Loop                                                      '

  End                                                       '

 End Sub                                                    'Koniec procedury.

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

 Sub Reg6                                                   'Podprogram.

  Do                                                        'Pętla potprogramu.

   If Ind = 6 Then                                          'Jeśli zmienna Ind zawiera 6...

    Reset Portb.1                                           '

    End If                                                  '

  Loop                                                      '

  End                                                       '

 End Sub                                                    'Koniec procedury.

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

  Sub Reg5                                                  'Podprogram.

  Do                                                        'Pętla potprogramu.

   If Ind = 5 Then                                          'Jeśli zmienna Ind zawiera 5...

    Reset Portb.1                                           '

    End If                                                  '

  Loop                                                      '

  End                                                       '

 End Sub                                                    'Koniec procedury.

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

  Sub Reg4                                                  'Podprogram.

  Do                                                        'Pętla potprogramu.

   If Ind = 4 Then                                          'Jeśli zmienna Ind zawiera 4...

    Reset Portb.1                                           '

    End If                                                  '

  Loop                                                      '

  End                                                       '

 End Sub                                                    'Koniec procedury.

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

  Sub Reg3                                                  'Podprogram.

  Do                                                        'Pętla potprogramu.

   If Ind = 3 Then                                          'Jeśli zmienna Ind zawiera 3...

    Reset Portb.1                                           '

    End If                                                  '

  Loop                                                      '

  End                                                       '

 End Sub                                                    'Koniec procedury.

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

 Sub Reg2                                                   'Podprogram.

  Do                                                        'Pętla potprogramu.

   If Ind = 2 Then                                          'Jeśli zmienna Ind zawiera 2...

    Reset Portb.1                                           '

    End If                                                  '

  Loop                                                      '

  End                                                       '

 End Sub                                                    'Koniec procedury.

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

 Sub Reg1                                                   'Podprogram.

  Do                                                        'Pętla potprogramu.

   If Ind = 1 Then                                          'Jeśli zmienna Ind zawiera 1...

    Reset Portb.1                                           '

    End If                                                  '

  Loop                                                      '

  End                                                       '

 End Sub                                                    'Koniec procedury.

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

'Objaśnienie :

  'Do Portów d.0, d.1, d.2, d.3 doprowadzamy 0, jako informację. Pętla Do sprawdza, gdzie jest zero

  'i jeśli jest w A, to wpisuje do zmiennej A1 wartość 1 itd.

  'Na końcu, po jednym obrocie pętli, do zmiennej Ind załaduje zawartości A1, B1, C1, D1.

  'Po zsumowaniu tych zawartości nastąpi wyjście z pętli, aby nie kopiować czynności. Suma pojawi się na Lcd.

  'Otrzymaliśmy wynik wpisu kodu BCD do portów d.0 - d.3, znajduje się on w zmiennej Ind.

  'Jeśli w Ind jest BCD 9, to wywołany będzie podprogram Reg9. Jest to pętla Do, czyli program już tu zostanie.

  'Do tych dziesięciu pętli RegX wpiszemy zadania, jakie ma wykonać procesor po wpisaniu kodu BCD.

  'Po każdym wpisaniu kodu BCD musi być Reset.

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

'Koniec