www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Program v bascom-u 8051
Pojdi na stran 1, 2  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
jerny
Član
Član



Pridružen-a: Čet 17 Apr 2008 11:27
Prispevkov: 414
Aktiv.: 1.98
Kraj: Dravograd

PrispevekObjavljeno: Čet Apr 23, 2009 7:33 pm    Naslov sporočila:  Program v bascom-u 8051 Odgovori s citatom

Dobil sem nalogo da napišem enostaven program, za utripanje led diod na portu P1(0-7), na vezju sta tudi dve tipki. Nalogo sem poizkušal izvesti z stavkom case, ker pa stavka case še enikoli nisem uporbljal me zanima, če ga prav razumem? (Moje mišljenje je, da prvič ko stisnem na tipko se izvede case 1: drugič case 2: in tako naprej? ), Ker pa zadeve doma ne morem stestirati, bi vas prosil za pomoč!

Koda:

$sim
Dim Stevec As Byte
Dim B1 As Byte
Dim B2 As Byte

If P3.7 = 0 Then
Select Case B2

Case 1:
Do
For Stevec = 1 To 1
Rotate P1 , Right
Loop Until P1.0 = 0
Next

Case 2:
Do
For Stevec = 1 To 2
Rotate P1 , Right
Loop Until P1.0 = 0
Next

Case 3:
Do
For Stevec = 1 To 3
Rotate P1 , Right
Loop Until P1.0 = 0
Next

Case 4:
Do
For Stevec = 1 To 4
Rotate P1 , Right
Loop Until P1.0 = 0
Next

Case 5:
Do
For Stevec = 1 To 5
Rotate P1 , Right
Loop Until P1.0 = 0
Next

Case Else
End Select
End If




If P3.4 = 0 Then
Select Case B1

Case 1:
Do
For Stevec = 1 To 1
Rotate P1 , Left
Loop Until P1.0 = 0
Next

Case 2:
Do
For Stevec = 1 To 2
Rotate P1 , Left
Loop Until P1.0 = 0
Next

Case 3:
Do
For Stevec = 1 To 3
Rotate P1 , Left
Loop Until P1.0 = 0
Next

Case 4:
Do
For Stevec = 1 To 4
Rotate P1 , Left
Loop Until P1.0 = 0
Next

Case 5:
Do
For Stevec = 1 To 5
Rotate P1 , Left
Loop Until P1.0 = 0
Next

Case Else
End Select
End If
End

Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
drVrh
Član
Član



Pridružen-a: Sre 20 Feb 2008 20:17
Prispevkov: 918
Aktiv.: 4.35
Kraj: Slovenija-Koroska-Prevalje-Lese

PrispevekObjavljeno: Čet Apr 23, 2009 8:35 pm    Naslov sporočila:   Odgovori s citatom

kakšna beseda je v Bascomu rezervirana za in,
npr.:

če je to in to potem naredi to

If Stevec < 0 and Stevec2 = 4 then
lala
End if

mi vrže napako ker je and logična negacija

_________________
Iz dneva v dan sem se spraševal kaj je to elektrika, vendar nisem našel odgovora ... in še vedno si postavljam to vprašanje
LP
Grega
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
drVrh
Član
Član



Pridružen-a: Sre 20 Feb 2008 20:17
Prispevkov: 918
Aktiv.: 4.35
Kraj: Slovenija-Koroska-Prevalje-Lese

PrispevekObjavljeno: Čet Apr 23, 2009 8:44 pm    Naslov sporočila:   Odgovori s citatom

Bascom; Zdaj imam pa sledeč problem, tukaj imam napisano proceduro ki mi sešteva oz. mi gre ura čist normalno ko pride Stevec ali Counter do 1499 se mi sekunda prišteje torej mi lavfa kot ura minute prišteva in sekunde sedaj me pa zanima kako bi to naredil za odštevanje ker karkoli sem poskusil, če sem dal tam minus namesto plusa mi ni delovalo prav, kaj delam narobe.

Koda:
Prikaz:
If Counter > 1499 Then
Seconds = Seconds + 1
If Seconds > 59 Then
Minutes = Minutes + 1
If Minutes > 59 Then
Ure = Ure + 1
If Ure > 23 Then Ure = 0
Minutes = 0
End If
Seconds = 0
End If
Counter = 0
End If

_________________
Iz dneva v dan sem se spraševal kaj je to elektrika, vendar nisem našel odgovora ... in še vedno si postavljam to vprašanje
LP
Grega
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
kose19
Član
Član



