logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

PIC12F509 - Jak przenieść program z 12C509 na 12F509 lub 12F629?

H0TT 01 Mar 2013 21:31 2205 1
REKLAMA
  • #1 12004453
    H0TT
    Poziom 10  
    Posty: 12
    Prośba do bardziej doświadczonych kolegów.
    Posiadam programator PICKIT2, który nie ma możliwości programowania PIC12C509.
    Czy da się zmienić program na PIC12F509 lub 12F629 ?
    Zaczynam dopiero przygodę z mikrokontrolerami i nie wiem czy jest to możliwe.
    W załączniku plik ZIP.
    Proszę o pomoc :!:

    Program napisany jest dla PIC12C509, posiadam 12F509 oraz 12F629 i stąd moja prośba.


    ; Filename ARC1
    ;********************************************************************
    ; Program for PIC based block cutout and reversing module
    ; Uses PIC 12C509A. Internal oscillator
    ; Hardware detect of overload. PIC handles the turn on / off
    ; of the DCC power via two N channel MOSFETs. Reversing by a
    ; relay. Minimal cutoff delay to beat the booster. Power is
    ; cut off while the relay reverses, then restored. If there is
    ; still an overload, system goes into a 0.5 second retry sequence
    ; Relay cycling only re-enabled after there is no longer an overload.
    ; Tested and working 23/01/02


    Processor 12C509A

    include "P12c509a.inc"

    __CONFIG h'000E' ; CP off, WDT on, internal clock

    ;Definitions




    DCCon equ 0
    Ovl_in equ 1
    Relay equ 2
    Ovl_out equ 4

    ; registers used



    CBLOCK 0x0007

    state ;state sequence
    time0 ;counter0
    time1 ;counter1
    time2 ;counter2


    ENDC




    org 0

    ;start of program

    movwf OSCCAL ;set cal

    ;set ports etc.
    bcf STATUS,PA0
    movlw B'10001111'
    option


    ;GP0 DCC ON/OFF (hi is ON)
    ;GP1 is overload input (active lo)
    ;GP2 Reverse output
    ;GP4 overload output (HI is overload)

    movlw B'00000010'
    tris GPIO


    movlw B'00000001' ;set ports
    movwf GPIO

    clrf state

    ;main loop starts here. Scans for hi on overload.

    test clrwdt
    btfss GPIO,Ovl_in ;look for overload
    goto set1

    test1 btfsc state,0 ;check state
    goto caltim ;reset delay

    goto test ;look again


    ;here if true overload

    set1 bcf GPIO,DCCon ;turn off
    btfsc state,0 ;0 if first time after reset
    goto state1
    bsf state,0 ;set to state 1

    movf GPIO,W ;get port setting
    xorlw B'00000100' ;reverse relay
    movwf GPIO

    call dely25 ;delay 25 millisecs for relay
    bsf GPIO,DCCon ;turn back on
    goto test ;look for overload

    state1 bsf GPIO,Ovl_out ;set alarm
    call del500
    bsf state,7 ;set timeout
    bcf GPIO,Ovl_out ;alarm off
    bsf GPIO,DCCon ;output on
    goto test

    caltim call timout ;reset timer
    goto test





    ; delays

    delay movlw 0xFF ;short delay
    movwf time0
    delay1 clrwdt
    nop
    nop
    decfsz time0,F
    goto delay1
    retlw 0

    dely25 clrwdt
    movlw .30 ;25 millisecs
    movwf time1
    del25a movlw 0xFF
    movwf time2
    del25b decfsz time2,F
    goto del25b
    decfsz time1,F
    goto del25a
    retlw 0

    del500 movlw 0xFF ;500 millisecs
    movwf time1
    del500a movlw 0xFF
    movwf time2
    del500b clrwdt
    nop
    nop
    nop
    nop
    decfsz time2,F
    goto del500b
    decfsz time1,F
    goto del500a
    retlw 0

    timout btfss state,7 ;continue countdown
    goto countdn
    movlw 0xFF ;set counters
    movwf time1
    timo2 movlw 0xFF
    movwf time2
    bcf state,7
    countdn decfsz time2,F
    retlw 0
    decfsz time1,F
    goto timo3
    clrf state ;reset
    retlw 0

    timo3 movlw 0xFF
    movwf time2
    retlw 0



    end
    Załączniki:
    • arc.zip (82.73 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 12004669
    Marico
    Poziom 20  
    Posty: 409
    Pomógł: 28
    Ocena: 60
    Możesz "nauczyć" PICKIT2 programować układy, które domyślnie nie są obsługiwane. Poszukaj PK2 Device File Editor, można dodać nowe układy kopiując/modyfikując parametry programowania, być może w tym przypadku wystrczy skopiować szablon z 12F508 na 12C508.
REKLAMA