djvas Postat Ianuarie 27, 2015 Partajează Postat Ianuarie 27, 2015 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
UDAR Postat Ianuarie 27, 2015 Partajează Postat Ianuarie 27, 2015 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
djvas Postat Ianuarie 27, 2015 Autor Partajează Postat Ianuarie 27, 2015 Asha este .. Merge Multumesc UDAR Link spre comentariu
Liviu M Postat Ianuarie 27, 2015 Partajează Postat Ianuarie 27, 2015 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
UDAR Postat Ianuarie 27, 2015 Partajează Postat Ianuarie 27, 2015 Nu am un merit prea mare , lupt și eu de câteva zile cu niște întreruperi și am învățat INTCON-ul pe dinafară. 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