maly kalkulator


Witam proszę o pomoc w związku z małym kalkulatorem chodzi mi wyłącznie o dodawanie. Ale do rzeczy na zdjęciu mam cztery wyświetlacze LED każdy wyświetla inna liczbę umiem zmieniać te liczby na każdym wyświetlaczu i wyświetlić natomiast chce aby zsumować te liczby i wyświetlić sumę dodawania tych liczb w tym przypadku jak ustawiłem to tylko przykład suma wynosi 18. oczywiście przy każdej zmianie dowolnej liczby suma ma się zmieniać automatycznie, każdy wyświetlacz liczy tylko do 10 potrzebuje tylko wskazówki jak mam to zrobić kawałek przykładu gdyż i tak będę powiększał liczbę wyświetlaczy na razie zrobiłem 4 a będzie ze 10. Oczywiście rozumiem większa ilość wyświetlaczy inny procesor będzie zaranie próbuje z czterem i na atinny.

a tu kawałek kodu

$regfile = "attiny2313.dat"
$crystal = 4000000
 
Dim Kro As Byte , Cela As Byte , Cela1 As Byte , Cela2 As Byte
Dim Cela3 As Byte , Cela4 As Byte , Mux As Byte 
Config Portb = 255 : Portb = &B255 : Config Portd = &B1111100 : Portd = &B1111111
Config Timer0 = Timer , Prescale = 64 : Config Timer1 = Timer , Prescale = 64
Enable Interrupts : Enable Timer0 : Enable Timer1
On Timer0 Co4ms          'po przepełnieniu licznika T/C0 skocz do etykiety o nazwie Co4ms
On Timer1 Co1s           'po przepełnieniu licznika T/C1 skocz do etykiety o nazwie Co1s
 
 
Do
Waitms 200
If Pind.1 = 0 Then
If Kro = 4 Then
Incr Cela : If Cela = 10 Then Cela = 0
End If
If Pind.1 = 0 And Kro = 3 Then
Incr Cela1 : If Cela1 = 10 Then Cela1 = 0
End If
If Pind.1 = 0 And Kro = 2 Then
Incr Cela2 : If Cela2 = 10 Then Cela2 = 0
End If
 If Pind.1 = 0 And Kro = 1 Then
Incr Cela3 : If Cela3 = 10 Then Cela3 = 0
End If
 
 End If
 
Loop
End
 
Co4ms:
                         ' obsługa wyświetlaczy co 4,096ms
Incr Mux : If Mux = 4 Then Mux = 0 : Portd = &B1111111
Select Case Mux          ' obsługa wyświetlacza
Case 0:
   Portb = Lookup(cela , Tabela) : Portd.3 = 0 : If Kro = 4 Then Portb.7 = 0
 
Case 1:
   Portb = Lookup(cela1 , Tabela) : Portd.4 = 0 : If Kro = 3 Then Portb.7 = 0
Case 2:
   Portb = Lookup(cela2 , Tabela) : Portd.5 = 0 : If Kro = 2 Then Portb.7 = 0
Case 3:
   Portb = Lookup(cela3 , Tabela) : Portd.6 = 0 : If Kro = 1 Then Portb.7 = 0
 
End Select
Return
 
Co1s:
Timer1 = 3036
 
If Pind.0 = 0 Then
Incr Kro : If Kro = 5 Then Kro = 0
 End If
Return
                                            'koniec procedury obsługi przerwania od T/C1
 
Tabela:
Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144




Portret użytkownika mirley

Re: Suma

A gdzie chcesz wyświetlać tą sumę jak 4 wyświetlacze masz zajęte?

Tak czy inaczej poprostu sumujesz wartości

X = Cela + Cela1
X = X + Cela2
X= X + Cela3

A potem dzielisz na cyfry, jak masz 4 wyświetlacze 0-9 to max suma < 100 więc potrzebujesz 2 cyfry:

C1 = X mod 10
C2 = X /10

Polecenie mod daje resztę z dzielenia przez 10 - cyfrę jedności, a podział przez 10 daje cyfrę dziesiątek

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.