Sari la conținut
ELFORUM - Forumul electronistilor

PIC16F876


Vizitator Anubis

Postări Recomandate

Vizitator Anubis

As vrea sa stiu si eu mai multe despre acest microcontroler . Poate cineva sa ma ajute cu ceva documentaii sau exemple de programe in c pt acest pic ? am un programator pt acesta. sunt incepator . va multumesc

Link spre comentariu
  • Răspunsuri 19
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Vizitator Anubis

ok mersi mult si da sunt incepator de tot stiu c++ dar n-am idee cum se manaca PIC-urile asa ca poate o sa mai am nevoie de ajutor daca nu te deranjaza , sa mai arunci cate o priviree pe aici poate ma mai poti ajuta cu cate ceva . Mersi

Link spre comentariu

nu vrea nimeni sa ma ajute

Asta-i chiar culmea! Intreaba nene ceva mai concret! Daca ar fi sa toarne cineva aici toata documentatia care se gaseste pe tema lui F876, n-ar mai fi loc in FTP. Trebuie sa citesti. Invatatul este o activitate individuala, nu colectiva. Chiar daca ti-ar scrie cineva aici tot ceea ce stie despre F876, tot ar trebui sa citesti. RTFM! - cum spun linuxistii.Uita-te si tu cam ce si mai ales cum intreaba cei care au primit raspuns si vezi daca e vreo asemanare cu ceea ce intrebi tu.Cirip
Link spre comentariu

http://forum.izatech.ro/viewtopic.php?t=2619

 

Programatoare pentru el. Daca ai citit acea carte ti-ai dat seama ca trebuie programat.

 

http://www.picant.com/c2c/download.html

 

Compilatorul acesta mi s-a parut mai eficient. Este beta deci ai rabdare cu el. Iti ofera un simulator frumos si exemple muuulte.

 

Cum mai zicea cineva pe forum: "Google este prietenul tau!"

 

Ia-ti "datashitul" de la producator si citeste despre procesor. Porneste cu leduri(activezi dezactivezi biti din porturi si faci jocuri de lumina) ca exemplu si continui cu timerul intern, watchdog, generare de sunet, LCD, USART...

 

Prima oara cand m-am apucat de PIC-uri (acum un an) am ars un 16F84A si m-am lasat(Fum frate! :lol: ). Apoi in vara m-am apucat iar... si acum sunt la periferice(USART, paralel...) si trebuie sa impac perifericele cu BAC-ul(Nu e prea greu).

 

Hai Bafta! 8)

Link spre comentariu

se pare ca nu se mai uita nimeni pe aici sau nu vrea nimeni sa ma ajute ... asa ca stergeti topicul ca e in plus .

Fara suparare, dar daca mai pui un post de felul asta ti le sterg pe toate. Ce-i aia ca "nu vrea nimeni sa te ajute"? Vrei sa scrie cineva un roman despre PIC special pentru tine? Iei frumusel manualul si incepi sa-l citesti. Cauta tutorial-uri pe net, ca d-aia ai ditamai netu la dispozitie. Forumul NU este din categoria "mura-n gura", e pentru rezolvarea unor probleme deosebite. RTFM :evil:
Link spre comentariu

se pare ca nu se mai uita nimeni pe aici sau nu vrea nimeni sa ma ajute ... asa ca stergeti topicul ca e in plus .

Fara suparare, dar daca mai pui un post de felul asta ti le sterg pe toate. Ce-i aia ca "nu vrea nimeni sa te ajute"? Vrei sa scrie cineva un roman despre PIC special pentru tine? Iei frumusel manualul si incepi sa-l citesti. Cauta tutorial-uri pe net, ca d-aia ai ditamai netu la dispozitie. Forumul NU este din categoria "mura-n gura", e pentru rezolvarea unor probleme deosebite. RTFM :evil:
Offtopic: Nu fii ma rau. Desi ai dreptate nu trebuie abordat omul asa.
Link spre comentariu

