Upravo tako Vojine,
Evo dela koda iz PBP koji sam radio za 3 cifre 7 segmentnih displeja + 7 LED dioda ( sve iz multipleksa ).
Logika je sledeća:
U interaptu samo minimalni deo koda koji u krug pali svaki displej i postavlja UNAPRED pripremljenu masku te cifre.
Maska za cifru se radi VAN INTERAPTA i to samo kada se menja promeljiva (Brojač) pozivom potprograma "PRIPREMA"
Dakle u interaptu samo selekt odredjenog displeja i slanje njegove maske !
Razlog upotrebe Disreg je mogućnost upotrebe bilo kog pina sa različitih portova SAMO zbog lakšeg rutiranja jednoslojne PCB !
**** U interaptu :
Displej:
MPX = MPX + 1
if MPX = 5 then MPX = 1
PORTB = 0
SEL0 = 1
SEL1 = 1
SEL2 = 1
SEL3 = 1
select case MPX
CASE 1
Disreg = Maska0
low SEL0
CASE 2
Disreg = Maska1
low SEL1
CASE 3
Disreg = Maska2
low SEL2
CASE 4
Disreg = led
low SEL3
END SELECT
PORTB.6 = Disreg.0 ' Ovaj deo programa omogucava da se bilo koji
PORTB.4 = Disreg.1 ' od osam pinova na razlicitim portovima
PORTB.1 = Disreg.2 ' upotrebe za pogon miltiplex 7 segmentnog
PORTB.0 = Disreg.3 ' displeja u punom rezimu rada !!!
PORTB.2 = Disreg.4
PORTB.7 = Disreg.5
PORTB.5 = Disreg.6
'PORTB.3 = Disreg.7 'dp
**** Negde u programu :
Priprema:
W = Brojač
MASKE:
cifra = W dig 0 ' Vrednost jedinica ide u promenljivu "cifra"
gosub Bin2seg ' Pretvaranje cifre u masku
Maska0 = Cifra ' Maska 0 sadrzi maske "jedinica"
cifra = W dig 1 ' Vrednost desetica ide u promenljivu "cifra"
gosub Bin2seg ' Pretvaranje cifre u masku
Maska1 = Cifra ' Maska 1 sadrzi maske "desetica"
'Maska1 = Maska1 +128
cifra = W dig 2 ' Vrednost stotina ide u promenljivu "cifra"
gosub Bin2seg ' Pretvaranje cifre u masku
Maska2 = Cifra ' Maska 2 sadrzi maske "stotina"
return
Bin2seg: ' Tabela za pretvaranje decimlanog broja u masku za displeje
Lookup Cifra,[$3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6F],Cifra
return ' Povratak iz tabela sa "maskom u cifri"
***************
Evo dela koda iz PBP koji sam radio za 3 cifre 7 segmentnih displeja + 7 LED dioda ( sve iz multipleksa ).
Logika je sledeća:
U interaptu samo minimalni deo koda koji u krug pali svaki displej i postavlja UNAPRED pripremljenu masku te cifre.
Maska za cifru se radi VAN INTERAPTA i to samo kada se menja promeljiva (Brojač) pozivom potprograma "PRIPREMA"
Dakle u interaptu samo selekt odredjenog displeja i slanje njegove maske !
Razlog upotrebe Disreg je mogućnost upotrebe bilo kog pina sa različitih portova SAMO zbog lakšeg rutiranja jednoslojne PCB !
**** U interaptu :
Displej:
MPX = MPX + 1
if MPX = 5 then MPX = 1
PORTB = 0
SEL0 = 1
SEL1 = 1
SEL2 = 1
SEL3 = 1
select case MPX
CASE 1
Disreg = Maska0
low SEL0
CASE 2
Disreg = Maska1
low SEL1
CASE 3
Disreg = Maska2
low SEL2
CASE 4
Disreg = led
low SEL3
END SELECT
PORTB.6 = Disreg.0 ' Ovaj deo programa omogucava da se bilo koji
PORTB.4 = Disreg.1 ' od osam pinova na razlicitim portovima
PORTB.1 = Disreg.2 ' upotrebe za pogon miltiplex 7 segmentnog
PORTB.0 = Disreg.3 ' displeja u punom rezimu rada !!!
PORTB.2 = Disreg.4
PORTB.7 = Disreg.5
PORTB.5 = Disreg.6
'PORTB.3 = Disreg.7 'dp
**** Negde u programu :
Priprema:
W = Brojač
MASKE:
cifra = W dig 0 ' Vrednost jedinica ide u promenljivu "cifra"
gosub Bin2seg ' Pretvaranje cifre u masku
Maska0 = Cifra ' Maska 0 sadrzi maske "jedinica"
cifra = W dig 1 ' Vrednost desetica ide u promenljivu "cifra"
gosub Bin2seg ' Pretvaranje cifre u masku
Maska1 = Cifra ' Maska 1 sadrzi maske "desetica"
'Maska1 = Maska1 +128
cifra = W dig 2 ' Vrednost stotina ide u promenljivu "cifra"
gosub Bin2seg ' Pretvaranje cifre u masku
Maska2 = Cifra ' Maska 2 sadrzi maske "stotina"
return
Bin2seg: ' Tabela za pretvaranje decimlanog broja u masku za displeje
Lookup Cifra,[$3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6F],Cifra
return ' Povratak iz tabela sa "maskom u cifri"
***************