Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Definire il microchip in Assembler

    Ciao ragazzi.
    Un mio amico mi ha spedito una mail sperando che io fossi in grado di modificare l'init del tipo di processore nei suoi programmi in Assembler, mentre io arrivo al massimo a VB.
    Sono programmi per controllare delle luminarie natalizie, vi espongo la mail:
    il programma 4piovar.asm è funzionante con il microprocessore microchip 12c/508a/509a devo usare lo stesso programma utilizando un micro pic 12c671 sempre microchip. Le piedinature corrispondono.
    Ilfile luci4can.asm è un programma funzionante con il modello 12c671 ma ha una grande differenza e cioè che sfrutta le funzioni analogiche dello stesso 12c671 e utiliza il proprio oscillatore interno oltre che chiaramente usa delle macro.Guardando la semplicità del mio programma 4piovar.asm la differenza da colmare stà nella parte INIT
    infatti il processore 12c509 ha solo un cosidetto Bank0
    mentre il 12c671 ha bank0 e bank1 e le uscite da configurare sono sul bank1 che va prima inizializato.
    Ecco il programma 4piovar.asm:
    __________________________________________________ __________________
    ;************************************************* *******
    ; *
    ; 4PIVAR.asm *
    ; PIOGGIA VARIABILE *
    ; con 12c509 *
    ; (c) 2000, Sabetta GIOVANNI *
    ; Verificato il 29-12-01 trimmer da 100K; RESISTENZA *
    ; 10K COND.POL. 10NANO *
    ; EXT.RC MASTERCLEAR INT. WATCHDOG OFF *
    ;************************************************* *******

    processor 12c509a
    include "p12c509a.inc"




    CONTATORE_1 equ 0Ch ;Contatore RITARDO ACCENSIONE
    CONTATORE_2 equ 0Dh ;Contatore RITARDO ACCENSIONE
    CONTATORE_3 equ 0Eh ;Contatore NUMERO DI VOLTE 5


    ; ***************************
    ; * Inizializzazione *
    ; ***************************

    org 0000H

    goto INIT


    DELAY

    movwf CONTATORE_2 ;Ricarica Count_2
    DELAY1
    movlw 2h ;Poni in W il numero 20h
    movwf CONTATORE_1 ;Ricarica Count_1
    DELAY2
    decfsz CONTATORE_1,1 ;Decrementa Count_1
    goto DELAY2 ;Se non è a 0 vai a Delay
    decfsz CONTATORE_2,1 ;Decrementa Count_2
    goto DELAY1 ;Se non è a 0 vai a Delay
    retlw .0 ;Torna al programma principale

    INIT
    clrf STATUS

    movlw b'11000000' ;Inizializzazione timer
    option
    movlw b'00000000' ;Preset uscite a zero
    movwf GPIO
    movlw b'11101000' ;Configurazione porta I/O
    tris GPIO ;GP 0,1,2,4 output
    ;


    ; ***************************
    ; * Programma principale *
    ; ***************************
    ;
    MAIN


    TEMPO_1
    movlw .15 ;VARIABILE NUMERO DI VOLTE DA RIPETERE
    movwf CONTATORE_3 ;CONTATORE 3 DECREMENTA IL NUM. DI VOLTE
    RIPETE_1
    decfsz CONTATORE_3,f
    goto TEMPO1
    goto TEMPO_2 ;Torna al programma principale
    TEMPO1
    bsf GPIO,0 ;ACCENDE
    movlw .8 ;SET TEMPO DI DELAY
    call DELAY ;Routine di ritardo
    bcf GPIO,0 ;SPEGNE
    ;
    bsf GPIO,1
    movlw .8
    call DELAY
    bcf GPIO,1

    bsf GPIO,2 ;ACCENDE
    movlw .8 ;SET TEMPO DI DELAY
    call DELAY ;Routine di ritardo
    bcf GPIO,2 ;SPEGNE
    ;
    bsf GPIO,4
    movlw .8
    call DELAY
    bcf GPIO,4

    GOTO RIPETE_1
    ;
    TEMPO_2
    movlw .20 ;VARIABILE NUMERO DI VOLTE DA RIPETERE
    movwf CONTATORE_3 ;CONTATORE N°3 DECREMENTE IL NUM. DI VOLTE
    RIPETE_2
    decfsz CONTATORE_3,f
    goto TEMPO2
    goto TEMPO_3 ;Torna al programma principale
    TEMPO2
    bsf GPIO,0 ;ACCENDE
    movlw .7 ;SET TEMPO DI DELAY
    call DELAY ;Routine di ritardo
    bcf GPIO,0 ;SPEGNE
    ;
    bsf GPIO,1
    movlw .7
    call DELAY
    bcf GPIO,1

    bsf GPIO,2 ;ACCENDE
    movlw .7 ;SET TEMPO DI DELAY
    call DELAY ;Routine di ritardo
    bcf GPIO,2 ;SPEGNE
    ;
    bsf GPIO,4
    movlw .7
    call DELAY
    bcf GPIO,4

    GOTO RIPETE_2
    ;
    TEMPO_3
    movlw .25 ;VARIABILE NUMERO DI VOLTE DA RIPETERE
    movwf CONTATORE_3 ;CONTATORE N°3 DECREMENTE IL NUM. DI VOLTE
    RIPETE_3
    decfsz CONTATORE_3,f
    goto TEMPO3
    goto TEMPO_4 ;Torna al programma principale
    TEMPO3
    bsf GPIO,0 ;ACCENDE
    movlw .6 ;SET TEMPO DI DELAY
    call DELAY ;Routine di ritardo
    bcf GPIO,0 ;SPEGNE
    ;
    bsf GPIO,1
    movlw .6
    call DELAY
    bcf GPIO,1

    bsf GPIO,2 ;ACCENDE
    movlw .6 ;SET TEMPO DI DELAY
    call DELAY ;Routine di ritardo
    bcf GPIO,2 ;SPEGNE
    ;
    bsf GPIO,4
    movlw .6
    call DELAY
    bcf GPIO,4

    GOTO RIPETE_3
    ;
    TEMPO_4
    movlw .30 ;VARIABILE NUMERO DI VOLTE DA RIPETERE
    movwf CONTATORE_3 ;CONTATORE N°3 DECREMENTE IL NUM. DI VOLTE
    RIPETE_4
    decfsz CONTATORE_3,f
    goto TEMPO4
    goto TEMPO_5 ;Torna al programma principale
    TEMPO4
    bsf GPIO,0 ;ACCENDE
    movlw .5 ;SET TEMPO DI DELAY
    call DELAY ;Routine di ritardo
    bcf GPIO,0 ;SPEGNE
    ;
    bsf GPIO,1
    movlw .5
    call DELAY
    bcf GPIO,1

    bsf GPIO,2 ;ACCENDE
    movlw .5 ;SET TEMPO DI DELAY
    call DELAY ;Routine di ritardo
    bcf GPIO,2 ;SPEGNE
    ;
    bsf GPIO,4
    movlw .5
    call DELAY
    bcf GPIO,4

    GOTO RIPETE_4
    ;
    TEMPO_5
    movlw .35 ;VARIABILE NUMERO DI VOLTE DA RIPETERE
    movwf CONTATORE_3 ;CONTATORE N°3 DECREMENTE IL NUM. DI VOLTE
    RIPETE_5
    decfsz CONTATORE_3,f
    goto TEMPO5
    goto TEMPO_6 ;Torna al programma principale
    TEMPO5
    bsf GPIO,0 ;ACCENDE
    movlw .4 ;SET TEMPO DI DELAY
    call DELAY ;Routine di ritardo
    bcf GPIO,0 ;SPEGNE
    ;
    bsf GPIO,1
    movlw .4
    call DELAY
    bcf GPIO,1

    bsf GPIO,2 ;ACCENDE
    movlw .4 ;SET TEMPO DI DELAY
    call DELAY ;Routine di ritardo
    bcf GPIO,2 ;SPEGNE
    ;
    bsf GPIO,4
    movlw .4
    call DELAY
    bcf GPIO,4

    GOTO RIPETE_5

    ;
    TEMPO_6
    movlw .40 ;VARIABILE NUMERO DI VOLTE DA RIPETERE
    movwf CONTATORE_3 ;CONTATORE N°3 DECREMENTE IL NUM. DI VOLTE
    RIPETE_6
    decfsz CONTATORE_3,f
    goto TEMPO6
    goto TEMPO_7 ;Torna al programma principale
    TEMPO6
    bsf GPIO,0 ;ACCENDE
    movlw .3 ;SET TEMPO DI DELAY
    call DELAY ;Routine di ritardo
    bcf GPIO,0 ;SPEGNE
    ;
    bsf GPIO,1
    movlw .3
    call DELAY
    bcf GPIO,1

    bsf GPIO,2 ;ACCENDE
    movlw .3 ;SET TEMPO DI DELAY
    call DELAY ;Routine di ritardo
    bcf GPIO,2 ;SPEGNE
    ;
    bsf GPIO,4
    movlw .3
    call DELAY
    bcf GPIO,4

    GOTO RIPETE_6

    TEMPO_7
    movlw .45 ;VARIABILE NUMERO DI VOLTE DA RIPETERE
    movwf CONTATORE_3 ;CONTATORE N°3 DECREMENTE IL NUM. DI VOLTE
    RIPETE_7
    decfsz CONTATORE_3,f
    goto TEMPO7
    goto MAIN ;Torna al programma principale
    TEMPO7
    bsf GPIO,0 ;ACCENDE
    movlw .2 ;SET TEMPO DI DELAY
    call DELAY ;Routine di ritardo
    bcf GPIO,0 ;SPEGNE
    ;
    bsf GPIO,1
    movlw .2
    call DELAY
    bcf GPIO,1

    bsf GPIO,2 ;ACCENDE
    movlw .2 ;SET TEMPO DI DELAY
    call DELAY ;Routine di ritardo
    bcf GPIO,2 ;SPEGNE
    ;
    bsf GPIO,4
    movlw .2
    call DELAY
    bcf GPIO,4

    GOTO RIPETE_7

    END
    __________________________________________________ __________________

    Lo so che è una menata ma spero di trovare qualcuno che ci aiuti a cambiare l'init di 4piovar.asm per adattarlo al 12c671.
    Grazie 1000 di cuore a chi vorrà aiutarci.

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    4
    se mi dici dove posso trovare i vari set
    di istruzioni asm per quei microprocessori
    FORSE te lo posso riscrivere....

  3. #3
    Ti ringrazio infinitamente per l'interesse, tuttavia il problema è proprio quello.
    Il mio amico costruisce luminarie natalizie e aveva creato quel programma probabilmente prendendo spunti da altri, quindi non sa minimamente dove trovare set di istruzioni.
    Figuriamoci io, non ho mai digitato 1 riga di assembler! Sono arrivato al massimo a VB.
    Non so proprio dove cercare, proverò a fare una ricerca sul web... vediamo cosa salta fuori.
    Intanto grazie 1000.
    Ciao!

  4. #4
    Ricerca infruttuosa.
    Qualcuno mi sa dire se i set di istruzioni si possono trovare da qualche parte?
    Sono protetti per caso da copyright?
    Se ho scritto qualcosa contro il regolamento avvertitemi e non si ripeterà.

    Grazie 1000, ciao.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.