Witam.
Bardzo proszę o pilny help.
Potrzebuję programu obsługi w bascomie 4 wyśw.led z użyciem scalaczka 74ls164
Bardzo proszę o pilny help.
Potrzebuję programu obsługi w bascomie 4 wyśw.led z użyciem scalaczka 74ls164
Czy wolisz polską wersję strony elektroda?
Nie, dziękuję Przekieruj mnie tamjony15 napisał:w bascomie nie pomoge ( nie używam ) w asm wygląda to tak:... mov c,acc.0 mov _ab,c rr a ...
... pozdrawiam
Przerwanie_timer1: 'przerwanie co 0,0015625 sekundy (640Hz)
Ie = &B00000000 'wylacz przerwania
Th1 = &HFC : Tl1 = &H00
P3.7 = 1 : P1.0 = 1 : P1.1 = 1 : P1.6 = 1 : P1.7 = 1
Incr Wyswietlacz_licznik
If Wyswietlacz_licznik = 5 Then Wyswietlacz_licznik = 0
Wyswietlacz_dane = Poczatek_wyswietlacz_cyfra_kopia
Wyswietlacz_dane = Wyswietlacz_dane + Wyswietlacz_licznik
Wyswietlacz_dane = Peek(wyswietlacz_dane)
If Wyswietlacz_licznik <> 4 Then
Wyswietlacz_dane = Lookup(wyswietlacz_dane , Wyswietlacz_konfiguracja_segmentow)
End If
Shiftout P1.5 , P1.2 , Wyswietlacz_dane , 1
Wyswietlacz_dane = Lookup(wyswietlacz_licznik , Wyswietlacz_sterowanie_cyframi)
P1.0 = Wyswietlacz_dane.0 : P1.1 = Wyswietlacz_dane.1 : P1.6 = Wyswietlacz_dane.2 : P1.7 = Wyswietlacz_dane.3
P3.7 = Wyswietlacz_dane.4
Ie = &B10001111 'wlacz przerwania i timer1 i int1
Return
'-------------------------------------------------------------------------------
Wyswietlacz_sterowanie_cyframi:
Data &B11111110 , &B11111101 , &B11111011 , &B11110111 , &B11101111
'-------------------------------------------------------------------------------
Wyswietlacz_konfiguracja_segmentow:
Data 24 , 189 , 208 , 148 , 53 , 22 , 18 , 60 , 16 , 20 '0..9
Data 255 , 116 , 90 , 247 'BLANK, Stopien,Celcjusz,-
Data 48 , 155 , 83 , 147 'A,u ,t ,o
'-------------------------------------------------------------------------------
Dim test as word
Dim wyswietlacz_1 as byte
Dim wyswietlacz_2 as byte
Dim wyswietlacz_3 as byte
Dim wyswietlacz_4 as byte
Dim wejscie_dzielenia as word
Dim wyjscie_dzielenia as byte
-------------------------------------------------------------
Do
...
wejscie_dzielenia=test 'przepisanie zmiennej do podzielenia
gosub wyswietlacz_dzielenie
wyswietlacz_1=wyjscie_dzielenia
gosub wyswietlacz_dzielenie
wyswietlacz_2=wyjscie_dzielenia
gosub wyswietlacz_dzielenie
wyswietlacz_3=wyjscie_dzielenia
gosub wyswietlacz_dzielenie
wyswietlacz_4=wyjscie_dzielenia
...
Loop
End
----------------------------------------------------
Wyswietlacz_dzielenie:
wyjscie_dzielenia=wejscie_dzielenia mod 10
wejscie_dzielenia=wejscie_dzielenia /10
Return$regfile = "2313def.dat"
$crystal = 6000000
Config Timer1 = Timer , Prescale = 8
On Timer1 Tajmer1_przepelnienie
Enable Timer1 : Start Timer1
Enable Interrupts
'-------------------------------------------------------------------------------
Dim Wyswietlacz_licznik As Byte
Dim Wyswietlacz_dane As Byte
Dim Wyswietlacz_cyfry(4) As Byte
Dim Wyswietlacz_kopia(4) As Byte
Dim Zmienna As Word
Dim Dzielenie_wejscie As Word
Dim Dzielenie_wyjscie As Byte
Dim Dzielenie_pomoc As Word
'-------------------------------------------------------------------------------
Zmienna = 765
Do
Dzielenie_wejscie = Zmienna
Gosub Dzielenie
Wyswietlacz_cyfry(1) = Dzielenie_wyjscie
Gosub Dzielenie
Wyswietlacz_cyfry(2) = Dzielenie_wyjscie
Gosub Dzielenie
Wyswietlacz_cyfry(3) = Dzielenie_wyjscie
Gosub Wyswietlacz_kopia
Loop
End
'-------------------------------------------------------------------------------
Dzielenie:
Dzielenie_pomoc = Dzielenie_wejscie Mod 10
Dzielenie_wyjscie = Low(dzielenie_pomoc)
Dzielenie_pomoc = Dzielenie_wejscie
Dzielenie_wejscie = Dzielenie_pomoc / 10
Return
'-------------------------------------------------------------------------------
Wyswietlacz_kopia: 'skopiowanie zmiennych aby nic nie mignelo
Wyswietlacz_kopia(1) = Wyswietlacz_cyfry(1)
Wyswietlacz_kopia(2) = Wyswietlacz_cyfry(2)
Wyswietlacz_kopia(3) = Wyswietlacz_cyfry(3)
Return
'-------------------------------------------------------------------------------
Tajmer1_przepelnienie:
Portb.0 = 1
Portb.1 = 1
Portb.2 = 1
Incr Wyswietlacz_licznik 'normalnie zaczniemy 1,2,3 1,2,3 1,2,3
If Wyswietlacz_licznik > 3 Then Wyswietlacz_licznik = 1 'odciecie za duzych wartosci
Wyswietlacz_dane = Wyswietlacz_kopia(wyswietlacz_licznik) 'zaladowanie zmiennej odpowiadajacej cyfrze
Wyswietlacz_dane = Lookup(wyswietlacz_dane , Wyswietlacz_segmenty) 'przetlumaczenie zmiennej na zapalone segmenty
Shiftout Portd.6 , Portd.5 , Wyswietlacz_dane , 1 'wyslanie do 74HC164
Wyswietlacz_dane = Lookup(wyswietlacz_licznik , Wyswietlacz_cyfry) 'ustalenie ktory tranzystor zalaczony
Portb.0 = Wyswietlacz_dane.0 'zalaczenie odpowiednich tranzystorow
Portb.1 = Wyswietlacz_dane.1
Portb.2 = Wyswietlacz_dane.2
Return
'-------------------------------------------------------------------------------
Wyswietlacz_segmenty: 'konfiguracja segmentow
Data 255 , 254 , 252 , 255 , 255 , 255 , 255 , 255 , 255 , 255 '0,1,2..9
Wyswietlacz_cyfry:
Data &B11111111 , &B11111110 , &B11111101 , &B11111011 'tranzystor zalacza sie w zerze - pirwsze nie uzywane - nie kasowac
'-------------------------------------------------------------------------------
....
if wysiwtelacz_cyfry(3)=0 then
wysiwtlacz_cyfry(3)=10 'to jest ten pusty znak. W ten sposób też mozna zmusić ledy do wyświetlania innych znaczków niż cyfry (np. stopnie celcjusza)
if wysietlacz_cyfry(2)=0 then wysietlacz_cyfry(2)=10 'trzeciej cyfry nie wygaszamy bo tak ładniej wygląda
end if