Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

Platine test
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1421
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#1 Message par F6FCO » lun. 25 sept. 2023 20:13

Hello les gens,
Un petit projet qui ne paie pas de mine qui pourrait être bien pratique dans le temps. J'ai fais çà en // avec le projet du tour, j'avais un 18F4525 qui avait une pin HS mais je ne me rappelais plus lequel ni quelle pin :roll:. Quand on a passé des heures à débugger un code c'est bien de savoir quelle pin est hs, je me suis dit qu'un petit montage de test ne serait pas de trop et pourrait resservir.

Rien de compliqué, juste un couple résistance/led sur chaque pin, on fait clignoter et on voit les réfractaires.

Schéma:

Schéma.png


Implantation sur le PCB:

Implantation.png


P1060445.JPG



Le code pour un 4525, tout simple, on allume et on éteind, puis on recommence.
Le fichier init:

Code : Tout sélectionner

;************************************************************************************************
;
                         F6FCO - Platine test PIC 16F/18F 40pins
;                    Platine test 18F4525    
;                       25sept23            
;                                        
;
;**********************************************************************************************
 ;


        Errorlevel-302                 ; Supprime le message "Ensure that bank bits are correct" 

        list            p
=18f4525        ; processeur utilisé 
        
#include        <p18f4525.inc>        ; Définitions des constantes PIC
    

 CONFIG OSC 
= INTIO67                         ; Oscillateur interne 8MHz 
 CONFIG IESO 
= OFF                            ; Délai au démarrage (ON/OFF)
 CONFIG BOREN = OFF                           ; Reset si chute de tension (ON/OFF)
 CONFIG PWRT = ON                              ; Délai au démarrage (ON/OFF)
 CONFIG BORV = 0                              ; Tension de reset en 1/10ème Volts 
 CONFIG WDT 
= OFF                             ; Mise hors service du watchdog (ON/OFF)
 CONFIG PBADEN = OFF                          ; PORTB<4:0> les broches sont configurées comme E/S numériques lors de la réinitialisation
 CONFIG LPT1OSC 
= OFF                         ; Timer1 configuré pour un fonctionnement plus puissant
 CONFIG MCLRE 
= ON                            ; Mclr configuré comme entrée
 CONFIG STVREN 
= ON                           ; Reset sur débordement de pile (ON/OFF)
 CONFIG LVP = OFF                             ; Programmation basse tension autorisée (ON/OFF)
 CONFIG XINST = OFF                           ; L'extension du jeu d'instructions et le mode d'adressage indexé sont désactivés(mode hérité)
 CONFIG DEBUG = OFF                           ; Debugger hors service
 CONFIG CP0 = OFF                             ; Code protection sur block 0 (ON/OFF)
 CONFIG CP1 = OFF                             ; Code protection sur block 1 (ON/OFF)
 CONFIG CP2 = OFF                             ; Code protection sur block 2 (ON/OFF)
 CONFIG CPB = OFF                             ; Code protection sur bootblock  (ON/OFF)
 CONFIG CPD = OFF                             ; Code protection sur eeprom (ON/OFF)
 CONFIG WRT0 = OFF                            ; Protection écriture block 0 (ON/OFF)
 CONFIG WRT1 = OFF                            ; Protection écriture block 1 (ON/OFF)
 CONFIG WRT2 = OFF                            ; Protection écriture block 2 (ON/OFF)
 CONFIG WRTB = OFF                            ; Protection écriture bootblock (ON/OFF)
 CONFIG WRTC = OFF                            ; Protection écriture configurations (ON/OFF)
 CONFIG WRTD = OFF                            ; Protection écriture zone eeprom (ON/OFF)
 CONFIG EBTR0 = OFF                           ; Protection lecture de table block 0 (ON/OFF)
 CONFIG EBTR1 = OFF                           ; Protection lecture de table block 1 (ON/OFF)
 CONFIG EBTR2 = OFF                           ; Protection lecture de table block 2 (ON/OFF)
 CONFIG EBTRB = OFF                           ; Protection lecture de table bootblock (ON/OFF)


     CBLOCK H'
0
     ;--------------- variables 
    Reg_1            :1    ; tempo
    Reg_2            :1    ; tempo
    Reg_3            :1    ; tempo
    conchita        :2    ; bonne à tout faire
    ENDC

    ORG H'
0'
init
        movlw     B'
01110011'
        movwf     OSCCON            ; oscillateur à 8 Mhz 
        movlw     0Fh
          movwf     ADCON1            ; mode analogique
          movwf    07h
          movwf    CMCON
 
    movlw    b'
00000000'    
    movwf    TRISA
    clrf    PORTA

    movlw    b'
00000000'    
    movwf    TRISB
    clrf    PORTB

    movlw    b'
00000000'    
    movwf    TRISC
    clrf    PORTC

    movlw    b'
00000000'    
    movwf    TRISD
    clrf    PORTD

    movlw    b'
00000000'
    movwf    TRISE
    clrf    PORTE


Fichier main:

Code : Tout sélectionner




#include <Platine_init.asm>

main
    
    movlw    b
'11111111'
    movwf    PORTA
    movwf    PORTB
    movwf    PORTC
    movwf    PORTD
    movwf    PORTE
    call    tempo500ms
    
    clrf    PORTA
    clrf    PORTB
    clrf    PORTC
    clrf    PORTD
    clrf    PORTE
    call    tempo500ms
    bra    main
    

