Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Pic16F88 pour Compteur



  1. #1
    xarolium

    Pic16F88 pour Compteur


    ------

    Je suis en train de realiser un compteur sur deux digit avec un PIC16F88
    les PortB est configurer en sorti pour les bits de B0 à B5
    qui controle les entrées de deux 4511
    B0, B1, B2, B3 pour le 4511 des unites et
    B4 et B5 pour le 4511 des dixaine comme je ne vais compter que jusqu'a 32 deux liaison me suffise
    le PortA est configurer lui aussi en sorti pour les bits de A0 à A4
    Les sorti du portB compte en decimal c'est a dire que lorque j'arrive a 100100 je passe à 000010 et ainsi de suite jusqu'a 010011 puis je reviens a 100000 ce qui fait que mes digits affiche de 1 à 32
    les sorti du portA compte aussi jusqu'a 32 mais en Hexadecimal c'est pour cela que je me sert que de 5 bits
    ces sortis me servent à controler l'adresse d'une NVRAM
    Pour faire avancé le compteur il faut apuyer sur un poussoir pour mettre le bits 6 du portB a 1
    J'ai réaliser ce montage



    Et j'ai programmer ce code



    include "C:\PROGRA~1\MICROC~1\MPASMS~1 \P16F88.inc"
    ;Variables ****************************** ***********
    _code_tmp_0000 equ 0x70 ;1
    param00_delay_ms equ 0x71 ;2
    _FCV_COUNT2 equ 0x73 ;1
    _FCV_COUNT equ 0x74 ;1
    _FCV_PLUS equ 0x75 ;1
    _indf equ 0x00 ;1
    _tmr0 equ 0x01 ;1
    _pcl equ 0x02 ;1
    _status equ 0x03 ;1
    _fsr equ 0x04 ;1
    _porta equ 0x05 ;1
    _portb equ 0x06 ;1
    _pclath equ 0x0a ;1
    _intcon equ 0x0b ;1
    _pir1 equ 0x0c ;1
    _pir2 equ 0x0d ;1
    _tmr1l equ 0x0e ;1
    _tmr1h equ 0x0f ;1
    _t1con equ 0x10 ;1
    _tmr2 equ 0x11 ;1
    _t2con equ 0x12 ;1
    _sspbuf equ 0x13 ;1
    _sspcon equ 0x14 ;1
    _ccpr1l equ 0x15 ;1
    _ccpr1h equ 0x16 ;1
    _ccp1con equ 0x17 ;1
    _rcsta equ 0x18 ;1
    _txreg equ 0x19 ;1
    _rcreg equ 0x1a ;1
    _adresh equ 0x1e ;1
    _adcon0 equ 0x1f ;1
    _option_reg equ 0x81 ;1
    _trisa equ 0x85 ;1
    _trisb equ 0x86 ;1
    _pie1 equ 0x8c ;1
    _pie2 equ 0x8d ;1
    _pcon equ 0x8e ;1
    _osccon equ 0x8f ;1
    _osctune equ 0x90 ;1
    _pr2 equ 0x92 ;1
    _sspadd equ 0x93 ;1
    _sspstat equ 0x94 ;1
    _txsta equ 0x98 ;1
    _spbrg equ 0x99 ;1
    _ansel equ 0x9b ;1
    _cmcon equ 0x9c ;1
    _cvrcon equ 0x9d ;1
    _adresl equ 0x9e ;1
    _adcon1 equ 0x9f ;1
    _wdtcon equ 0x105 ;1
    _eedata equ 0x10c ;1
    _eeadr equ 0x10d ;1
    _eedath equ 0x10e ;1
    _eeadrh equ 0x10f ;1
    _eecon1 equ 0x18c ;1
    _eecon2 equ 0x18d ;1
    ORG 0
    clrf PCLATH
    goto start__code

    ORG 4
    _interrupt
    bcf INTCON, TMR0IF ;clear interrupt flag
    retfie

    _delay_ms
    goto _delay_ms__code
    start__code
    _main__code
    bsf STATUS, RP0
    bcf STATUS, RP1
    clrf _ansel
    movlw D'7'
    movwf _cmcon
    movlw D'192'
    movwf _option_reg
    clrf _FCV_COUNT
    clrf _FCV_COUNT2
    label_0000
    clrf _FCV_PLUS
    bsf STATUS, RP0
    bcf STATUS, RP1
    movf TRISB, W
    iorlw D'64'
    movwf TRISB
    bcf STATUS, RP0
    movf PORTB, W
    andlw D'64'
    sublw D'64'
    movlw 1
    btfss STATUS, Z
    clrw
    movwf _FCV_PLUS
    movlw D'1'
    subwf _FCV_PLUS, W
    btfss STATUS, Z
    goto label_0002
    movlw D'200'
    movwf param00_delay_ms
    call _delay_ms
    clrf _code_tmp_0000
    movf _FCV_COUNT, W
    addlw D'1'
    btfsc STATUS, C
    incf _code_tmp_0000 , F
    movwf _FCV_COUNT
    clrf _code_tmp_0000
    movf _FCV_COUNT2, W
    addlw D'1'
    btfsc STATUS, C
    incf _code_tmp_0000 , F
    movwf _FCV_COUNT2
    bsf STATUS, RP0
    bcf STATUS, RP1
    clrf TRISB
    movf _FCV_COUNT, W
    bcf STATUS, RP0
    movwf PORTB
    bsf STATUS, RP0
    movf TRISA, W
    andlw D'224'
    movwf TRISA
    bcf STATUS, RP0
    movf PORTA, W
    andlw D'224'
    iorwf _FCV_COUNT2, W
    movwf PORTA
    label_0002
    movlw D'9'
    subwf _FCV_COUNT, W
    btfss STATUS, Z
    goto label_0005
    movlw D'15'
    movwf _FCV_COUNT
    label_0005
    movlw D'25'
    subwf _FCV_COUNT, W
    btfss STATUS, Z
    goto label_0006
    movlw D'31'
    movwf _FCV_COUNT
    label_0006
    movlw D'41'
    subwf _FCV_COUNT, W
    btfss STATUS, Z
    goto label_0007
    movlw D'47'
    movwf _FCV_COUNT
    label_0007
    movlw D'50'
    subwf _FCV_COUNT, W
    btfss STATUS, Z
    goto label_0000
    clrf _FCV_COUNT
    label_0008
    goto label_0000
    label_0001
    _mainendloop
    goto _mainendloop
    _main__end
    _delay_ms__code
    label_0003
    movlw D'86'
    movwf param00_delay_ms+1
    nop
    nop
    label_0004
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    decfsz param00_delay_ms+1, F
    goto label_0004
    nop
    decfsz param00_delay_ms, F
    goto label_0003
    nop
    return
    _delay_ms__end
    const_ptr_data
    END


    J'ai fait un test de simulation avec Isis et tous est ok
    Mon probleme est que quand je programme mon Pic16F88 avec mon programmateur PIC01 l'application ne fonctionne pas du tout

    Je voulais savoir comment configurer IC prog pour que j'utilise l'horoge interne du pic et dans ce cas j'ai peut etre oublié des lignes de prog pour spécifier la cadence de l'horloge.
    Et aussi si je devais comment je devais configurer "les fusibles " dans icprog (Watchdog Timer, Power up timer, Master clear, Brown Out Rest, LVP, CPD, Debugger et CCPMX)

    Enfin voila mon probleme la simulation marche mais pas le réel


    -----

  2. #2
    RISC

    Re : Pic16F88 pour Compteur

    Bonsoir Xarolium,

    Le document sur les fusible de programmation de chaque PIC se trouve dans la colonne de droite sur la page de "base" du produit PIC16F88 :
    http://www.microchip.com/stellent/id...cName=en010243

    Le document sur les fusible est celui-ci
    http://ww1.microchip.com/downloads/e...Doc/31027a.pdf

    Il existe un excellent cours sur les PIC16F fait par Bigonoff :
    http://www.abcelectronique.com/bigon....php?par=59475


    a+

Discussions similaires

  1. De l'aide pour un compteur de score !
    Par AReS-60 dans le forum Électronique
    Réponses: 9
    Dernier message: 04/05/2011, 16h44
  2. Réponses: 35
    Dernier message: 26/01/2008, 12h15
  3. programmation Pic16F88
    Par Tix dans le forum Électronique
    Réponses: 9
    Dernier message: 19/11/2006, 20h30
  4. demultiplexeur pour activer un compteur
    Par _KB_ dans le forum Électronique
    Réponses: 2
    Dernier message: 08/04/2003, 16h22
Découvrez nos comparatifs produits sur l'informatique et les technologies.