Professional Documents
Culture Documents
Annexe
Quartz
DB9.f
Pic 16F877A
MAX232
Figure 1 : la carte lectronique ralis
51
Annexe
Cble de
communication entre
Carte
la carte
programmateur
programmateur et
PC
52
Annexe
LM35
Mini serre
Carte
Dacquisition
Alimentation
5V
53
Annexe
list p=16F877A
#include <p16F877A.inc>
;***************************************************************************
;-slectionn les page de mmoire: par les 2 bits(6,5): RP0, RP1 dans le registre STATUS.
;***************************************************************************
;
BANK0
macro
bcf
STATUS,RP0
bcf
STATUS,RP1
endm
BANK1
macro
bsf
STATUS,RP0
bcf
STATUS,RP1
endm
BANK2
macro
bcf
STATUS,RP0
bsf
STATUS,RP1
endm
BANK3
macro
bsf
STATUS,RP0
bsf
STATUS,RP1
endm
;*************************************************************************
; rserver une case mmoire pour les compteur:
;************************************************************************
cblock 0xA0
CPT:1
CPT_tempo1s:1
54
Annexe
CPT_tempo1m:1
endc
;**********************************************************************
;****************programme principale :***********************************
;**********************************************************************
org
0x00
goto
start
org
0x20
start
;**********************************************************************
;-initialisation des ports A, B, C, D et E:
;***********************************************************************
BANK0
clrf
PORTA
clrf
PORTB
clrf
PORTE
clrf
PORTC
;***********************************************************************
;I-configuration le CAN , la liaison srie USART et les PORTE:A,B et C:
;************************************************************************
; 1-LES PORTES :
;
B'00000011'
movwf
TRISA
movlw
B'11000000'
movwf
TRISC
movlw
B'00000110'
movwf
TRISB
;*********************************************************************
; 2_ la liaison srie USART:
;***************************************************************************
55
Annexe
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
RX9=0 (bite 6)
==>RSTA=B'11000000'
BANK1
movlw
D'36'
movwf
TXSTA
movlw
D'25'
movwf
SPBRG
BANK0
bsf
RCSTA,SPEN
bcf
RCSTA,RX9
;**************************************************************************
; 3_ LE CAN:
;**************************************************************************
;
;
;
;
;
Annexe
;
;
;
entre analogique
;
==>ADCON1=B'10000100'=H'84'
BANK1
movlw
0x84
movwf
ADCON1
;***************************************************************************
; --tester la rception "RCREG":
;**************************************************************************
;
- OUI:
- NON:
wait_start
BANK0
Btfss PIR1,RCIF
goto
wait_start
bcf
PIR1,RCIF
movf RCREG,0
sublw 0x60
btfss
STATUS,Z
goto
wait_start
restart
PORTB
;***************************************************************************
; dmarr la conversion T1
;***************************************************************************
;
Annexe
;
;
ADON=1 (bite 0)
BANK0
movlw
0x41
movwf
ADCON0
BANK1
movlw
D'40'
movwf
CPT
;***************************************************************************
;
;***************************************************************************
;
movlw
0x20
movwf
FSR
bcf
STATUS, IRP
--Dmarrer la conversion A
convT1
BANK0
bsf
ADCON0,GO
WAIT_CANT1
btfsc
ADCON0,GO
goto
WAIT_CANT1
;***************************************************************************
; --sauvegarder la rsultat du CAN dans la mmoire RAM 'page0'
;**************************************************************************
;
Annexe
;
*test CPT=?0:
SAVE
BANK1
decfsz
CPT,1
call
TOMPO_50microS
goto
convT1
;***************************************************************************
;
;***************************************************************************
;
EMISSION
;***************************************************************************
Dmarre la conversion T2
;***************************************************************************
;
;
;
;
0x49
movwf
ADCON0
BANK1
movlw
D'40'
movwf
CPT
;**************************************************************************
;
;***************************************************************************
;
0x20
Movwf
FSR
59
Annexe
bcf
STATUS,IRP
convT2
BANKO
bsf
ADCON0,GO
WAIT_CANT2
btfsc
ADCON0,GO
goto
WAIT_CANT2
;*************************************************************************
; --sauvegarder la rsultat du CAN dans la mmoire RAM 'page0'
;**************************************************************************
;
*test CPT=? 0:
SAVE
BANK1
decfsz
CPT
call
TOMPO_50microS
goto
convT2
;**************************************************************************
;
;**************************************************************************
;
EMISSION
BANK0
Movlw
movwf
PORTB
call
TEMPO_1M
60
Annexe
; --tester la rception "RCREG": EST-CE-QUE ARRET CONVERSION
;
*DATA reue=?H'64':
wait_stope
BANK0
btfss
PIR1,RCIF
goto
restart
movf
RCREG,0
bcf
PIR1,RCIF
sublw
0x64
btfss
STATUS,Z
goto
restart
BANK0
clrf
PORTB
goto
wait_start
;Attender LED_J
;***************************************************************************
;**********************sous programme*******************************
;*********************************************************************
;
;***************************************************************************
SAVE
;
ADRESL,0
BANK0
movwf
INDF
incf
FSR,1
BANK0
61
Annexe
movf
ADRESH,0
movwf
INDF
incf
FSR,1
return
;************************************************************************
;
;***********************************************************************
EMISSION
BANK1
movlw
D'80'
movwf
CPT
movlw
0x20
movwf
FSR
2-teste les flags: TXIF (bite 4 de rigester"PIR1")et TRMT (bite 1 de registre "TXTA"):
wait1
BANK0
btfss
PIR1,TXIF
goto
wait1
wait2
BANK1
btfss
TXSTA,TRMT
goto
wait2
3-dmarr l'mission:
;case de memoire.
BANK0
movf
INDF,0
movwf
TXREG
incf
FSR,1
Annexe
BANK1
decfsz
CPT
goto
wait1
return
;**************************************************************************
;
III-sous programme'TEMPO_1S':
;***************************************************************************
;
1-configuration de TIMER0
TEMPO_1S
BANK1
Movlw
0x87
movwf
OPTION_REG
D'16'
movwf
CPT_tempo1s
WAIT_1S
BANK2
clrf
;
;
;
TMR0
TesT
BANK0
btfss
INTCON,T0IF
goto
TesT
bcf
INTCON,2
CPT_tempo1s,1
goto
WAIT_1S
63
Annexe
return
;
7-tempt=256*256*16=1,048 S
;**************************************************************************
; IV-sous programme'TEMPO_1M':
;***************************************************************************
TEMPO_1M
;
1-configuration de TIMER0:
0x87
movwf
OPTION_REG
BANK1
;
D'60'
movwf
CPT_tempo1m
movlw
D'16'
movwf
CPT_tempo1s
WAIT_1M
wait
BANK2
clrf
;
;
;
TMR0
TEST
BANK0
btfss
INTCON,T0IF
goto
TEST
bcf
INTCON,2
BANK1
64
Annexe
;
CPT_tempo1s,1
goto
wait
BANK1
Decfsz
CPT_tempo1m,1
goto
WAIT_1M
return
;
7- tempt=256*256*16*58=60,8 S
;;**************************************************************************
; IV-sous programme'TEMPO_50microS':
;***************************************************************************
;
1-configuration de TIMER0:
TEMPO_50microS
BANK1
movlw
0x87
movwf
OPTION_REG
BANK2
;
;
;
movlw
D'206'
movwf
TMR0
TEST_microS
BANK0
btfss
INTCON,T0IF
goto
TEST_microS
bcf
INTCON,2
return
end
65