Está en la página 1de 3

Contador de 0 a 9

R2

Reset

10k

R1
10k

U1
13
14
1
2
3
4
5
6
7
8
9
10

OSC1/CLKIN
OSC2/CLKOUT
MCLR/Vpp/THV

U2
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD

RA0/AN0
RA1/AN1
RA2/AN2/VREFRA3/AN3/VREF+
RA4/T0CKI
RA5/AN4/SS
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RE0/AN5/RD
RC2/CCP1
RE1/AN6/WR
RC3/SCK/SCL
RE2/AN7/CS
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
PIC16F877

;Contador de 0 a 9 en un display con PIC877


; ******** DEFINICION DE REGISTROS UTILIZADOS
pcl
equ
status equ
ptoa
equ
ptob
equ
ptoc
equ
ptod
equ
ptoe
equ
pclath equ
intcon equ
pir1
equ
rcsta equ
txreg equ
rcreg equ
adresh equ
adcon0 equ
trisa
equ
trisb
equ
trisc
equ
trisd
equ
trise
equ
txsta equ
spbrg equ
adresl equ

02h
03
05
06
07
08
09
0ah
0bh
0ch
18h
19h
1ah
1eh
1fh
85h
86h
87h
88h
89h
98h
99h
9eh

33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30

7
1
2
6
4
5
3

A
B
C
D
BI/RBO
RBI
LT
7448

QA
QB
QC
QD
QE
QF
QG

13
12
11
10
9
15
14

R3
R4
R5
220
R6
220
R7
220
R8
220
R9
220
220
220

adcon1 equ

9fh

;Definicin de bits utilizados


rp0
rp1
irp
z
c
txif
go

equ
equ
equ
equ
equ
equ
equ

5
6
7
2
0
4
2

;Variables del usuario


loops equ
loops2 equ
loops3 equ
dig0
equ
dig1
equ
dig2
equ
dig3
equ
contador equ

30h
31h
36h
32h
33h
34h
35h
37h

; ************ Configuracin para el simulador Proteus


list p=16f877
_CP_ALL
_CP_HALF
_CP_UPPER_256
_CP_OFF
_DEBUG_ON
_DEBUG_OFF
_WRT_ENABLE_ON
_WRT_ENABLE_OFF
_CPD_ON
_CPD_OFF
_LVP_ON
_LVP_OFF
_BODEN_ON
_BODEN_OFF
_PWRTE_OFF
_PWRTE_ON
_WDT_ON
_WDT_OFF
_LP_OSC
_XT_OSC
_HS_OSC
_RC_OSC

EQU
EQU
EQU
EQU

EQU
EQU
EQU
EQU

EQU
EQU
EQU
EQU

H'0FCF'
H'1FDF'
EQU
H'2FEF'
H'3FFF'
H'37FF'
EQU
H'3FFF'
EQU
H'3FFF'
EQU
H'3DFF'
H'3EFF'
H'3FFF'
H'3FFF'
H'3F7F'
EQU
H'3FFF'
EQU
H'3FBF'
EQU
H'3FFF'
EQU
H'3FF7'
EQU
H'3FFF'
EQU
H'3FFB'
H'3FFC'
H'3FFD'
H'3FFE'
H'3FFF'

__CONFIG _CP_OFF & _WDT_OFF & _XT_OSC & _PWRTE_ON


org
goto
retarms
otro2
otro

00
inicio

movwf loops
movlw d'110'
movwf loops2
nop
nop

;retardo de milisegundos cargado desde afuera

nop
nop
nop
nop
decfsz
goto
decfsz
goto
return
puertos

loops2,1
otro
loops,1
otro2

bcf
bsf
movlw
movwf
movlw
movwf
movlw
movwf
movlw
movwf
movlw
movwf
movlw
movwf
bcf
return

status,6
status,5
b'1111111'
trisa
b'11110000'
trisb
b'11111111'
trisc
b'11111111'
trisd
b'11101111'
trise
b'11110111'
adcon1
status,5

; ******** Programa Principal


inicio

call

puertos

clrf

contador

mostrar
ciclo

espera

movwf
btfsc
goto
movlw
call
btfss
goto
incf
movlw
xorwf
btfss
goto
goto
end

;borra contador

movf contador,0
;borrar W
ptob
;poner en cero el display
ptoa,0
;pregunta botn
ciclo
d'40'
;retardo de 40 ms
retarms
ptoa,0
;pregunta si soltaron botn
espera
contador,1
;incrementa numero del display
d'10'
;pregunta si paso de 9 para enviarlo a cero
contador,0
;compara con xor
status,2
;pregunta si es igual con bit de cero
mostrar
;diferente a diez entonces muestra el dgito
inicio
;igual a diez entonces empieza en cero otra vez

También podría gustarte