Pridružen-a: Sre 02 Mar 2005 19:37
Prispevkov: 1228
Aktiv.: 5.18
Kraj: okolica Kobarida

PrispevekObjavljeno: Čet Apr 23, 2009 8:57 pm    Naslov sporočila:   Odgovori s citatom

Uporabiš dva if stavka.

npr.
If Stevec < 0
If Stevec2 = 4 then
lala111
End If
lala222
End if

_________________
- Absens, carens -
- Tisti, ki ga ni, bo prikrajšan -
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
jerny
Član
Član



Pridružen-a: Čet 17 Apr 2008 11:27
Prispevkov: 414
Aktiv.: 1.98
Kraj: Dravograd

PrispevekObjavljeno: Čet Apr 23, 2009 9:15 pm    Naslov sporočila:   Odgovori s citatom

Kaj pa moj program? Bi mogel delovati?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
klemen88
Član
Član



Pridružen-a: Tor 01 Jan 2008 17:37
Prispevkov: 747
Aktiv.: 3.51
Kraj: Slovenj Gradec

PrispevekObjavljeno: Čet Apr 23, 2009 10:09 pm    Naslov sporočila:   Odgovori s citatom

jerny je napisal/a:
Kaj pa moj program? Bi mogel delovati?


Zakaj nebi naredil preprosteje? Da bi ob pritisku na tipko povečal števec in ko bi števec prišlel npr. do 5 bi se resetiral....in potem samo if stavki ;
IF stevec=x then
......

...

end if
Lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jerny
Član
Član



Pridružen-a: Čet 17 Apr 2008 11:27
Prispevkov: 414
Aktiv.: 1.98
Kraj: Dravograd

PrispevekObjavljeno: Pet Apr 24, 2009 7:41 am    Naslov sporočila:   Odgovori s citatom

Misliš talole:

Koda:


Dim Stevec As Byte
DIM STEVEC1 AS BYTE
DIM STEVEC2 AS BYTE

If P3.7 = 0 Then
STEVEC1 = STEVEC1 + 1


IF STEVEC1 = 1 THEN
Do
For Stevec = 1 To 1
Rotate P1 , Right
Loop Until P1.0 = 0
Next
END IF

IF STEVEC1 = 2 THEN
Do
For Stevec = 1 To 2
Rotate P1 , Right
Loop Until P1.0 = 0
Next
END IF

IF STEVEC1 = 3 THEN
Do
For Stevec = 1 To 3
Rotate P1 , Right
Loop Until P1.0 = 0
Next
END IF

IF STEVEC1 = 4 THEN
Do
For Stevec = 1 To 4
Rotate P1 , Right
Loop Until P1.0 = 0
Next
END IF

IF STEVEC1 = 5 THEN
Do
For Stevec = 1 To 5
Rotate P1 , Right
Loop Until P1.0 = 0
Next
END IF
End If




If P3.4 = 0 Then
STEVEC2 = STEVEC2 + 1

IF STEVEC2 = 1 THEN
Do
For Stevec = 1 To 1
Rotate P1 , Left
Loop Until P1.7 = 0
Next
END IF

IF STEVEC2 = 2 THEN
Do
For Stevec = 1 To 2
Rotate P1 , Left
Loop Until P1.7 = 0
Next
END IF

IF STEVEC2 = 3 THEN
Do
For Stevec = 1 To 3
Rotate P1 , Left
Loop Until P1.7 = 0
Next
END IF

IF STEVEC2 = 4 THEN
Do
For Stevec = 1 To 4
Rotate P1 , Left
Loop Until P1.7 = 0
Next
END IF

IF STEVEC2 = 5 THEN
Do
For Stevec = 1 To 5
Rotate P1 , Left
Loop Until P1.7 = 0
Next
END IF
END IF
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
drVrh
Član
Član



Pridružen-a: Sre 20 Feb 2008 20:17
Prispevkov: 918
Aktiv.: 4.35
Kraj: Slovenija-Koroska-Prevalje-Lese

PrispevekObjavljeno: Sre Jun 10, 2009 12:54 pm    Naslov sporočila:   Odgovori s citatom

LP

Zanima me glede spodnjega programa, ob compilanju mi vrže ven:

Error 120: Label not found[.Button2] in file:

Kaj delam narobe;

Koda:

Declare Sub Button2 , Button3 , Button4 , Button5



Do

P1.2 = 0
P1.5 = 0

   If P3.7 = 0 Then
      Gosub Button2
   End If

   If P3.4 = 0 Then
      Gosub Button3
   End If

   If P3.3 = 0 Then
      Gosub Button4
   End If

   If P3.2 = 0 Then
      Gosub Button5
   End If


