Sari la conținut

Pic prajit?


crazydream
 Share

Postări Recomandate

Salut,

am si eu 2 intrebari poate prostesti pentru unii: Eu unu pana acum am programat in c si vreau sa ma apuc sa programez pic-uri.

Ideea e ca mi-am luat un programator si un pic 16f877

L=am progamat portul c sa fie output-ul adica i-am dat valoarea 0x00.Am bagat soft-ul in programator, l-am scris pe procesor, am testat softul pe simulatoare si era ok.

Am alimentat pic-ul la 5 v am masurat un pin din portul c imi scotea 5 v si dupa o secunda 0 pentru ca ii pusesem delay 1 sec. Adica cred ca mergea :)).

Din greseala a doua oara cand am incercat iar am conectat pic-ul dar am inversat firele adica am pus din greseala plusul(vdd) la minus si vss-ul la plus

dupa cele intamplate l-am schimbat am incercat iar sa masor pe pinii din portul c si imi dadea 0 incontinuu.

L-am bagat in programator si i-am dat sa citeasca read..., si apoi sa rescrie programul ( fisier.HEX) si mergea sa il scriu dar cand il masuram iar nu scoatea nimic pe portul c.

Intrebarea mea: S-a prajit?

Desi ma descurc cu programarea sunt praf in electronica si as avea si eu nevoie de la voi de o schema pentru un led care sa pot sa il aprind si sa il sting la un anumit interval.

Mulktumesc frumos!!! pls help me

Editat de crazydream
Link spre post
Distribuie pe alte site-uri

Incearca sa testezi PIC-ul cu urmatoarea schema:

post-6950-002432900 1289482011_thumb.jpg

si cu acest compilator:

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en542849

 

Mai jos ai programul care merge adaptat pe orice PIC modificand corespunzator linia:

//16F84 configuration 
__CONFIG(0x3FF1);

 

Si programul test:

//include file
#include <pic.h>

//16F84 configuration 
__CONFIG(0x3FF1);

//portb  macro
#define PORTBIT(adr, bit)	((unsigned)(&adr)*8+(bit))

//portb pin assignment
static bit LED0 @ PORTBIT(PORTB, 0);
static bit LED1 @ PORTBIT(PORTB, 1);
static bit LED2 @ PORTBIT(PORTB, 2);
static bit LED3 @ PORTBIT(PORTB, 3);
static bit LED4 @ PORTBIT(PORTB, 4);
static bit LED5 @ PORTBIT(PORTB, 5);
static bit LED6 @ PORTBIT(PORTB, 6);
static bit LED7 @ PORTBIT(PORTB, 7);

//global variables
unsigned int i;		//for loop pause
unsigned int c;		//for loop event loop

//functions
void pause_action();		//pause
void blink_redgreen();		//blink red then green
void blink_baf();		//blink red and green back and forth
void alt_blink();		//every other red then green
void blink_sequence();		//blinks red one at a time
//end functions

//main function
void main(void)
{	
TRISB = 0x00;
PORTB = 0b00000000;	

while(1)
{

	blink_redgreen();
	blink_baf();
	alt_blink();
	blink_sequence();
	
};

}
//end main function

void pause_action()
{

for(i=0; i<4000; i++);
for(i=0; i<4000; i++);
for(i=0; i<4000; i++);
for(i=0; i<4000; i++);
for(i=0; i<4000; i++);
for(i=0; i<4000; i++);

};

void blink_redgreen()
{

for(c=0; c<10; c++)
{
		
	PORTB = 0b10101010;
	pause_action();			

	PORTB = 0b01010101;
	pause_action();
					
};

};

void blink_baf()
{

for(c=0; c<10; c++)
{

	PORTB = 0b10100101;
	pause_action();
					
	PORTB = 0b01011010;
	pause_action();
					
};

};

void alt_blink()
{

for(c=0; c<10; c++)
{

	PORTB = 0b10011001;
	pause_action();
					
	PORTB = 0b01100110;
	pause_action();
					
};

};

void blink_sequence()
{

for(c=0; c<10; c++)
{

	PORTB = 0b10010101;
	pause_action();
		
	PORTB = 0b01100101;
	pause_action();
		
	PORTB = 0b01011001;
	pause_action();
		
	PORTB = 0b01010110;
	pause_action();
		
};

};

 

Succes!

Link spre post
Distribuie pe alte site-uri

Daca solutia propusa mai sus vi se pare... complexa, atunci incercati sa testati microcontrolerul cu ajutorul acestui hex din arhiva:

Test PIC16F877.rar

In schema folositi un Q=8MHz si conectati niste leduri cu diam. de 3mm in serie cu niste rezistente de 470 Ohm la iesirea portului C, pe care il suspectati ca fiind defect. Daca portul C functioneaza, atunci ar trebui ca ledurile conectate la acel port sa se inchida /deschida la o secunda.

 

Numai Bine

Link spre post
Distribuie pe alte site-uri

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
 Share

  • Navigare recentă   0 membri

    Nici un utilizator înregistrat nu vede această pagină.

×
×
  • Creează nouă...

Informații Importante

Folosim cookie-uri și tehnologii asemănătoare pentru a-ți îmbunătăți experiența pe acest website, pentru a-ți oferi conținut și reclame personalizate și pentru a analiza traficul și audiența website-ului. Înainte de a continua navigarea pe www.tehnium-azi.ro te rugăm să fii de acord cu: Termeni de Utilizare.