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