As completa cu faptul ca ar fi si ptr mura in gura, dar cu conditia ca cel interesat sa arate putina preocupare, nu abordari de genul: as vrea sa ma apuc, dar nu stiu ce sa fac..., dati-mi voi idei, spuneti-mi in 2 vorbe ca n-am chef sa citesc...Sau chestia care ma oftica cel mai tare e cand te straduiesti sa il ajuti pe unul, il intrebi cateva detalii si nu mai raspunde, nici macar un multumesc sau am lasat-o balta nu mai zice; te lasa cu ochii in soare si te intrebi: pentru ce mi-am pierdut timpul?Cirip

Link spre comentariu
Vizitator Anubis

imi pare rau baieti , recunosc , aveti dreptate deci am citit data sheetul , ceva ceva am inteles eu de acolo ... mi-am luat PICC si ICPROG ,mi-am facut un montaj (sa nu radeti) un buton, un led, si vreau ca in momentul cand butonul este apasat sa aprind ledul ... am scris eu un program dar nush daca e bine . arata cam asa :

 

 

#include <16F876.H>#fuses PROTECT, XT, NOWDT, NOLVP#use delay (clock = 4000000)byte b1;void main(){   disable_interrupts(GLOBAL);   set_rtcc(0);   setup_counters(RTCC_INTERNAL, RTCC_DIV_64);   enable_interrupts(RTCC_ZERO);////// end TMR0   enable_interrupts(GLOBAL);  b1 = input(PIN_C0); // citesc statusul butonului   if (b1 == 1)  {   output_high(PIN_B6); // aprind led  }  if (b1 == 0)  {   output_low(PIN_B6); // sting led  }} 
Link spre comentariu
Vizitator alex

#define PIC16F876#include <pic.h>__CONFIG(WDTDIS & PWRTEN & XT & UNPROTECT & DEBUGDIS & BORDIS & LVPDIS & WRTDIS);#define PORTBIT(adr, bit) ((unsigned)(&adr)*8+(bit))static bit buton @ PORTBIT(PORTC, 0);static bit led @ PORTBIT(PORTB, 6);main(void){	TRISB=0x00; // portul B setat ca iesiri	TRISC=0xFF; //portul C setat ca intrari	PORTB=0;	for (; ;)	{		if (button==1)			led=1;		else			led=0;	}}
sau in ciclul for inlocuiesti tot if-ul cu

led=buton;
Link spre comentariu
Anubis, e OK, nici eu nu am folosit un limbaj potrivit situatiei. Scuze si din partea mea. In ceea ce priveste programul, e foarte important sa ne spui exact ce vrei sa faca si ce compilator folosesti (IAR cumva?). alex a dat o varianta care nu e chiar echivalenta cu a ta. La tine PIC-ul citeste o singura data starea butonului si seteaza LED-ul. Apoi trebuie reinitializat pentru a executa din nou programul. Programul lui alex face citire buton/setare led intr-o bucla infinita. Asa ca depinde foarte mult ce vrei sa faci. Chiar si cand e vorba doar despre un LED si un intrerupator :)
Link spre comentariu
Vizitator Anubis

pai compiler folosesc PCW Compiler ... cat despre program eu vreau sa faca chestia aia intr-o bucla infinita.

headerul arata cam asa :

