Vous êtes sur la page 1sur 11

initialisation

bank0
clrf PORTA ; mise à 0 des sorties du port A
clrf PORTB ; mise à 0 des sorties du port B

bank1
movlw B'10101000'
movwf OPTION_REG
; bit 7 (/RBPU) = 1 : désactivation des résistances de pull-up du
port B
; bit 6 (INTEDG)= 0 : (non utilisé)
; bit 5 (T0CS) = 1 : horloge du module TMR0 -> RA4/T0CKI (mode
compteur)
; bit 4 (T0SE) = 0 : horloge RA4/T0CKI active sur front montant
; bit 3 (PSA) = 1 : prescaler 1:1
; bit 2 (PS2)= 0
; bit 1 (PS1) = 0
; bit 0 (PS0) = 0

movlw B'00011111'
movwf TRISA
; bit 0 du port A (RA0) = 1 : configuration en entrée (bouton
poussoir CRENEAU)
; bit 1 du port A (RA1) = 1 : configuration en entrée (bouton
poussoir TRIANGLE)
; bit 2 du port A (RA2) = 1 : configuration en entrée (bouton
poussoir SINUS)
; bit 3 du port A (RA3) = 1 : configuration en entrée (bouton
poussoir RAMPE)
; bit 4 du port A (RA4) = 1 : configuration en entrée (oscillateur
externe)

clrf TRISB
; bit 0 du port B (RB0) = 0 : configuration en sortie (bit 0 (LSB)
du DAC 8 bits)
; bit 1 du port B (RB1) = 0 : configuration en sortie (bit 1 du DAC
8 bits)
; bit 2 du port B (RB2) = 0 : configuration en sortie (bit 2 du DAC
8 bits)
; bit 3 du port B (RB3) = 0 : configuration en sortie (bit 3 du DAC
8 bits)
; bit 4 du port B (RB4) = 0 : configuration en sortie (bit 4 du DAC
8 bits)
; bit 5 du port B (RB5) = 0 : configuration en sortie (bit 5 du DAC
8 bits)
; bit 6 du port B (RB6) = 0 : configuration en sortie (bit 6 du DAC
8 bits)
; bit 7 du port B (RB7) = 0 : configuration en sortie (bit 7 (MSB)
du DAC 8 bits)

bank0

clrf formeSIGNAL
movlw B'10000000'
movwf PORTB ; uS(U4) = 0 V (sortie du DAC)

goto debut_programme

;xxxxxxxxxxxxxxxxxxxxx
; programme principal
;xxxxxxxxxxxxxxxxxxxxx

debut_programme

; xxxxxxxxxx test des 4 boutons poussoirs


call test_changement
addlw B'00000000'
btfsc STATUS , Z
goto debut_programme ; boutons poussoirs au repos (W)=0

; on arrive ici si un des boutons poussoirs est appuyé


clrf TMR0
btfsc formeSIGNAL , 0
goto formeCRENEAU
btfsc formeSIGNAL , 1
goto formeTRIANGLE
btfsc formeSIGNAL , 2
goto formeSINUS
btfsc formeSIGNAL , 3
goto formeRAMPE
goto formeDC ; par précaution

; xxxxxxxxxxxxxxxxxxxxxx
; forme continue
formeDC
goto formeDC

; xxxxxxxxxxxxxxxxxxxxxx
; forme en créneau
formeCRENEAU

movlw D'255'
btfss TMR0 , 6
clrw ; 0 =< TMR0 <= 63 ou 128 =<
TMR0 <= 255
movwf PORTB
goto formeCRENEAU

; xxxxxxxxxxxxxxxxxxxxxx
; forme en triangle
formeTRIANGLE

movlw 0x03
movwf PCLATH

formeTRIANGLE0
movlw B'01111111' ; masque
andwf TMR0 , W ; on met à 0 le bit 7 (car la table a 128
éléments)
call table_triangle
movwf PORTB ; écriture en entrée du DAC
goto formeTRIANGLE0

; xxxxxxxxxxxxxxxxxxxxxx
; forme en sinus
formeSINUS

movlw 0x02
movwf PCLATH

formeSINUS0
movlw B'01111111'
andwf TMR0 , W ; on met à 0 le bit 7
call table_sinus
movwf PORTB
goto formeSINUS0

; xxxxxxxxxxxxxxxxxxxxxx
; forme en rampe
formeRAMPE

movlw 0x01
movwf PCLATH
formeRAMPE0
movlw B'01111111'
andwf TMR0 , W ; on met à 0 le bit 7
call table_rampe
movwf PORTB
goto formeRAMPE0

; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
; Routine de test des boutons poussoirs
; Retourne 0 si tous les boutons poussoirs sont au repos
; Retourne 1 si au moins un bouton poussoir est appuyé
; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
test_changement

btfsc PORTA,0
goto test_bp_triangle
bsf formeSIGNAL , 0
retlw D'1'

test_bp_triangle

btfsc PORTA,1
goto test_bp_sinus
bsf formeSIGNAL , 1
retlw D'1'

test_bp_sinus

btfsc PORTA,2
goto test_bp_rampe
bsf formeSIGNAL , 2
retlw D'1'

test_bp_rampe

btfsc PORTA,3
retlw D'0' ; tous les boutons poussoirs sont au repos
bsf formeSIGNAL , 3
retlw D'1'

; xxxxxxxx table rampe xxxxxxxxxxxxxxxxxxxxxxxxxxxx


org 0x0100 ; adresse de début de la table
table_rampe
addwf PCL , f
retlw D'255'
retlw D'253'
retlw D'251'
retlw D'249'
retlw D'247'
retlw D'245'
retlw D'243'
retlw D'241'
retlw D'239'
retlw D'237'
retlw D'235'
retlw D'233'
retlw D'231'
retlw D'229'
retlw D'227'
retlw D'225'
retlw D'223'
retlw D'221'
retlw D'219'
retlw D'217'
retlw D'215'
retlw D'213'
retlw D'211'
retlw D'209'
retlw D'207'
retlw D'205'
retlw D'203'
retlw D'201'
retlw D'199'
retlw D'197'
retlw D'195'
retlw D'193'
retlw D'191'
retlw D'189'
retlw D'187'
retlw D'185'
retlw D'183'
retlw D'181'
retlw D'179'
retlw D'177'
retlw D'175'
retlw D'173'
retlw D'171'
retlw D'169'
retlw D'167'
retlw D'165'
retlw D'163'
retlw D'161'
retlw D'159'
retlw D'157'
retlw D'155'
retlw D'153'
retlw D'151'
retlw D'149'
retlw D'147'
retlw D'145'
retlw D'143'
retlw D'141'
retlw D'139'
retlw D'137'
retlw D'135'
retlw D'133'
retlw D'131'
retlw D'129'
retlw D'126'
retlw D'124'
retlw D'122'
retlw D'120'
retlw D'118'
retlw D'116'
retlw D'114'
retlw D'112'
retlw D'110'
retlw D'108'
retlw D'106'
retlw D'104'
retlw D'102'
retlw D'100'
retlw D'98'
retlw D'96'
retlw D'94'
retlw D'92'
retlw D'90'
retlw D'88'
retlw D'86'
retlw D'84'
retlw D'82'
retlw D'80'
retlw D'78'
retlw D'76'
retlw D'74'
retlw D'72'
retlw D'70'
retlw D'68'
retlw D'66'
retlw D'64'
retlw D'62'
retlw D'60'
retlw D'58'
retlw D'56'
retlw D'54'
retlw D'52'
retlw D'50'
retlw D'48'
retlw D'46'
retlw D'44'
retlw D'42'
retlw D'40'
retlw D'38'
retlw D'36'
retlw D'34'
retlw D'32'
retlw D'30'
retlw D'28'
retlw D'26'
retlw D'24'
retlw D'22'
retlw D'20'
retlw D'18'
retlw D'16'
retlw D'14'
retlw D'12'
retlw D'10'
retlw D'8'
retlw D'6'
retlw D'4'
retlw D'2'
retlw D'0'

; xxxxxxxx table sinus xxxxxxxxxxxxxxxxxxxxxxxxxxxx


