critix Postat Octombrie 25, 2011 Partajează Postat Octombrie 25, 2011 Salut Am urmatorul cod in mikrobasic pt 12f675. Doresc sa ma ajutati in modificarea respectivului cod pt a putea folosi pe un 16f628A. (nu reusesc sa ma descurc cu partea de intreruperi...) Codul este urmatorul: program testsymbol LED = GPIO.5 const led_tmr= 10dim inter_cnt as bytesub procedure Init_Main()' Osccal restore OSCCAL=OSCCAL asm BSF STATUS,RP0 ; set file register bank to 1 CALL 0x3FF ; retrieve factory calibration value MOVWF OSCCAL ; update register with factory cal value BCF STATUS,RP0 ; set file register bank to 0 end asm CMCON=7 ANSEL=0 GPIO=0 TRISIO=%001111 T0CS_bit=0 ' internal clock source for TMR0 PSA_bit=0 ' prescale assigned to TMR0 PS2_bit=1 ' 1:256 prescaler to TMR0 PS1_bit=1 PS0_bit=1 T0IE_bit=1 ' enable TMR0 interrupt GIE_bit=1 ' enable interruptsend subsub procedure interrupt TMR0=61 ' preload timer ( ~50 ms overflow period) Inc(inter_cnt) ' increment interrupts counter if inter_cnt=led_tmr then inter_cnt=0 ' reset interrupts counter LED=not(LED) ' toggle LED end if T0IF_bit=0 ' reset flagend submain:' Main program Init_Main() inter_cnt=0 ' initialize counterwhile TRUE ' restul programului.....wendend. Va multumesc anticipat. Link spre comentariu
critix Postat Octombrie 26, 2011 Autor Partajează Postat Octombrie 26, 2011 Chiar nu poate nimeni sa ma ajute?Multumesc... Link spre comentariu
Voltus Postat Octombrie 26, 2011 Partajează Postat Octombrie 26, 2011 program test 'symbol LED = GPIO.5 symbol LED = PORTA.5 const led_tmr= 10 dim inter_cnt as byte sub procedure Init_Main() ' Osccal restore ' OSCCAL=OSCCAL ' asm ' BSF STATUS,RP0 ; set file register bank to 1 ' CALL 0x3FF ; retrieve factory calibration value ' MOVWF OSCCAL ; update register with factory cal value ' BCF STATUS,RP0 ; set file register bank to 0 ' end asm CMCON=7 'ANSEL=0 VRCON = 0 ' GPIO=0 PORTA = 0 'TRISIO=%001111 TRISA = %0000111 ; fac din porta.5 iesire T0CS_bit=0 ' internal clock source for TMR0 PSA_bit=0 ' prescale assigned to TMR0 PS2_bit=1 ' 1:256 prescaler to TMR0 PS1_bit=1 PS0_bit=1 T0IE_bit=1 ' enable TMR0 interrupt GIE_bit=1 ' enable interrupts end sub sub procedure interrupt TMR0=61 ' preload timer ( ~50 ms overflow period) Inc(inter_cnt) ' increment interrupts counter if inter_cnt=led_tmr then inter_cnt=0 ' reset interrupts counter LED=not(LED) ' toggle LED end if T0IF_bit=0 ' reset flag end sub main: ' Main program Init_Main() inter_cnt=0 ' initialize counter while TRUE ' restul programului..... wend end. Link spre comentariu
fratello Postat Octombrie 26, 2011 Partajează Postat Octombrie 26, 2011 Poate te ajuta acest exemplu, desi este scris in PicBasicPro : @ DEVICE pic16F628A, intOSC_osc_noclkout, WDT_OFF, PWRT_ON, MCLR_OFF, LVP_OFF, CPD_OFFDEFINE OSC 4CMCON = 7VRCON = 0INTCON = 0 TrisB=0 ' Make PortB outputs TrisA.0=0:TrisA.1=0:TrisA.2=0 ' Make only the specific bits of PortA outputs TrisA.3=0:TrisA.4=1 PortA=0:PortB=0 ' Clear PortB and PortAINTCON = %00100000OPTION_REG = %10000000ON INTERRUPT GOTO ISRINTCON = %10100000MAIN : ; aici e codul principalGoto MainDISABLEISR: ; aici se pune ceea ce doreste a se face in intrerupereINTCON.2=0RESUMEENABLE Link spre comentariu
critix Postat Octombrie 26, 2011 Autor Partajează Postat Octombrie 26, 2011 Va multumesc pentru ajutor... Incerc acum codurile... 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