aldl_test_10.BAS.txt

(4 KB) Pobierz
$regfile = "89c2051.dat"
$crystal = 14745600
'$crystal = 11059200
'$noramclear
$noinit
'-------------------------------------------------------------------------------
'Co do kwarcu to dla takiego s� policzone op�nienia tajmera. Podlaczenie do ECU?
' Z pinu "E" przez rezystor 4k7 i diod� w kierunku do ECM do pinu int0.
'Do sterowania s� 4 klawisze podpi�te do p3.7, p3.5, p3.4, p3.3
'sluza one do wyboru strony danych na wyswietlacz - mialem 1*16 wic=ec dane w hexie
'-------------------------------------------------------------------------------
On Int0 Przerwanie_int0
'Th0 = &HF8 : Tl0 = &HCC
Tmod = &B00000001                                             'tajmer 0 mode 1 - 16 bit
Tcon = &B00000001                                             'int0 na opadajace zbocze
On Timer0 Przerwanie_timer0
'Ie = &B10000011                                               'wlacz przerwania i int0 i timer0
'-------------------------------------------------------------------------------
Config Lcd = 16 * 1 : Cursor Off
Config Lcdpin = Pin , Db4 = P1.4 , Db5 = P1.5 , Db6 = P1.6 , Db7 = P1.7 , E = P1.3 , Rs = P1.2
'-------------------------------------------------------------------------------
Dim Dane_bajt As Byte
Dim Dane_bit As Bit
Dim P37_pomoc As Bit
Dim P35_pomoc As Bit
Dim P34_pomoc As Bit
Dim P33_pomoc As Bit
Dim Pierwszy_lcd As Bit
Dim Licznik_bitowy As Byte
Dim Licznik_bajtowy As Byte
Dim Strona As Byte
Dim Dane(25) As Byte
'-------------------------------------------------------------------------------
Cls : Locate 1 , 2 : Lcd "SST  ALDL 10k"
Licznik_bitowy = 0
Licznik_bajtowy = 1
P37_pomoc = P3.7
P35_pomoc = P3.5
P34_pomoc = P3.4
P33_pomoc = P3.3
Reset Pierwszy_lcd
Ie = &B10000011                                               'wlacz przerwania i int0 i timer0
Do
   If P3.7 <> P37_pomoc Then
      If P3.7 = 0 Then
         Strona = 1
         Call Wyswietlanie_strony_1
      End If
      P37_pomoc = P3.7
   End If
   If P3.5 <> P35_pomoc Then
      If P3.5 = 0 Then
         Strona = 2
         Call Wyswietlanie_strony_2
      End If
      P35_pomoc = P3.5
   End If
   If P3.4 <> P34_pomoc Then
      If P3.4 = 0 Then
         Strona = 3
         Call Wyswietlanie_strony_3
      End If
      P34_pomoc = P3.4
   End If
   If P3.3 <> P33_pomoc Then
      If P3.3 = 0 Then
         Strona = 4
         Call Wyswietlanie_strony_4
      End If
      P33_pomoc = P3.3
   End If
   If Pierwszy_lcd = 1 Then
      If Strona = 1 Then
         Call Wyswietlanie_strony_1
      Elseif Strona = 2 Then
         Call Wyswietlanie_strony_2
      Elseif Strona = 3 Then
         Call Wyswietlanie_strony_3
      Elseif Strona = 4 Then
         Call Wyswietlanie_strony_4
      Else
         Locate 1 , 15 : Lcd "*"
      End If
      Reset Pierwszy_lcd
   End If
Loop
End
'-------------------------------------------------------------------------------
Sub Wyswietlanie_strony_1:
   Cls
   Lcdhex Dane(1) ; "," ; Dane(2) ; "," ; Dane(3) ; ","
   Lcdhex Dane(4) ; "," ; Dane(5) ; " 1"
End Sub
'-------------------------------------------------------------------------------
Sub Wyswietlanie_strony_2:
   Cls
   Lcdhex Dane(6) ; "," ; Dane(7) ; "," ; Dane(8) ; ","
   Lcdhex Dane(9) ; "," ; Dane(10) ; " 2"
End Sub
'-------------------------------------------------------------------------------
Sub Wyswietlanie_strony_3:
   Cls
   Lcdhex Dane(11) ; "," ; Dane(12) ; "," ; Dane(13) ; ","
   Lcdhex Dane(14) ; "," ; Dane(15) ; " 3"
End Sub
'-------------------------------------------------------------------------------
Sub Wyswietlanie_strony_4:
   Cls
   Lcdhex Dane(16) ; "," ; Dane(17) ; "," ; Dane(18) ; ","
   Lcdhex Dane(19) ; "," ; Dane(20) ; " 4"
End Sub
'-------------------------------------------------------------------------------
Przerwanie_int0:
   Stop Timer0
   Th0 = &HF8 : Tl0 = &HCC
'   Th0 = &HF0 : Tl0 = &H00
   Start Timer0
Return
'-------------------------------------------------------------------------------
Przerwanie_timer0:
   Stop Timer0
   Dane_bit = Dane_bajt.7
   Rotate Dane_bajt , Left , 1
'   Shift Dane_bajt , Left , 1
   Dane_bajt.0 = Not P3.2
   If Licznik_bitowy >= 8 Then
      Licznik_bitowy = 0
      Dane(licznik_bajtowy) = Dane_bajt
      If Licznik_bajtowy < 25 Then Incr Licznik_bajtowy
   Else
      Incr Licznik_bitowy
   End If
   If Dane_bit = 1 Then
      If Dane_bajt = &HFF Then
         Licznik_bitowy = 0
         Licznik_bajtowy = 1
         If Pierwszy_lcd = 0 Then Set Pierwszy_lcd
      End If
   End If
Return
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
Zgłoś jeśli naruszono regulamin