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 ---
Bout de code posé là !

Modérateur : Jérémy

ASM: Hello World simple sur PIC16F88
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 2846
Âge : 99
Enregistré en : décembre 2017
Localisation : Banlieue sud de Klyntar
Contact :

#1 Message par F6FCO » mar. 14 mai 2024 15:54

Hello les codeurs,
Je trouve que c'est une très bonne idée ce recueil de mini-programmes, un forum c'est fait pour partager. Même si certains viendront piquer dans le tas et repartir sans un merci qu'ils jouent au hyènes si çà les amuse, ils n'en sortiront pas grandis. C'est la nouvelle société, on les laisse avec leur conscience.
Par contre çà peut bien aider les débutants complets pour se mettre le pied à l'étrier et éviter de se décourager. Et aussi apporter du sang neuf sur Fantaspic :wink: .
Pas simple quand on démarre d'arriver à pondre un truc qui tourne.

Donc voici un Hello World sur 16F88 en deux fichiers, l'un appelle l'autre, j'ai l'habitude pour plus de clarté sur des gros programmes de faire un fichier init et un main, le dernier appelant le premier. Je trouve çà plus clair, en espérant que çà ne déroutera pas les débutants.
Une led qui clignotte sur B0.

Le fichier Init:

Code : Tout sélectionner



;**********************************************************************
;
                                                                     
;           F6FCO  
;        Hello World                                       
;        xtal:       4Mhz                                                 
;    
;                                                                     
;**********************************************************************



    List p=16F88    ; processeur utilisé 
    
#include <p16F88.inc>

    __CONFIG    _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_OFF & _WDT_OFF & _XT_OSC
    __CONFIG    _CONFIG2
, _IESO_OFF & _FCMEN_OFF
      
OPTIONVAL    EQU    H
'0008'            

; --------------------------------------------------------------------------------------------


    CBLOCK 0x020                   
        Reg_1
        Reg_2
        Reg_3
    ENDC                                             

;**********************************************************************

    org     0x0000                ; Adresse de départ après reset
init
    clrf    PORTB                
; sorties portB à 0
    bsf    STATUS
,RP0            ; bank1
    clrf    ANSEL                
; broches du CAN en I/O
    movlw    OPTIONVAL            
; charger masque
    movwf    OPTION_REG            
; initialiser registre option
    movlw    b
'00000111'            ; A0 en entrée pour poussoirs
    movwf    TRISA
    clrf    TRISB                
; Bit PORTB.0 en sortie 
    bcf    STATUS
,5            ; bank0
    clrf    PORTB                
; sorties portB à 0


Le fichier main:

Code : Tout sélectionner



#include <Init Hello World 88.asm>


;*********************************************************************
;
                      PROGRAMME PRINCIPAL                           *
;*********************************************************************

main
    bsf    PORTB
,0
    call    tempo300ms
    bcf    PORTB
,0
    call    tempo300ms
    goto     main        


tempo300ms
; Délai 300 000 Cycles de la machine
; Durée du délai 300 millisecond
; Fréquence de l'oscillateur 4 MHZ
            movlw       .153
            movwf       Reg_1
            movlw       .134
            movwf       Reg_2
            movlw       .2
            movwf       Reg_3
            decfsz      Reg_1,F
            goto        $-1
            decfsz      Reg_2,F
            goto        $-3
            decfsz      Reg_3,F
            goto        $-5
            return
            

    END             


Une porte nand prend 2 bits en entrée... :eek:

Retourner vers « Recueil de mini programmes »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité