$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 '------------------------------------------------------------------------------- '-------------------------------------------------------------------------------
PRU89