 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
toncibalonci Član

Pridružen-a: Pet 03 Avg 2007 21:12 Prispevkov: 331 Aktiv.: 1.52 Kraj: Dravograd
|
Objavljeno: Pon Maj 05, 2008 9:34 pm Naslov sporočila: |
|
|
Ne, na treh,v multiplexu! |
|
Nazaj na vrh |
|
 |
klemen88 Član


Pridružen-a: Tor 01 Jan 2008 17:37 Prispevkov: 747 Aktiv.: 3.51 Kraj: Slovenj Gradec
|
Objavljeno: Pon Maj 05, 2008 9:53 pm Naslov sporočila: |
|
|
Kot vidim nisi edini, ki bi imel probleme z matrično tipkovnico. Jaz sam imam probleme z 3x4 na attinyu. Ampak so mi fantje povedli rešitev vendar še nisem imel časa stestirat....
Upam da ti bo uspelo ker sam vem kako je ko testiraš veliko stvari in ti še kar ne deluje :S
Lp |
|
Nazaj na vrh |
|
 |
toncibalonci Član

Pridružen-a: Pet 03 Avg 2007 21:12 Prispevkov: 331 Aktiv.: 1.52 Kraj: Dravograd
|
Objavljeno: Pon Maj 05, 2008 10:02 pm Naslov sporočila: |
|
|
Klpz,zate ne vem,ampak jaz sem bolj začetnik v Bascomu zato mi to tudi dela probleme. Eni fantje na tem forumu pa zelo obvladajo stvar in jim je to enostavno. Še dobro da obstaja ta forum  |
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 16.01
|
Objavljeno: Pon Maj 05, 2008 10:23 pm Naslov sporočila: |
|
|
toncibalonci je napisal/a: |
Nimam vezja ampak Bascom testno ploščo. Na P2 imam tipkovnico,kot je napisano v programu, P3 imam za display, P1.0 , P1.3 , P1.4 pa je multiplex. Mislim da tu ni kaj narobe. |
Seveda je!
Spregledal sem namreč, da je P1.0 že zaseden. Zato mora iti Enako nekam drugam !!! Enako je izhodni pin, ki je aktiven takrat, ko je koda prava.
Izbriši tudi tisti Cifra = 0 pod Debounce=40
Nekje v globinah spomina vidim stavek:
"alias" je za definiranje vhoda, ????? pa za definiranje izhoda.
Nekoč sem ga videl na enem forumu. Ne vem, kdaj. Ne vem, kje.
Tistega ????? se ne spomnim več.
Imaš kakšno knjigo o Bascom-u?
Jaz pečem (beri: programiram) PICe (beri: PIC mikrokontrolerje). Dober tek!
LP,
Igor _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
toncibalonci Član

Pridružen-a: Pet 03 Avg 2007 21:12 Prispevkov: 331 Aktiv.: 1.52 Kraj: Dravograd
|
Objavljeno: Pon Maj 05, 2008 11:19 pm Naslov sporočila: |
|
|
"Alias" je za deklariranje spremenjlivk. Tisti "Enako" sem takoj opazil ampak to ni vzrok. Tisti "JePrava" pa preverja tipkovnico,če je bila tipka spuščena. Tisti del "Cifra" nekak ne morem spravit na display. Igo,vem da bi mi veliko lažje pomagal če bi jaz to delal z PIC-em ampak mi je Bascom bolj simpatičen. Se ti zahvaljujem da mi pomagaš! |
|
Nazaj na vrh |
|
 |
pato90 Član

