Sari la conținut
ELFORUM - Forumul electronistilor

Modificare cod pt 12f675 in 16f628a


critix

Postări Recomandate

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
  • Răspunsuri 4
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • critix

    3

  • fratello

    1

  • Voltus

    1

Top autori în acest subiect

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

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

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