@ device PIC16F876A, XT_OSC, WDT_OFF, PWRT_ON,PROTECT_OFF
TrisA = %11111000
PortA = %00000000
TrisB = %00000001
PortB = %00000000
TrisC = %11000000
PortC = %00000000
Cifra var Byte
Time var Word
ImpOdo var Word
ImpSpedo var Word
Sped var Word
Odometr1 var Word
Odometr2 var Word
ImpOdo = 6000
Odometr1 = 0
Odometr2 = 0
Option_REG = %11000011 ' Âûêëþ÷àåì ïîäòÿãèâàþùèå ðåçèñòîðû è íàñòðàèâàåì ïðåääåëèòåëü äëÿ TMR0
On Interrupt Goto myint
TMR0 = 5
Intcon = %10110000 ' âêëþ÷àåì ïðåðûâàíèÿ îò âõîäà INT
Main:
' ----------------------------- [ Spedometr ] -----------------------------
Cifra = Sped Dig 0 ' Spedometr Cifra 1
PortA = %00000100
GoSub Look
Pause 2
PortA = $00
Cifra = Sped Dig 1 ' Spedometr Cifra 2
PortA = %00000010
GoSub Look
Pause 2
PortA = $00
Cifra = Sped Dig 2 ' Spedometr Cifra 3
PortA = %00000001
GoSub Look
Pause 2
PortA = $00
' --------------------------- [ End Spedometr ] ---------------------------
' ------------------------------ [ Odometr ] ------------------------------
Cifra = Odometr1 Dig 0 ' Odometr Cifra 1
PortC = %00000100
GoSub Look
Pause 2
PortC = $00
Cifra = Odometr1 Dig 1 ' Odometr Cifra 2
PortC = %00000010
GoSub Look
Pause 2
PortC = $00
Cifra = Odometr1 Dig 2 ' Odometr Cifra 3
PortC = %00000001
GoSub Look
Pause 2
PortC = $00
Cifra = Odometr2 Dig 0 ' Odometr Cifra 4
PortC = %00100000
GoSub Look
Pause 2
PortC = $00
Cifra = Odometr2 Dig 1 ' Odometr Cifra 5
PortC = %00010000
GoSub Look
Pause 2
PortC = $00
Cifra = Odometr2 Dig 2 ' Odometr Cifra 6
PortC = %00001000
GoSub Look
Pause 2
PortC = $00
' ---------------------------- [ End Odometr ] ----------------------------
GoTo Main
' ------------------------- [ Obrobotka Impulsov ] ------------------------
Disable
myint:
if intcon.1=1 then ' åñëè ïðåðûâàíèå ïðîèçîøëî ïî âõîäó INT óâåëè÷èâàåì ñ÷åò÷èê
ImpSpedo = ImpSpedo + 1
ImpOdo = ImpOdo - 1
INTCON.1 = 0
endif
if ImpOdo = 0 then
Odometr2 = Odometr2 + 1
ImpOdo = 6000
endif
if Odometr2 = 1000 then
Odometr2 = 0
Odometr1 = Odometr1 +1
endif
if Odometr1 = 1000 then
Odometr1 = 0
Odometr2 = 0
endif
if intcon.2=1 then ' åñëè ïðåðûâàíèå ïî ïåðåïîëíåíèþ TMR0 óâåëè÷èâàåì ñ÷åò÷èê
Time = Time + 1
if Time = 300 then
Time = 0
Sped = ImpSpedo
ImpSpedo = 0
endif
TMR0=5
intcon.2=0
endif
Resume
Enable
' ----------------------- [ End Obrobotka Impulsov ] ----------------------
Look:
LookUp Cifra, [$80, $F2, $48, $60, $32, $24, $04, $F0, $00, $20], PortB
Return
End