Pridružen-a: Tor 17 Apr 2007 20:16 Prispevkov: 39 Aktiv.: 0.18 Kraj: Logatec
|
Objavljeno: Pon Maj 05, 2008 11:41 pm Naslov sporočila: |
|
|
Koda: |
Dim Preveri As Byte
Dim Vrednost As Byte
Dim Cifra As Long
Dim Pom As Byte
dim kontrola as byte
'-------------------------------------------------------------------------------
Config Debounce = 40
'-------------------------------------------------------------------------------
Kolona1 Alias P2.5
Kolona2 Alias P2.4
Kolona3 Alias P2.3
'-------------------------------------------------------------------------------
Stolp1 Alias P2.2
Stolp2 Alias P2.1
Stolp3 Alias P2.0
Stolp4 Alias P2.6
'-------------------------------------------------------------------------------
Preveri_t:
do
Kolona1 = 0 : Kolona2 = 1 : Kolona3 = 1
Vrednost = 1 : Debounce Stolp1 , 0 , Sprejeta , Sub
Vrednost = 4 : Debounce Stolp2 , 0 , Sprejeta , Sub
Vrednost = 7 : Debounce Stolp3 , 0 , Sprejeta , Sub
Vrednost = 11 : Debounce Stolp4 , 0 , Sprejeta , Sub
'-------------------------------------------------------------------------------
Kolona1 = 1 : Kolona2 = 0 : Kolona3 = 1
Vrednost = 2 : Debounce Stolp1 , 0 , Sprejeta , Sub
Vrednost = 5 : Debounce Stolp2 , 0 , Sprejeta , Sub
Vrednost = 8 : Debounce Stolp3 , 0 , Sprejeta , Sub
Vrednost = 0 : Debounce Stolp4 , 0 , Sprejeta , Sub
'-------------------------------------------------------------------------------
Kolona1 = 1 : Kolona2 = 1 : Kolona3 = 0
Vrednost = 3 : Debounce Stolp1 , 0 , Sprejeta , Sub
Vrednost = 6 : Debounce Stolp2 , 0 , Sprejeta , Sub
Vrednost = 9 : Debounce Stolp3 , 0 , Sprejeta , Sub
Vrednost = 12 : Debounce Stolp4 , 0 , Sprejeta , Sub
loop
End
'-------------------------------------------------------------------------------
Sprejeta:
Preverispet:
Preveri = P2 And &B01000111
If Preveri <> &B01000111 Then
Goto Preverispet
End If
incr kontrola
if kontrola>3 then
kontrola=0
cifra=0
end if
Cifra = Cifra * 10
Cifra = Cifra + Vrednost
vrednost=0
if cifra=123 then
goto prikaz
end if
return
Do
prikaz:
Pom = Cifra / 100
Pom = Lookup(pom , Stevilke)
P3 = Pom
P1.4 = 0
Waitms 2
P1.4 = 1
Pom = Cifra Mod 100
Pom = Pom / 10
Pom = Lookup(pom , Stevilke)
P3 = Pom
P1.3 = 0
Waitms 2
P1.3 = 1
Pom = Cifra Mod 10
Pom = Lookup(pom , Stevilke)
P3 = Pom
P1.0 = 0
Waitms 2
P1.0 = 1
Loop
End
'-------------------------------------------------------------------------------
Stevilke:
Data 65 , 221 , 100 , 76 , 216 , 74 , 66 , 93 , 64 , 72
|
Probaj tako no še mal razlage: najprej smo v do-loop zanki kjer čakamo na pritisnjenost tipke, nato skoči v sprejeta in preverja če je tipka spuščena nato pa sešteje in če je cifra prava gre v prikaz, če pa se zmotimo pa da ni potrebno reseterat čipa se avtomatsko ko vpišemo četrto številko začne znova to bi moralo delovati čeprav ne poznam toliko bascom 8051 je pa zelo podoben bascom AVR-ju |
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 16.01
|
Objavljeno: Tor Maj 06, 2008 12:01 am Naslov sporočila: |
|
|
Dokler ne bo prav pritisnil zaporedja, ne bo ničesar videl. Bolje je tako:
Koda: |
Dim Preveri As Byte
Dim Vrednost As Byte
Dim Cifra As Long
Dim Pom As Byte
dim kontrola as byte
'-------------------------------------------------------------------------------
Config Debounce = 40
'-------------------------------------------------------------------------------
Kolona1 Alias P2.5
Kolona2 Alias P2.4
Kolona3 Alias P2.3
'-------------------------------------------------------------------------------
Stolp1 Alias P2.2
Stolp2 Alias P2.1
Stolp3 Alias P2.0
Stolp4 Alias P2.6
Do
Gosub Preveri_t
Pom = Cifra / 100
Pom = Lookup(Pom , Stevilke)
P3 = Pom
P1.4 = 0
Waitms 2
P1.4 = 1
Pom = Cifra Mod 100
Pom = Pom / 10
Pom = Lookup(Pom , Stevilke)
P3 = Pom
P1.3 = 0
Waitms 2
P1.3 = 1
Pom = Cifra Mod 10
Pom = Lookup(Pom , Stevilke)
P3 = Pom
P1.0 = 0
Waitms 2
P1.0 = 1
Loop
End
'-------------------------------------------------------------------------------
Preveri_t:
Kolona1 = 0 : Kolona2 = 1 : Kolona3 = 1
Vrednost = 1 : Debounce Stolp1 , 0 , Sprejeta , Sub
Vrednost = 4 : Debounce Stolp2 , 0 , Sprejeta , Sub
Vrednost = 7 : Debounce Stolp3 , 0 , Sprejeta , Sub
Vrednost = 11 : Debounce Stolp4 , 0 , Sprejeta , Sub
'-------------------------------------------------------------------------------
Kolona1 = 1 : Kolona2 = 0 : Kolona3 = 1
Vrednost = 2 : Debounce Stolp1 , 0 , Sprejeta , Sub
Vrednost = 5 : Debounce Stolp2 , 0 , Sprejeta , Sub
Vrednost = 8 : Debounce Stolp3 , 0 , Sprejeta , Sub
Vrednost = 0 : Debounce Stolp4 , 0 , Sprejeta , Sub
'-------------------------------------------------------------------------------
Kolona1 = 1 : Kolona2 = 1 : Kolona3 = 0
Vrednost = 3 : Debounce Stolp1 , 0 , Sprejeta , Sub
Vrednost = 6 : Debounce Stolp2 , 0 , Sprejeta , Sub
Vrednost = 9 : Debounce Stolp3 , 0 , Sprejeta , Sub
Vrednost = 12 : Debounce Stolp4 , 0 , Sprejeta , Sub
return
'-------------------------------------------------------------------------------
Sprejeta:
Preverispet:
Preveri = P2 And &B01000111
If Preveri <> &B01000111 Then
Goto Preverispet
End If
incr kontrola
if kontrola>3 then
kontrola=0
Cifra=0
end if
Cifra = Cifra * 10
Cifra = Cifra + Vrednost
vrednost=0
if Cifra=123 then
Cifra=876 '-------------------------------
end if
return
'-------------------------------------------------------------------------------
Stevilke:
Data 65 , 221 , 100 , 76 , 216 , 74 , 66 , 93 , 64 , 72
|
V čem to simulirate?
Imam nameščen Basscom8051 demo, pa mi errorje vrže ven. Ko vrstico zakomentiram, je pa v naslednji napaka ...
Npr. Vrednost = 1 : Debounce Stolp1 , 0 , Sprejeta , Sub izvrže
error 119, 105, 117, ...
LP,
Igor _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
pato90 Član

