[PIC] 16F876 [VER] 1 [REGISTRE] OPTION_REG 1 1 NOT_RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 0 STATUS 0 1 IRP RP1 RP0 NOT_TO NOT_PD Z DC C 0 TMR0 0 0 0 PORTA 0 1 / / 5 4 3 2 1 0 1 00000000 TRISA PORTB 0 1 7 6 5 4 3 2 1 0 1 00000000 TRISB INTCON 0 1 GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0 PIR1 0 1 / ADIF RCIF TXIF / CCP1IF TMR2IF TMR1IF 0 TMR1L 0 0 0 TMR1H 0 0 0 T1CON 0 1 / / T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 0 TMR2 0 0 0 T2CON 0 1 / TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 0 CCPR1L 0 0 0 CCPR1H 0 0 0 CCP1CON 0 1 / / CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 0 RCSTA 0 1 SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0 TXREG 0 0 0 RCREG 0 0 0 CMCON 0 1 C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0 0 TRISA 1 1 / / 5 4 3 2 1 0 0 TRISB 1 1 7 6 5 4 3 2 1 0 0 TRISC 1 1 7 6 5 4 3 2 1 0 0 PIE1 1 1 / ADIE RCIE TXIE / CCP1IE TMR2IE TMR1IE 0 PCON 1 1 / / / / / / POR BOR 0 PR2 1 0 0 TXSTA 1 1 CSRC TX9 TXEN SYNC / BRGH TRMT TX9D 0 SPBRG 1 0 0 EEDATA 2 0 0 EEADR 2 0 0 EECON1 3 1 / / / / WRERR WREN WR RD 0 EECON2 3 0 0 VRCON 1 1 VREN VROE VRR / VR3 VR2 VR1 VR0 0 PORTC 0 1 7 6 5 4 3 2 1 0 1 00000000 TRISC PIR2 0 1 / / / EEIF BCLIF / / CCP2IF 0 SSPBUF 0 0 0 SSPCON 0 1 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0 CCPR2L 0 0 0 CCPR2H 0 0 0 CCP2CON 0 1 / / CCP2X CCP2Y CCP2M3 CCP2M2 CCP2M1 CCP2M0 0 ADRESH 0 0 0 ADCON0 0 1 ADCS1 ADCS0 CHS2 CHS1 CHS0 GO / ADON 0 PIE2 1 1 / / / EEIE BCLIE / / CCP2IE 0 SSPADD 1 0 0 SSPSTAT 1 1 SMP CKE DA P S RW UA BF 0 ADRESL 1 0 0 ADCON1 1 1 ADFM / / / PCFG3 PCFG2 PCFG1 PCFG0 0 EEDATH 2 0 0 EEADRH 2 0 0 [OPTIONS] 16F876 p16F876 20 4 _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC O 20 A0 120 1A0 96 80 80 80 [INT] AD ADIE ADIF GIE PEIE Timer0 T0IE T0IF GIE RB0_INT INTE INTF GIE RB4_RB7 RBIE RBIF GIE RX_USART RCIE RCIF GIE PEIE TX_USART TXIE TXIF GIE PEIE SSP SSPIE SSPIF GIE PEIE CCP1 CCP1IE CCP1IF GIE PEIE CCP2 CCP2IE CCP2IF GIE PEIE Timer1 TMR1IE TMR1IF GIE PEIE Timer2 TMR2IE TMR2IF GIE PEIE EEProm EEIE EEIF GIE PEIE SSPI2C BCLIE BCLIF GIE PEIE Port_Parallèle PSPIE PSPIF GIE PEIE [CONFIG] Code_protection _CP_ALL _CP_HALF _CP_UPPER_256 _CP_OFF Reset_de_la_PIC_si_tension_<4V _BODEN_ON _BODEN_OFF Accès_à_la_flash_programme _WRT_ENABLE_ON _WRT_ENABLE_OFF Retard_à_la_mise_sous_tension _PWRTE_ON _PWRTE_OFF WatchDog _WDT_ON _WDT_OFF Programmation_sur_circuit _LVP_ON _LVP_OFF Osc _LP_OSC _XT_OSC _HS_OSC _RC_OSC Debuggage _DEBUG_ON _DEBUG_OFF Protection_EEprom _CPD_ON _CPD_OFF [READEE] ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;Lecture EEprom ;==================================================================================================== READEE MACRO ; lire eeprom(adresse & résultat en w) BANK2 MOVWF EEADR ; pointer sur adresse eeprom BANK3 BCF EECON1,EEPGD ; pointer sur eeprom BSF EECON1,RD ; ordre de lecture BANK2 MOVF EEDATA,W ; charger valeur lue BANK0 ENDM [WRITEEE] ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;Ecriture EEprom ;==================================================================================================== WRITEE MACRO addwrite ; la donnée se trouve dans W LOCAL Loop BANK2 MOVWF EEDATA ; placer data dans registre BANK0 MOVF addwrite,W ; charger adresse d'écriture BANK2 MOVWF EEADR ; placer dans registre BANK3 BCF EECON1,EEPGD ; pointer sur mémoire data BSF EECON1,WREN ; autoriser accès écriture BCF INTCON,GIE ; interdire interruptions MOVLW 0x55 ; Séquence magique MOVWF EECON2 ; MOVLW 0xAA ; MOVWF EECON2 ; BSF EECON1,WR ; lancer cycle d'écriture BSF INTCON,GIE ; réautoriser interruptions Loop BTFSC EECON1,WR ; tester si écriture terminée GOTO Loop ; non, attendre BCF EECON1,WREN ; verrouiller prochaine écriture BANK0 ENDM ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ [END]