Loop

Sub Button2
   P1.2 = 1
   P1.5 = 1
   P1.7 = 0
End Sub

Sub Button3
   P1.2 = 1
   P1.5 = 1
   P1.7 = 0
End Sub

Sub Button4
   P1.2 = 1
   P1.5 = 1
   P1.7 = 0
End Sub

Sub Button5
   P1.2 = 1
   P1.5 = 1
   P1.7 = 0
End Sub

_________________
Iz dneva v dan sem se spraševal kaj je to elektrika, vendar nisem našel odgovora ... in še vedno si postavljam to vprašanje
LP
Grega
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
robika
Član
Član



Pridružen-a: Pon 05 Apr 2004 20:55
Prispevkov: 281
Aktiv.: 1.19
Kraj: ajdovščina

PrispevekObjavljeno: Sre Jun 10, 2009 4:15 pm    Naslov sporočila:   Odgovori s citatom

Podprograme moraš deklarirat vsakega v svoji vrstici. Podprograme kličeš potem kar po imenu brez Gosub.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
galex4
Član
Član



Pridružen-a: Tor 01 Apr 2008 18:27
Prispevkov: 459
Aktiv.: 2.19

PrispevekObjavljeno: Pon Avg 31, 2009 3:34 pm    Naslov sporočila:   Odgovori s citatom

za vse, ki programirate v Bascom-u čipe 2051. Kako narediti A/D pretvorbo? Katere ukaze uporabljate? V helpu nisem našel.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
BojanR
Član
Član



Pridružen-a: Tor 08 Apr 2008 9:52
Prispevkov: 693
Aktiv.: 3.31
Kraj: Vnanje Gorice

PrispevekObjavljeno: Pon Avg 31, 2009 4:18 pm    Naslov sporočila:   Odgovori s citatom

2051 nima AD pretvornika, ampak komparator, ki se odraža na P3.6 (samo interni port). Preberi datasheet!
Če hočeš izmeriti neko analogno vrednost, se moraš pozabavati s timerjem.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
galex4
Član
Član



Pridružen-a: Tor 01 Apr 2008 18:27
Prispevkov: 459
Aktiv.: 2.19

PrispevekObjavljeno: Pon Avg 31, 2009 4:35 pm    Naslov sporočila:   Odgovori s citatom

hočem narediti enostaven termometer brez kakšnega ds- elementa. Za zaznavanje bi uporabil samo ntk upor. Samo za začetek.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
milan62
Član
Član



Pridružen-a: Ned 04 Jan 2004 23:19
Prispevkov: 2391
Aktiv.: 10.09
Kraj: Kranj

PrispevekObjavljeno: Pon Avg 31, 2009 4:51 pm    Naslov sporočila:   Odgovori s citatom

galex,
ena možnost je, da narediš multivibrator s čipom 555. Sestavni del vezja naj bo ntk upor. S procesorjem nato meriš frekvenco multivibratorja in to preračunaš v temperaturo.

LP

_________________
Wasting time online since 1999
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
galex4
Član
Član



Pridružen-a: Tor 01 Apr 2008 18:27
Prispevkov: 459
Aktiv.: 2.19

PrispevekObjavljeno: Pon Avg 31, 2009 4:56 pm    Naslov sporočila:   Odgovori s citatom

za začetnika ni to malo pretežko? merjenje frekvence s procesorjem?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3360
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Pon Avg 31, 2009 6:46 pm    Naslov sporočila:  Če Odgovori s citatom

Če želiš meriti temperaturo, toplo priporočam termometre DS1820, ki jih vežeš na Atmela. Zakaj bi se trudil, če lahko greš po lažji poti.

Mislim, da je nekaj primerov v mapi Samples, če pa ne, je bilo to razloženo na seminarju, za katerega je bilo napisano pisno delovno gradivo, ki ga lahko dobiš od katerega koli udeleženca ali predavatelja seminarja, mislim, da jih je na forumu nekaj, ki ti bodo dali napotke v tej smeri.

Če ne, ti poščljem materijale po elektronski pošti, pošlji mi naslov pod zasebno.

_________________
Nihče ni za vojno in vsi so za mir,
vsi so za bratstvo, nihče za prepir.
Od same ljubezni vsak čas na granatah
bo vtisnjeno geslo: "Darilo za brata"
Janez Menart
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51 Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2  Naslednja
Stran 1 od 2

 
Pojdi na:  
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: 494 dni


Powered by phpBB © 2001, 2005 phpBB Group