Pridružen-a: Tor 17 Apr 2007 20:16 Prispevkov: 39 Aktiv.: 0.18 Kraj: Logatec
|
Objavljeno: Tor Maj 06, 2008 12:49 am Naslov sporočila: |
|
|
bom jutri poiskal celotno kodo iz knjige pa jo prilepim. samo mislim da je tam za izpisovanje na lcd tako da bo treba malo spremenit |
|
Nazaj na vrh |
|
 |
toncibalonci Član

Pridružen-a: Pet 03 Avg 2007 21:12 Prispevkov: 331 Aktiv.: 1.52 Kraj: Dravograd
|
Objavljeno: Tor Maj 06, 2008 1:08 am Naslov sporočila: |
|
|
Igor zdaj pa dela,meni nikjer ne vrže ven kakih napak. Pato90,probal sem tudi tvojo verzijo in je res tako kot pravi Igor,da ne vidiš nič dokler na prav vtipkaš,vseeno hvala za trud,dobro je da vidim več verzij,tako si tudi lahko več zapomnim! Eno vprašanje,tako mimogrede. A se je mogoče znebiti tistega utripanja displeyev ko pritisneš tipko? Verjetno ne,zaradi "debounce" ukaza? Hvala obema,jutri bom pa verjetno imel spet kak novi problem.  |
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 16.01
|
Objavljeno: Tor Maj 06, 2008 10:02 pm Naslov sporočila: |
|
|
toncibalonci je napisal/a: |
A se je mogoče znebiti tistega utripanja displeyev ko pritisneš tipko? Verjetno ne,zaradi "debounce" ukaza? |
Eh, to je pa čisto navaden (beri: zelo resen) hrošč, ki ga pač ima gornji program.
Zadevo se povsem enostavno reši z dobro odmerjenimi prekinitvami, da se program obnaša kot RTOS .
Koda: |
;********************* / PREKINITVENI PODPROGRAM \ ***************************
PrekPod ; Prekinitveni podprogram
bcf INTCON,GIE ; Onemogocimo prekinitve
movwf W_reg ; Shranimo register W
swapf STATUS,w
movwf Stat_reg ; Shranimo register STATUS
movlw b'11110000'
andwf PORTA,f ; Izklopimo vse cifre
movf Mux,w
addwf PCL,f
nop ; goto Prek000x
goto Prek00x0
goto Prek0x00
goto Prekx000
clrf Mux
Prek000x
movf UES,w ; Da
call Znaki
movwf PORTB ; Poisci ustrezno kodo znaka in jo poslji
bsf PORTA,0 ; Vklopi prvo cifro
goto PrekVen
Prek00x0
movf UDS,w ; Desetice Sekund -> W
call Znaki ; Poglej kodo cifre
movwf PORTB ; Poslji kodo cifre na LED
bsf PORTA,1 ; Vklopi drugo cifro
goto PrekVen
Prek0x00
movf UEM,w ; Enice Minut -> W
call Znaki ; Poglej kodo cifre
andlw b'11110111' ; doda decimalno piko
movwf PORTB ; Poslji kodo cifre na LED
bsf PORTA,2 ; Vklopi drugo cifro
goto PrekVen
Prekx000
movf UDM,w ; Desetice Minut -> W
call Znaki ; Poglej kodo cifre
movwf PORTB ; Poslji kodo cifre na LED
bsf PORTA,3 ; Vklopi drugo cifro
PrekVen
incf Mux,f ; Preklopi na drugo cifro
bcf INTCON,T0IF ; Izklopi T0IF
swapf Stat_reg,w
movwf STATUS ; Povrni STATUS
movf W_reg,w ; Povrni W
bsf INTCON,GIE ; Vklopimo GIE
retfie ; Konec prekinitvenega podprograma
;******************** / TABELA ZNAKOV NA LED PRIKAZOVALNIKU \****************
Znaki addwf PCL,f ; Izracunaj odmik
DT 0xB7, 0x82, 0xE5, 0xE3, 0xD2, 0x73, 0x77, 0xA2, 0xF7, 0xF3, 0x00
; Definicije znakov za izpis na LED prikazovalnik |
Ne sprašuj, kako to izgleda v Bascom-u ...
LP,
Igor _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
toncibalonci Član

Pridružen-a: Pet 03 Avg 2007 21:12 Prispevkov: 331 Aktiv.: 1.52 Kraj: Dravograd
|
Objavljeno: Tor Maj 06, 2008 10:33 pm Naslov sporočila: |
|
|
Saj te razumem Igor,vprašenje je bilo bolj retorično. Bom probal enkrat narediti z prekinitvami,ampak za zdaj je tudi to dobro. Preveč informacij na enkrat pa tudi ni zdravo.  |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 493 dni
Powered by phpBB © 2001, 2005 phpBB Group
|