Sari la conținut
ELFORUM - Forumul electronistilor

Nelamurire intrerupere RB0 la PIC16F877A


djvas

Postări Recomandate

Am si eu o nelamurire ....

am facut un program de test care numara incontinu ... iar la o apasare a unui buton conectat intre RB0 catre masa apare o intrerupere care incrementeaza variabila i . Codul de mai jos functioneaza dar la initializare se duce direct in procedura de intrerupere inainte de a incepe bucla infinata. Cu alte cuvinte prima valoare a lui i afisata este 1 nu 0.

Ma poate lamuri cineva de ce ? Ca ma lasa nervii...

program Test_i;var LCD_RS : sbit at RB2_bit;var LCD_EN : sbit at RB3_bit;var LCD_D4 : sbit at RB4_bit;var LCD_D5 : sbit at RB5_bit;var LCD_D6 : sbit at RB6_bit;var LCD_D7 : sbit at RB7_bit;var LCD_RS_Direction : sbit at TRISB2_bit;var LCD_EN_Direction : sbit at TRISB3_bit;var LCD_D4_Direction : sbit at TRISB4_bit;var LCD_D5_Direction : sbit at TRISB5_bit;var LCD_D6_Direction : sbit at TRISB6_bit;var LCD_D7_Direction : sbit at TRISB7_bit;Var counter:byte;    ss:string[3];    i:byte;Procedure interrupt;begin   inc(i);   INTCON.INTF:=0;end;begin     Lcd_init();     Lcd_cmd(_lcd_cursor_off);     lcd_cmd(_lcd_clear);     lcd_out(1,1,'count:');     TRISB:=0x01;     PORTB.RB0:=1;     OPTION_REG:=0x00;     INTCON:=0x92;     counter:=0;     while (1) do        begin             bytetostr(counter,ss);             lcd_out(1,7,ss);             bytetostr(i,ss) ;             lcd_out(2,2,ss);             if counter=255 then counter:=0;             inc(counter);             delay_ms(25);                end;     end.
Link spre comentariu
  • Răspunsuri 4
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • djvas

    2

  • UDAR

    2

  • Liviu M

    1

Zile populare

Top autori în acest subiect

Cred că problema este la inițializarea lui INTCON - ai făcut INTF = 1. 

Deci cu prima ocazie el se simte dator să execute rutina de întrerupere . Încearcă cu INTCON = 0x90.

PS Nu sunt sigur , sunt la începuturi în programarea PIC.

Link spre comentariu

Incearca sa scrii comentarii in cod. O sa-ti fie si tie mai usor si si altora sa te ajute.Eu il admir pe UDAR ca verificat ce inseamna 0x92 ala. Eu nu m-as fi uitat.

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