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 ---

ASM: Hello World simple sur PIC 16F877A

Bout de code posé là !

Modérateur : Jérémy

Avatar de l’utilisateur
F6FCO
Expert
Expert
Messages : 2846
Enregistré en : décembre 2017
Localisation : Banlieue sud de Klyntar
Contact :

ASM: Hello World simple sur PIC 16F877A

Messagepar F6FCO » mar. 14 mai 2024 16:38

Le mot de configuration et souvent un écueil pour les débutants. J'ai eu des soucis avec çà aussi a mes débuts alors je poste des hello World sur différents PIC.
Une led qui clignote sur B0.
Fichier Init:

Code : Tout sélectionner

;********************************************************
;
                  - F6FCO  -                         
;              Hello World                    
;********************************************************




    list        p=16f877A    ; list directive to define processor
    
#include    <p16f877A.inc>    ; processor specific variable definitions
    radix dec                  ; on travaille en décimal par défaut

    __CONFIG   _CP_OFF 
& _DEBUG_ON & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_OFF & _WDT_OFF & _HS_OSC 

; '__CONFIG' directive is used to embed configuration data within .asm file.
;
 The lables following the directive are located in the respective .inc file.
;
 See respective data sheet for additional information on configuration word.







;
ADCON1VAL    EQU    B'00000110' ; PORTA en mode digital

    cblock    0x20
        Reg_1
        Reg_2
        Reg_3
        Conchita            
; variable à tout faire
    LcdLigne
    LcdColonne
    endc

BANK0    macro                
; passer en banque0
        bcf    STATUS
,RP0
        bcf    STATUS
,RP1
        endm

BANK1    macro                
; passer en banque1
        bsf    STATUS
,RP0
        bcf    STATUS
,RP1
        endm

BANK2    macro                
; passer en banque2
        bcf    STATUS
,RP0
        bsf    STATUS
,RP1
        endm

BANK3    macro                
; passer en banque3
        bsf    STATUS
,RP0
        bsf    STATUS
,RP1
        endm





;**********************************************************************
    ORG     0x000             ; processor reset vector

    BANK1            
    movlw    d
'6'        ; PORTA en mode digital
    movwf    ADCON1        
; écriture dans contrôle A/D
    movlw    b
'00000000'    
    movwf    TRISA
    movlw    b
'00000000'    
    movwf    TRISB
    movlw    b
'00000000'    
    movwf    TRISC
    movlw    b
'00000000'    
    movwf    TRISD
    movlw    d
'6'        ; PORTA en mode digital
    movwf    ADCON1        
; écriture dans contrôle A/D
    
    BANK0    
    clrf    PORTA
    clrf    PORTB
    clrf    PORTC        
    clrf    PORTD        
    



Fichier main:

Code : Tout sélectionner


    
#include    <Init Hello World 877A.asm>

main
    bcf    PORTB
,0
    nop
    call    tempo300ms
    bsf    PORTB
,0
    nop
    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é