brojac od 0 do 999

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
milanbp
Pocetnik na forumu
Pocetnik na forumu
Posts: 34
Joined: 27-02-2010, 15:41

brojac od 0 do 999

Post by milanbp »

Pozdrav svima, napravio sam brojac sa 3 segmentna broja po semi u prilogu.Na semi je neki drugi pic, a ja koristim 16f76, 4MHz oscilator.Displeji su sa zajednickom katodom.
Kod u Basic-u sam dobio ispisan kod i pokusao da prilagodim ali nikako mi neuspeva pa vas molim za pomoc!
Naime, brojac je zamisljen da radi ovako: Kad se brojac upali na dislpleju tasterima (jedinice,desetice,stote) se podesi zeljeni broj (recimo 100).Kada se podesi stisne se start taster i aktivira se relej (portc.4) i displej pokazuje tri nule i "ceka" impulse sa portc.0.Svaki impuls, displej ispisuje kao broj tj jedan impuls-na dipleju 001,drugi impuls na displeju 002...dok nedodje do zadatog broja(u ovom slucaju 100) kada se gasi relej.
Taster stop sluzi da usvakom trenutku stopira tj sve vrati u pocetno stanje,dok taster pauza sluzi dok se broje impulsi kada se on stisne-zaustavi se brojanje na tom mestugde je stao i relej se ugasi,pa pri stiskanju starta opet nastavlja sve tj pali se relej i nastavlja odbrojavanje.
Ufffffffff komplikovano jel? :) izludjuje me vec par dana pa ako je neko voljan, bio bih mu zahvalan mnogo!!!

Code: Select all

  '****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : NELE                                              *
'*  Notice  : Copyright (c) 2010 fu*k copyright                 *
'*          : All Rights Reserved                               *
'*  Date    : 9/26/2010                                         *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
b0 var byte
jedinice var byte
desetice var byte
stotine var byte
brojac var word
zadatibr var word
maskiranacifra var byte
i var byte
temp var bit
TRISA=%111111
TRISB=0
TRISC=%00000001
ADCON1=7
b0=0
brojac=0
temp=0
main:
Button porta.3,0,1,1,B0,1,uvecajjedinice
Button porta.4,0,1,1,B0,1,uvecajdesetice
Button porta.5,0,1,1,B0,1,uvecajstotine
Button porta.0,0,1,1,B0,1,start
goto prikazibr
goto main

uvecajjedinice:
jedinice=jedinice+1
if jedinice>9 then jedinice=0
b0=0
zadatibr = jedinice + desetice*10 + stotine *100
goto prikazibr
uvecajdesetice:
desetice=desetice+1
if desetice>9 then desetice=0
b0=0
zadatibr = jedinice + desetice*10 + stotine *100
goto prikazibr
uvecajstotine:
stotine=stotine+1
if stotine>9 then stotine=0
b0=0
zadatibr = jedinice + desetice*10 + stotine *100
goto prikazibr
prikazibr:
for i = 0 to i = 4 step 1  ;da bi se cifre bolje videle :)
lookup jedinice,[$3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6F],maskiranacifra
portb = maskiranacifra
high portc.5
pause 1
low portc.5 
lookup desetice,[$3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6F],maskiranacifra
portb = maskiranacifra
high portc.6
pause 1
low portc.6 
lookup stotine,[$3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6F],maskiranacifra
portb = maskiranacifra
high portc.7
pause 1
low portc.7
NEXT i
goto main
start:
if brojac<zadatibr then
high portc.4
else
low portc.4
goto main
endif
if portc.0 = 0 AND temp = 1 then brojac = brojac +1
if portc.0 = 1 then temp = 1
if portc.0 = 0 then temp = 0
Button porta.2,0,1,1,B0,1,pauza
Button porta.1,0,1,1,B0,1,stopp
b0=0
goto start
pauza:
low portc.4
Button porta.0,0,1,1,B0,1,start
Button porta.1,0,1,1,B0,1,stopp
b0=0
goto pauza
stopp:
low portc.4
b0=0
brojac=0
goto main
  
end
http://img822.imageshack.us/img822/460
Last edited by milanbp on 28-09-2010, 20:07, edited 1 time in total.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7874
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: brojac od 0 do 999

Post by pedja089 »

Najbolje je da se obratis onome ko ti je dao kod.
A semu nisi postavio...
milanbp
Pocetnik na forumu
Pocetnik na forumu
Posts: 34
Joined: 27-02-2010, 15:41

Re: brojac od 0 do 999

Post by milanbp »

pa obratio sam se....ali slabo nesto ide sve to...evo seme iznad,zezao me net
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7874
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: brojac od 0 do 999

Post by pedja089 »

Kod bas i nije lepo napisan...
Tako da nisam siguran da razumem sta radi...
Link ne radi...
milanbp
Pocetnik na forumu
Pocetnik na forumu
Posts: 34
Joined: 27-02-2010, 15:41

Re: brojac od 0 do 999

Post by milanbp »

http://yfrog.com/mssemabrojacj
evo link opet,valjda ce raditi sad...
User avatar
Kizo
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 387
Joined: 01-11-2009, 22:40
Location: Hrvatska

Re: brojac od 0 do 999

Post by Kizo »

Kako slabo ide, vidim da dosta dobro ide, ili je ova tema puka slučajnost?
http://www.elitesecurity.org/t410521-Pic-brojac-do
milanbp
Pocetnik na forumu
Pocetnik na forumu
Posts: 34
Joined: 27-02-2010, 15:41

Re: brojac od 0 do 999

Post by milanbp »

pa nekako slabo jer se vrtim u krug....ne kazem da nece niko da mi pomogne vec da sam zbunjen,jer ovo je jos uvek sve novo za mene,a stvarno me zanima ali ne mogu da shatim te komande tek tako
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7874
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: brojac od 0 do 999