//////// Standard Header file for the PIC16F876 device ////////#device PIC16F876#nolist/////////////////////////////// I/O definitions for INPUT() and OUTPUT_xxx()#define PIN_A0  40#define PIN_A1  41#define PIN_A2  42#define PIN_A3  43#define PIN_A4  44#define PIN_A5  45#define PIN_B0  48#define PIN_B1  49#define PIN_B2  50#define PIN_B3  51#define PIN_B4  52#define PIN_B5  53#define PIN_B6  54#define PIN_B7  55#define PIN_C0  56#define PIN_C1  57#define PIN_C2  58#define PIN_C3  59#define PIN_C4  60#define PIN_C5  61#define PIN_C6  62#define PIN_C7  63/////////////////////////////// Useful defines#define FALSE 0#define TRUE 1#define BYTE int#define BOOLEAN short int#define getc getch#define getchar getch#define puts(s) {printf(s); putchar(13); putchar(10);}#define putc putchar/////////////////////////////// Constants used for RESTART_CAUSE()#define WDT_FROM_SLEEP  0#define WDT_TIMEOUT     8#define MCLR_FROM_SLEEP 16#define NORMAL_POWER_UP 24/////////////////////////////// Constants used for SETUP_COUNTERS()#define RTCC_INTERNAL   0#define RTCC_EXT_L_TO_H 32#define RTCC_EXT_H_TO_L 48#define RTCC_DIV_2      0#define RTCC_DIV_4      1#define RTCC_DIV_8      2#define RTCC_DIV_16     3#define RTCC_DIV_32     4#define RTCC_DIV_64     5#define RTCC_DIV_128    6#define RTCC_DIV_256    7#define WDT_18MS        8#define WDT_36MS        9#define WDT_72MS       10#define WDT_144MS      11#define WDT_288MS      12#define WDT_576MS      13#define WDT_1152MS     14#define WDT_2304MS     15#define L_TO_H              0x40#define H_TO_L                 0#define RTCC_ZERO           0x0B20    // Used for ENABLE/DISABLE INTERRUPTS#define INT_RTCC            0x0B20    // Used for ENABLE/DISABLE INTERRUPTS#define RB_CHANGE           0x0B08    // Used for ENABLE/DISABLE INTERRUPTS#define INT_RB              0x0B08    // Used for ENABLE/DISABLE INTERRUPTS#define EXT_INT             0x0B10    // Used for ENABLE/DISABLE INTERRUPTS#define INT_EXT             0x0B10    // Used for ENABLE/DISABLE INTERRUPTS#define GLOBAL              0x0BC0    // Used for ENABLE/DISABLE INTERRUPTS///////////////////////////////////// Constants used for Timer1 and Timer2#define T1_DISABLED         0#define T1_INTERNAL         5#define T1_EXTERNAL         7#define T1_EXTERNAL_SYNC    3#define T1_CLK_OUT          8#define T1_DIV_BY_1         0#define T1_DIV_BY_2         0x10#define T1_DIV_BY_4         0x20#define T1_DIV_BY_8         0x30#byte   TIMER_1_LOW=        0x0e#byte   TIMER_1_HIGH=       0x0f#define T2_DISABLED         0#define T2_DIV_BY_1         4#define T2_DIV_BY_4         5#define T2_DIV_BY_16        6#byte   TIMER_2=            0x11#define INT_TIMER1          0x8C01    // Used for ENABLE/DISABLE INTERRUPTS#define INT_TIMER2          0x8C02    // Used for ENABLE/DISABLE INTERRUPTS//////////////////////////////////// Constants used for SETUP_CCP1()#define CCP_OFF                         0#define CCP_CAPTURE_FE                  4#define CCP_CAPTURE_RE                  5#define CCP_CAPTURE_DIV_4               6#define CCP_CAPTURE_DIV_16              7#define CCP_COMPARE_SET_ON_MATCH        8#define CCP_COMPARE_CLR_ON_MATCH        9#define CCP_COMPARE_INT                 0xA#define CCP_COMPARE_RESET_TIMER         0xB#define CCP_PWM                         0xC#define CCP_PWM_PLUS_1                  0x1c#define CCP_PWM_PLUS_2                  0x2c#define CCP_PWM_PLUS_3                  0x3clong CCP_1;#byte   CCP_1    =                      0x15#byte   CCP_1_LOW=                      0x15#byte   CCP_1_HIGH=                     0x16#define INT_CCP1            0x8C04    // Used for ENABLE/DISABLE INTERRUPTS//////////////////////////////////// Constants used for SETUP_CCP2()long CCP_2;#byte   CCP_2    =                      0x1B#byte   CCP_2_LOW=                      0x1B#byte   CCP_2_HIGH=                     0x1C#define INT_CCP2            0x8D01    // Used for ENABLE/DISABLE INTERRUPTS//////////////////////////////////// Constants used in SETUP_SSP()#define SPI_MASTER       0x20#define SPI_SLAVE        0x24#define SPI_L_TO_H       0#define SPI_H_TO_L       0x10#define SPI_CLK_DIV_4    0#define SPI_CLK_DIV_16   1#define SPI_CLK_DIV_64   2#define SPI_CLK_T2       3#define SPI_SS_DISABLED  1#define INT_SSP             0x8C08    // Used for ENABLE/DISABLE INTERRUPTS#define SPI_SAMPLE_AT_END 0x8000#define SPI_XMIT_L_TO_H  0x4000#define INT_RDA             0x8C20    // Used for ENABLE/DISABLE INTERRUPTS#define INT_TBE             0x8C10    // Used for ENABLE/DISABLE INTERRUPTS///////////////////////////////////// Constants used for SETUP_ADC_PORTS()#define NO_ANALOGS             0x86         // None#define ALL_ANALOG             0x80         // RA0 RA1 RA2 RA3 RA5 RE0 RE1 RE2 Ref=Vdd#define ANALOG_RA3_REF         0x81         // RA0 RA1 RA2 RA5 RE0 RE1 RE2 Ref=RA3#define A_ANALOG               0x82         // RA0 RA1 RA2 RA3 RA5 Ref=Vdd#define A_ANALOG_RA3_REF       0x83         // RA0 RA1 RA2 RA5 Ref=RA3#define RA0_RA1_RA3_ANALOG     0x84         // RA0 RA1 RA3 Ref=Vdd#define RA0_RA1_ANALOG_RA3_REF 0x85         // RA0 RA1 Ref=RA3#define ANALOG_RA3_RA2_REF              0x88   // RA0 RA1 RA5 RE0 RE1 RE2 Ref=RA2,RA3#define ANALOG_NOT_RE1_RE2              0x89   // RA0 RA1 RA2 RA3 RA5 RE0 Ref=Vdd#define ANALOG_NOT_RE1_RE2_REF_RA3      0x8A   // RA0 RA1 RA2 RA5 RE0 Ref=RA3#define ANALOG_NOT_RE1_RE2_REF_RA3_RA2  0x8B   // RA0 RA1 RA5 RE0 Ref=RA2,RA3#define A_ANALOG_RA3_RA2_REF            0x8C   // RA0 RA1 RA5 Ref=RA2,RA3#define RA0_RA1_ANALOG_RA3_RA2_REF      0x8D   // RA0 RA1 Ref=RA2,RA3#define RA0_ANALOG                      0x8E   // RA0#define RA0_ANALOG_RA3_RA2_REF          0x8F   // RA0 Ref=RA2,RA3///////////////////////////////////// Constants used for SETUP_ADC()#define ADC_OFF                0#define ADC_CLOCK_DIV_2        1#define ADC_CLOCK_DIV_8     0x41#define ADC_CLOCK_DIV_32    0x81#define ADC_CLOCK_INTERNAL  0xc1#define ADC_DONE            0x8C40    // Used for ENABLE/DISABLE INTERRUPTS#define INT_ADC             0x8C40    // Used for ENABLE/DISABLE INTERRUPTS#define INT_EEPROM          0x0B10    // Used for ENABLE/DISABLE INTERRUPTS#list

Sorry ca am aruncat tot carnatul asta aici ...

Link spre comentariu
  • 2 luni mai târziu...
Vizitator cristianpaius

pentru incepatori, si nu numai, recomand totusi PIC BASIC PRO. citeste

manualul lui si pune mana pe letcon.. e un limbaj excelent..

 

bogdanm: mutati discutia despre 2.43 pe private, va rog

Link spre comentariu

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



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări