Professional Documents
Culture Documents
;
;
; Sur la carte d'apprentissage, 4 leds sont utilises.
; Elles sont connectes sur le port A : RA0 RA3.
;
; RB4 est connect BP1.
; Ce programme incrmente le "file register" (variable) COUNT
; chaque appui sur BP1.
;
; La valeur de COUNT est affiche par les leds connectes sur le port A.
;
; Vous devez obtenir un affichage binaire de COUNT sur les leds LD5 LD8.
; La valeur doit s'incrmenter chaque appui sur BP1.
;
; -----------------------------------------------------------------------;
; VOUS DEVREZ MODIFIER LE PROGRAMME POUR QU'IL SOIT CONFORME
; A LA DESCRIPTION SUIVANTE :
;
; Modif 1 :
; Un appui sur BP2 doit remettre zro ce compteur.
;
; Modif 2 :
; Afficher la valeur du compteur de telle manire que :
;
1er appui sur BP1 allume LD1,
;
2nd appui sur BP1 allume aussi LD2,
;
....
;
8e appui sur BP1 allume toutes les leds.
;
9e appui sur BP1 teint toutes les leds.
;
10e appui sur BP1 allume nouveau LD1
;
....
;
; Modif 3 :
; La led LD4 doit clignotter tant que BP1 est appuy.
;
;
; NE MODIFIEZ AUCUNE LIGNE AU DESSUS DE L'INDICATION : "VOUS POUVEZ MODIFIER A PARTIR
D'ICI"
;
;
; ---------------------------------------------------------------------------------; Dbut du fichier assembleur.
; ----------------------------------------------------------------------------------
; OU
LIST
ERRORLEVEL
PROCESSOR
RADIX
P=16F84A,F=INHX8M
-302
16F84
DEC
;
;
;
;
#include
__CONFIG
__CONFIG
H'3FF1' ; XT
; B13..B4 : 3F ou 3E selon la valeur de B4
; B4:
CODE PROTECTION, 1=OFF
; B3:
POWER UP, 0=Valid
; B2:
WDOG, 1=Valid
; B1-0: OSC SELECT, 01=XT, 11=RC
__IDLOCS
H'1234'
; Octet d'identification
1/3
equ
0x10
;
;
ORG
GOTO
0
MAIN
ORG
GOTO
0x0004
PROGIT
;
;
;
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * VOUS POUVEZ MODIFIER A PARTIR D'ICI * * * * * * *
* * * * * * * * * * * * * * * * * * * * ** * * * * * * * * *
0010h
CALL
INIT
movlw
clrf
movwf
0
COUNT
PORTA
Loop
btfss
goto
Endloop
goto
IncCount
incf
movf
movwf
Debounce
btfss
goto
Enddebounce
goto
; W = 0
; COUNT = W
; affiche W sur le port A
PORTB,4
IncCount
Loop
COUNT,1
COUNT,w
PORTA
PORTB,4
Debounce
Loop
2/3
MOVLW
MOVWF
MOVLW
MOVWF
B'00010000'
PORTA
B'00000000'
PORTB
BSF
STATUS,RP0
MOVLW
MOVWF
B'00000111'
;
;
;
;
;
;
;
OPTION_REG
MOVLW
MOVWF
B'11110000'
TRISB
MOVLW
MOVWF
B'00000'
TRISA
BCF
STATUS,RP0
MOVLW
B'00000000'
;
;
;
;
;
;
;
INTCON
MOVWF
b6:
b5:
b4:
b3:
b2:
b1:
b0:
; b7: RBPU
- PORT B PULL-UP RES, 0=ON, 1=OFF
INTEDG - INT par Front sur RB0 : 0=H2L, 1=L2H
T0CS
- TMR0 SOURCE : 0=FOSC/4, 1=transition sur RA4
T0SE
- RA4CLK PIN EDGE SELECT, 0=L2H, 1=H2L
PSA
- CHOIX SOURCE (PRESCALE ASSIGN) 0=TIMER, 1=WDG
PS2
- PREDIVISEUR (PRESCALE RATE) :
PS1
Timer : 000 = /2 111 = /256
PS0
Wdt
: 000 = /1 111 = /128
; Diviseur Timer par 128
(0=OUTPUT, 1=INPUT)
b6:
b5:
b4:
b3:
b2:
b1:
b0:
RETURN
3/3