tempo500ms
; Délai 400 000 Cycles de la machine
; Durée du délai 200 millisecond
; Fréquence de l'oscillateur 8 MHZ
            movlw       .119
            movwf       Reg_1,1
            movlw       .8
            movwf       Reg_2
            movlw       .3
            movwf       Reg_3
            decfsz      Reg_1,F,1
            bra         $-2
            decfsz      Reg_2
            bra         $-6
            decfsz      Reg_3
            bra         $-.10
            return
    END
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Platine test
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2624
Enregistré en : juillet 2016
Localisation : Terre

#2 Message par Temps-x » mar. 26 sept. 2023 02:15

Bonsoir F6FCO, et tout le forum,

:+1: Tu as que des bonnes idées Merci !

Mais attention, car chaque led vont consommer 10 mA pour une résistance de 470 Ohms sous 5 volts d'aprés ton schéma,

Ce qui nous fait pour 36 Led x 10mA = 360 mA, même si sa dure 500ms d'après ton programme, c'est suffisant pour tuer un pic

Certain pic ne vont pas le supporter

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Platine test
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1421
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#3 Message par F6FCO » mar. 26 sept. 2023 09:49

Tu as raison, je vais changer la séquence du programme pour ne pas les allumer toutes ensembles.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Platine test
gwion
Passionné
Passionné
Messages : 212
Enregistré en : février 2022

#4 Message par gwion » mar. 26 sept. 2023 11:05

Bonjour tout le monde,
Avec les LED's modernes les 10mA ne sont plus qu'un lointain souvenir...
Je viens de faire un essai avec des LED's récupérées sur une guirlande de noël : sous 5V avec 4k7 en série elles brillent plein pot.

Platine test
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1421
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#5 Message par F6FCO » mar. 26 sept. 2023 11:38

C'est mieux comme çà

https://www.youtube.com/watch?v=SPP6cAQosIQ

Code : Tout sélectionner

#include <Platine_init.asm>

main
    call     block1
    nop
    call    block2
    nop
    call    block3
    nop
    call    block4
    nop
    bra    main
    
#include<Platine_routines.asm>
    END



Code : Tout sélectionner

block1
    bsf    PORTA
,0
    bsf    PORTA
,1
    bsf    PORTA
,2
    bsf    PORTA
,3
    bsf    PORTA
,4
    bsf    PORTA
,5
    bsf    PORTE
,0
    bsf    PORTE
,1
    bsf    PORTE
,2
    call    tempo300ms
    bcf    PORTA
,0
    bcf    PORTA
,1
    bcf    PORTA
,2
    bcf    PORTA
,3
    bcf    PORTA
,4
    bcf    PORTA
,5
    bcf    PORTE
,0
    bcf    PORTE
,1
    bcf    PORTE
,2
    call    tempo300ms
    
return
    
block2
    bsf    PORTA
,6
    bsf    PORTA
,7
    bsf    PORTE
,3
    bsf    PORTC
,0
    bsf    PORTC
,1
    bsf    PORTC
,2
    bsf    PORTC
,3
    bsf    PORTD
,0
    bsf    PORTD
,1
    call    tempo300ms
    bcf    PORTA
,6
    bcf    PORTA
,7
    bcf    PORTE
,3
    bcf    PORTC
,0
    bcf    PORTC
,1
    bcf    PORTC
,2
    bcf    PORTC
,3
    bcf    PORTD
,0
    bcf    PORTD
,1
    call    tempo300ms
    
return
    
block3    
    bsf    PORTD
,2
    bsf    PORTD
,3
    bsf    PORTC
,4
    bsf    PORTC
,5
    bsf    PORTC
,6
    bsf    PORTC
,7
    bsf    PORTD
,4
    bsf    PORTD
,5
    bsf    PORTD
,6
    bsf    PORTD
,7
    call    tempo300ms
    bcf    PORTD
,2
    bcf    PORTD
,3
    bcf    PORTC
,4
    bcf    PORTC
,5
    bcf    PORTC
,6
    bcf    PORTC
,7
    bcf    PORTD
,4
    bcf    PORTD
,5
    bcf    PORTD
,6
    bcf    PORTD
,7
    call    tempo300ms
    
return

block4
    bsf    PORTB
,0
    bsf    PORTB
,1
    bsf    PORTB
,2
    bsf    PORTB
,3
    bsf    PORTB
,4
    bsf    PORTB
,5
    bsf    PORTB
,6
    bsf    PORTB
,7
    call    tempo300ms
    bcf    PORTB
,0
    bcf    PORTB
,1
    bcf    PORTB
,2
    bcf    PORTB
,3
    bcf    PORTB
,4
    bcf    PORTB
,5
    bcf    PORTB
,6
    bcf    PORTB
,7
    call    tempo300ms
    
return
    
tempo300ms
Délai 600 000 Cycles de la machine
Durée du délai 300 millisecond
Fréquence de l'oscillateur 8 MHZ
            movlw       .51
            movwf       Reg_1,1
            movlw       .12
            movwf       Reg_2
            movlw       .4
            movwf       Reg_3
            decfsz      Reg_1,F,1
            bra         $-2
            decfsz      Reg_2
            bra         $-6
            decfsz      Reg_3
            bra         $-.10
            nop
            nop
            return
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Platine test
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 964
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#6 Message par venom » mar. 10 oct. 2023 00:24

Bonsoir a tous.

C'est tellement basique mais super efficace. 8-) Bravo pour cette brillante idée F6FCO





@++
Mon site web
Mon discord : venom#4888

Platine test
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1421
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#7 Message par F6FCO » mer. 11 oct. 2023 14:49

Un truc qui dormira le plus gros du temps dans le tiroir mais qui rendra un grand service le jour ou ... je considère çà comme un outil.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 7 invités