[ MarkoBalkan @ 28.12.2007. 20:55 ] @
Code:

#include <pic.h>
#include <math.h>
#include "delay.h"

__CONFIG(XT&PROTECT&PWRTEN&WDTDIS);

void main(void){
        int i,j;
        PORTA=0;
        TRISB=0;
        TRISA=0;    
        PORTB=0;
        GIE=0;
while(2)
    {
    if(PORTB<128)
        {
        for(i=1;i<256;i)
            {
                DelayMs(1);
                PORTB=i;
                i=i*2;
            }
        }
        else
        {    
        
        for(j=64;j>0;j)    
            
            {
            
                DelayMs(1);
                PORTB=j;
                j=j/2;
            
            }    
        }

    
    }

}



ovo je kod koji radi slijedeće:
kod prve for petlje, pali i gasi pinove redom.pali 1, zatim, gasi 1, pali 2 itd...
a ovaj dugi dio bi trebao raditi obrnzto.
kad dođe do kraja ovaj ide prema naprijed.sa paljenjem i gašenjem.tj. prema prvom pinu.
prvi dio radi odlično.
problem nastaje u zadnjem redu j=j/2;
kada dođe prvi puta do zadnjeg reda, nakon toga skoči u dissembly listing i tamo se zaglavi.
radi se o hi-tech kompajleru.
možda se tako ne smije pisati?

[ _str_ @ 28.12.2007. 21:24 ] @
Kada je portb=128 petlja nema uslov za if(portb<128)?
[ MarkoBalkan @ 28.12.2007. 21:44 ] @
sjebo se.hvala.


ali nije to na stvari.
sada sam probao ovako i opet ode u assembling listing i vrti se u beskonačnoj petlji.
problem je kod ovog dijeljenja .

Code:


#include <pic.h>
#include <math.h>
#include "delay.h"

__CONFIG(XT&PROTECT&PWRTEN&WDTDIS);

void main(void){
        int i,j,k;
        PORTA=0;
        TRISB=0;
        TRISA=0;    
        PORTB=128;
        GIE=0;
while(1)
    {

    
    
    
        
        for(j=128;j>0;j)    
            {
                DelayMs(1);
                PORTB=j;
            
                j=j/2;    
            }    
    }
    
}
[ tomam @ 28.12.2007. 22:16 ] @
Napisi binarno 256 i 128 ?
[ MarkoBalkan @ 28.12.2007. 22:20 ] @
128=10000000
255=11111111

množenje radi i u prvom programu prva petlja radi ok.
problem je kod dijeljenja.


[Ovu poruku je menjao MarkoBalkan dana 28.12.2007. u 23:43 GMT+1]
[ obranko @ 29.12.2007. 00:26 ] @
Pozdrav,

umesto j = j/2 napisi j >>= 1
i umesto int i,j,k napisi unsigned int i,j,k
pa javi sta se dogadja
[ MarkoBalkan @ 29.12.2007. 10:29 ] @
puno hvala.
radi.