org 0x0200 ; adresse de début de la table
table_sinus
addwf PCL , f
retlw D'128'
retlw D'134'
retlw D'140'
retlw D'146'
retlw D'152'
retlw D'158'
retlw D'165'
retlw D'170'
retlw D'176'
retlw D'182'
retlw D'188'
retlw D'193'
retlw D'198'
retlw D'203'
retlw D'208'
retlw D'213'
retlw D'218'
retlw D'222'
retlw D'226'
retlw D'230'
retlw D'234'
retlw D'237'
retlw D'240'
retlw D'243'
retlw D'245'
retlw D'248'
retlw D'250'
retlw D'251'
retlw D'253'
retlw D'254'
retlw D'254'
retlw D'255'
retlw D'255'
retlw D'255'
retlw D'254'
retlw D'254'
retlw D'253'
retlw D'251'
retlw D'250'
retlw D'248'
retlw D'245'
retlw D'243'
retlw D'240'
retlw D'237'
retlw D'234'
retlw D'230'
retlw D'226'
retlw D'222'
retlw D'218'
retlw D'213'
retlw D'208'
retlw D'203'
retlw D'198'
retlw D'193'
retlw D'188'
retlw D'182'
retlw D'176'
retlw D'170'
retlw D'165'
retlw D'158'
retlw D'152'
retlw D'146'
retlw D'140'
retlw D'134'
retlw D'128'
retlw D'121'
retlw D'115'
retlw D'109'
retlw D'103'
retlw D'97'
retlw D'90'
retlw D'85'
retlw D'79'
retlw D'73'
retlw D'67'
retlw D'62'
retlw D'57'
retlw D'52'
retlw D'47'
retlw D'42'
retlw D'37'
retlw D'33'
retlw D'29'
retlw D'25'
retlw D'21'
retlw D'18'
retlw D'15'
retlw D'12'
retlw D'10'
retlw D'7'
retlw D'5'
retlw D'4'
retlw D'2'
retlw D'1'
retlw D'1'
retlw D'0'
retlw D'0'
retlw D'0'
retlw D'1'
retlw D'1'
retlw D'2'
retlw D'4'
retlw D'5'
retlw D'7'
retlw D'10'
retlw D'12'
retlw D'15'
retlw D'18'
retlw D'21'
retlw D'25'
retlw D'29'
retlw D'33'
retlw D'37'
retlw D'42'
retlw D'47'
retlw D'52'
retlw D'57'
retlw D'62'
retlw D'67'
retlw D'73'
retlw D'79'
retlw D'85'
retlw D'90'
retlw D'97'
retlw D'103'
retlw D'109'
retlw D'115'
retlw D'121'

; xxxxxxxx table triangle xxxxxxxxxxxxxxxxxxxxxxxxxxxx


org 0x0300 ; adresse de début de la table
table_triangle
addwf PCL , f
retlw D'255'
retlw D'251'
retlw D'247'
retlw D'243'
retlw D'239'
retlw D'235'
retlw D'231'
retlw D'227'
retlw D'223'
retlw D'219'
retlw D'215'
retlw D'211'
retlw D'207'
retlw D'203'
retlw D'199'
retlw D'195'
retlw D'191'
retlw D'187'
retlw D'183'
retlw D'179'
retlw D'175'
retlw D'171'
retlw D'167'
retlw D'163'
retlw D'159'
retlw D'155'
retlw D'151'
retlw D'147'
retlw D'143'
retlw D'139'
retlw D'135'
retlw D'131'
retlw D'128'
retlw D'124'
retlw D'120'
retlw D'116'
retlw D'112'
retlw D'108'
retlw D'104'
retlw D'100'
retlw D'96'
retlw D'92'
retlw D'88'
retlw D'84'
retlw D'80'
retlw D'76'
retlw D'72'
retlw D'68'
retlw D'64'
retlw D'60'
retlw D'56'
retlw D'52'
retlw D'48'
retlw D'44'
retlw D'40'
retlw D'36'
retlw D'32'
retlw D'28'
retlw D'24'
retlw D'20'
retlw D'16'
retlw D'12'
retlw D'8'
retlw D'4'
retlw D'0'
retlw D'4'
retlw D'8'
retlw D'12'
retlw D'16'
retlw D'20'
retlw D'24'
retlw D'28'
retlw D'32'
retlw D'36'
retlw D'40'
retlw D'44'
retlw D'48'
retlw D'52'
retlw D'56'
retlw D'60'
retlw D'64'
retlw D'68'
retlw D'72'
retlw D'76'
retlw D'80'
retlw D'84'
retlw D'88'
retlw D'92'
retlw D'96'
retlw D'100'
retlw D'104'
retlw D'108'
retlw D'112'
retlw D'116'
retlw D'120'
retlw D'124'
retlw D'128'
retlw D'131'
retlw D'135'
retlw D'139'
retlw D'143'
retlw D'147'
retlw D'151'
retlw D'155'
retlw D'159'
retlw D'163'
retlw D'167'
retlw D'171'
retlw D'175'
retlw D'179'
retlw D'183'
retlw D'187'
retlw D'191'
retlw D'195'
retlw D'199'
retlw D'203'
retlw D'207'
retlw D'211'
retlw D'215'
retlw D'219'
retlw D'223'
retlw D'227'
retlw D'231'
retlw D'235'
retlw D'239'
retlw D'243'
retlw D'247'
retlw D'251'

END

Vous aimerez peut-être aussi