Post by pedja089 »

Zato se program pise uvek od pocetka. Tako ces znati tacno sta si napisao...
Tako da uzmi sam korakorak po korak, pa ces videti i nauciti kako treba. Za smernice smo uvek tu...
User avatar
Drago_Zg
Odlično uznapredovao
Odlično uznapredovao
Posts: 583
Joined: 16-09-2008, 19:40

Re: brojac od 0 do 999

Post by Drago_Zg »

Ovdje, imaš kompletan projekat sa ispravnim kodom i to sa assemblerom ili HEX:


http://www.elektronika.ba/forum/viewtop ... f=9&t=7375" onclick="window.open(this.href);return false;
[URL=https://meettomy.site]Beautiful Womans in your city[/URL]
milanbp
Pocetnik na forumu
Pocetnik na forumu
Posts: 34
Joined: 27-02-2010, 15:41

Re: brojac od 0 do 999

Post by milanbp »

Hvala Drago_Zg!Ukoliko neuspem sa ovom mojom semom, sigurno pravim taj tvoj brojac! :)
Jer imam vec ovaj pic 16f76, spojio sam elemente po njoj,a i voleo bih da skontam kod za ovu moju, da mi bude lakse u buducnosti za neke druge stvari. Imam pocetni deo koda koji je ok i radi savrseno!Sad treba da napravim petlje za tastere i ocitavanje impulsa na rc0 i gasenje releja kada se izjednace vrednosti podesene i "odbrojane" vrednosti impulsima
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7874
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: brojac od 0 do 999

Post by pedja089 »

Pa napravi :wink: Taj ulaz ti nije nista drugo nego obican taster. I trudi se da pises komentare, da nama bude lakse, a posle i tebi.
milanbp
Pocetnik na forumu
Pocetnik na forumu
Posts: 34
Joined: 27-02-2010, 15:41

Re: brojac od 0 do 999

Post by milanbp »

Evo pocetka koda koji radi,oznacio sam deo koji sam ubacio, pa jel bi moglo to tako da radi?

Code: Select all

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2005 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 1.1.2005                                          *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
b0 var byte
temp var bit
zadatibr var word
brojac var word
Jedinice     var byte
Desetice     var byte
Stotine     var byte
CntJedinice    var    byte    ' brojac stisnutog tastera za jedinice
CntDesetice    var    byte
CntStotine    var    byte
CifZaPrikaz    var    byte
KeyJedPusten    var    bit
KeyDesPusten    var    bit
KeyStotPusten    var    bit
KeyJedStis    var    bit        ' taster za jedinice debaunsovan i kazemo da je stisnut
KeyDesStis    var    bit
KeyStotStis    var    bit

KeyJedinice    var    porta.3
KeyDesetice    var    porta.4
KeyStotine    var    porta.5
KatodaJed    var    portc.5
KatodaDes    var    portc.6
KatodaStot    var    portc.7

    
    DebCnt    con    3
    True    con    1
    False    con    0
    TRISA = 255        ' svi ulazi
    TRISB = 0        ' svi izlazi
    TRISC=%00000001
    ADCON1 = 7        ' svi digitalni

    clear
    keyjedpusten = true
    keydespusten = true
    keystotpusten = true
Main:
    repeat

    gosub Debounce
    gosub odluke
    
    cifzaprikaz = jedinice
    gosub prikazibr
    katodajed = true
    pause 5
    katodajed = false
    cifzaprikaz = desetice
    gosub prikazibr
    katodades = true
    pause 5
    katodades = false
    cifzaprikaz = stotine
        gosub prikazibr       
    katodastot = true
    pause 5
    katodastot = false    
    goto main 

Debounce:
    if keyjedinice = 0 then
      cntjedinice = cntjedinice + 1
      else
      cntjedinice = 0
      keyjedstis = false
    endif
    
    if cntjedinice >= debcnt then
      keyjedstis = true
    endif  
    
    if keydesetice = 0 then
      cntdesetice = cntdesetice + 1 
      else
      cntdesetice = 0
      keydesstis = false
    endif
    
    if cntdesetice >= debcnt then
      keydesstis = true
    endif  
    
    if keystotine = 0 then
      cntstotine = cntstotine + 1
      else
      cntstotine = 0
      keystotstis = false
    endif
    
    if cntstotine >= debcnt then
      keystotstis = true
    endif      
      
    return
    
Odluke:
OdlJedinice:
    if keyjedstis = true then
      if keyjedpusten = true then
        keyjedpusten = false
        jedinice = jedinice + 1
        if jedinice > 9 then jedinice = 0
      endif
      else
      keyjedpusten = true      
    endif

OdlDesetice:    
    if keydesstis = true then
      if keydespusten = true then
            keydespusten = false     
        desetice = desetice + 1
        if desetice > 9 then desetice = 0
      endif
      else
      keydespusten = true
    endif

OdlStotine:    
    if keystotstis = true then
      if keystotpusten = true then
            keystotpusten = false 
        stotine = stotine + 1
        if stotine > 9 then stotine = 0
      endif
      else
      keystotpusten = true
    endif
    
   return

PrikaziBr:
        
        LookUp cifzaprikaz, [$3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6F], PORTB 
        until porta.0=0    ' odavde sam pisao ja tj da izadjem iz petlji za podesavanje broja (taster start)

start:
    if porta.1=0 then pausee
    if porta.2=0 then stopp
    high portc.4                    'pali relej
    goto start
pausee:
    low portc.4                       'gasi relej
    if porta.0=0 then start
    if porta.1=0 then pausee
    goto pausee
stopp:
    low portc.4    'gasi relej i vraca se na pocetak programa
    goto main
    end
Post Reply