[ deniah @ 07.05.2009. 20:54 ] @
Kada ovaj kod upisem u PIC16F877A radi, medjutim kada probam da ga pokrenem na 16F628A, nece. Gdje grijesim?


Code:

    i var byte
    B0 var byte
    
    TRISB = $00  'Postavi sve pinove porta B kao izlazne
Pocetak:

    b0 = 144     'Spoljne
    PORTB = b0
    pause 1000
    
    b0 = 72      'Srednje
    PORTB = b0
    pause 1000
    
    b0 = 36      'Unutrasnje
    PORTB = b0
    pause 1000
    
    b0 = 0       'Nijedna
    PORTB = b0
    pause 500
    
    b0 = 252     'Sve
    PORTB = b0
    pause 1000
    
    b0 = 0       'Nijedna
    PORTB = b0
    pause 500
    
    b0 = 252     'Sve
    PORTB = b0
    pause 1000
    
    b0 = 216     'Spoljna i srednja
    PORTB = b0
    pause 1000
    
    b0 = 144     'Spoljna
    PORTB = b0
    pause 1000
    
    b0 = 0       'Nijedna
    PORTB = b0
    pause 1000
    
    goto pocetak
    
    end
[ Horvat @ 07.05.2009. 21:34 ] @
prvo pomislih da je pisan u assembler-u kod,pa da je pisan u c-u...sada nisam siguran...[tj siguran sad da nije u c-u,ali ne i da je u as...]

hajde nek "bude" da je u assembler-u [ti me ispravi]

prvo,ne treba ti
Code:
i var byte

jer ne koristis to

drugo ,promeni "B0" u "b0" tj. veliko b u malo b [mada ne verujem da to ima neku bitnu ulogu,ne secam se da li je case sensitive]

trece
Code:
TRISB = 0x00


cetvrto ,da ne trazim sada datasheet,postoji komanda "pause"?

p.s. ako je u pitanju assembler [a tako mi najvise lici],i ako su brojevi posle znaka jednakosti decimalni,fali ti tacka ,da pojasnim,umesto npr
Code:
b0 = 144 

treba
Code:
b0 = .144 



btw compiler redovno odradi sve? a da probas u nekom "simulatoru"? ili cak i u mplab da vidis da li radi...da sad ne objasnjavam kako se radi u istom
[ deniah @ 07.05.2009. 23:54 ] @
Program je u Pic Basic-u.
[ Horvat @ 08.05.2009. 07:06 ] @
aha,moja greska izvinjavam se
basic bas ni ne poznajem,ali koliko se secam,nije osetljiv na velika-mala slova,takod a "B0" ne bi trebalo da pravi problema...

sve u svemu,probaj da ti je sve jednako napisano [b0,a ne i B0, Pocetak,a ne i pocetak...]

i dopisi
Code:

clear

na pocetak koda

i sve to isprobaj u nekom pic basic compiler-u [mislim da i mikroelektronika ima jedan]

edit:
probao sam da ovo odradim u mikrobasic,medjutim...izmedju ostalog,ne postoji pause naredba tamo

no nije to bitno,uspeo sam [jedva] da ga "nateram" da prihvati "b0" za varijablu,stim da sam je nazvao "be0" [jer je b0 vec definisana samim mikrokontrolerom],i umesto
Code:

be0 var byte

prihvatio je samo
Code:

 dim be0 as byte



usput sam gledao ovu knjigu

i sve mi se cini da je problem u compiler-u,tj mikrobasic-u :(

mogu ti napisati ovaj program u c-u,ako zelis

[Ovu poruku je menjao Horvat dana 08.05.2009. u 08:48 GMT+1]

edit:
evo ipak code,mrzilo me cekati odgovor :),javi da li hoces hex
Code:

void main() {

    do{
    
int b0,i=1000,j=500;

    TRISB = 0x00;
    do{
    b0 = 144;     //Spoljne
    PORTB = b0;
    i-- ;
    }
    while(i!=0);

    i=1000;

    do{
    b0 = 72;      //Srednje
    PORTB = b0;
    i--;
    }while(i!=0);

    i=1000;

    do{
    b0 = 36;      //Unutrasnje
    PORTB = b0;
    i--;
    }while(i!=0);

    i=1000;
    
    do{
    b0 = 0;       //Nijedna
    PORTB = b0;
    i--;
    }while(i!=0);

    i=1000;

    do{
    b0 = 252;     //Sve
    PORTB = b0;
    i--      ;
    }while(i!=0);

    i=1000;

    do{
    b0 = 0    ;   //Nijedna
    PORTB = b0 ;
    j--         ;
    }while(j!=0);
    
    j=500;

    do{
    b0 = 252     ;//Sve
    PORTB = b0 ;
    i--         ;
    }while(i!=0) ;

    i=1000;

    do{
    b0 = 216  ;   //Spoljna i srednja
    PORTB = b0 ;
    i--         ;
    }while(i!=0);

    i=1000;

    do{
    b0 = 144  ;   //Spoljna
    PORTB = b0 ;
    j--         ;
    }while(j!=0);
    j=500;

    do{
    b0 = 0     ;  //Nijedna
    PORTB = b0  ;
        i--      ;
    }while(i!=0);
    
    i=1000;


 }while(1);


}


[Ovu poruku je menjao Horvat dana 08.05.2009. u 09:03 GMT+1]
[ veselinovic @ 08.05.2009. 17:36 ] @
Citat:
deniah: Kada ovaj kod upisem u PIC16F877A radi, medjutim kada probam da ga pokrenem na 16F628A, nece. Gdje grijesim?



[/code]


Glupo pitanje, ali kad kompajliras program jel mu kazes za koji kontroler to radis?
Bejzik je isti, ali se hex razlikuje zavisno koji kontroler je u pitanju. Inace treba da radi.
[ deniah @ 08.05.2009. 18:26 ] @
Citat:
veselinovic: Glupo pitanje, ali kad kompajliras program jel mu kazes za koji kontroler to radis?
Bejzik je isti, ali se hex razlikuje zavisno koji kontroler je u pitanju. Inace treba da radi.


Naravno. Maloprije sam probao da podesim interni oscilator i tako hoce, a kada podesim XT i stavim kristal tada nece.

Citat:
Horvat:  ,mrzilo me cekati odgovor :),javi da li hoces hex
[code][/b]][/sub]


Hvala ti na trudu. Ne treba mi hex jer ovo nije za neku posebnu namjenu.
[ Sepa011 @ 08.05.2009. 19:00 ] @
Axm...

Cudi me da hoce da ti radi sa internim oscilatorom, a sa eksternim nece.
Kako si podesio konfiguracione bitove? Koliki ti je kristal?

Ne vidim uopste zasto ovakvo prosto programce nece da ti radi
[ stanticm @ 08.05.2009. 22:42 ] @
Nigde ne stoji da je CMCON=7 za p16f628...
[ deniah @ 08.05.2009. 23:37 ] @
Tip oscilatora XT, MCLRE=ON, PWRTE=ON, WDTE=ON. Kristal je 4MHz.
[ Sepa011 @ 09.05.2009. 08:20 ] @
Xe xe xe

Stavi WDT=OFF, to ti pravi 'malu decu'

A uz to malo morasa i da se upoznas za kontrolerom kojki hoces da koristic (datasheet)
[ deniah @ 10.05.2009. 00:44 ] @
Sada je ok.Hvala.
[ Sepa011 @ 10.05.2009. 18:03 ] @
Citat:
deniah: Sada je ok.Hvala.

sta zna da uradi mali WDT