ramsesrr Postat August 6, 2009 Partajează Postat August 6, 2009 Nu imi merge simularea in proteus si nu inteleg de ce//shiftare.la dreapta ramane 1-ul led aprins.la siftare spre stanga ramane led-ul 8 aprins =))#include //definirea variabilelorvoid initializare (void){TRISB = 0x00; //PORT B DE IESIRE}unsigned int i=0,j=0;unsigned int d[]={0x01,0x03,0x05,0x09,0x11,0x21,0x41,0x80};unsigned int e[]={0xc0,0xa0,0x90,0x88,0x84,0x82};void main(void){initializare();while(1){for (j=0;j<=7;j++){ PORTB =d[j]; for(i=0;i<20000;i++);}for(j=0;j<=5;j++){ PORTB = e[j];for(i=0;i<20000;i++);}}} Link spre comentariu
Mikrosha Postat August 23, 2009 Partajează Postat August 23, 2009 unsigned int i=0,j=0; int il ia ca int8, deci valoarea maxima este 255. Din cauza asta contorul nu poate ajunge niciodata la 20.000, si nu mai poate sa iasa din for-ul for(i=0;i<20000;i++);Inlocuieste int8 cu int16, sau cu long, depinde ce-ti accepta compilatorul. (nu stiu ce compilator ai). La mine a mers asa! Si nu uita sa dezactivezi WDT-ul din flaguri, config word sa fie 0x3F3B . usor pe langa: Cel mai bine pentru shiftare poti folosi comenzile << si >>. a << 1 //deplaseaza pe a la dreapta cu o pozitie. Daca este 0b00010000, devine 0b00100000. Si delay-ul se poate face mai normal cu intrerupere de la timer0. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum