hola electronicos, el dia de hoy quisiera pedir una asesoria sobre un problema que no pude resolver.
estoy trabajando con un pIC 16f628a programando un contador incremental, decremental. este contador visualisa el conteo en 4 display 7 segmentos.
el programa lo hice en asembler y me funciono perfectamente en el PIC simulator, pero cuando monte el circuito en el protoboard y lo probe no encendia el segmento E de todos los display, rastreando el circuito descubri que el segmento E del display de las decenas estaba dañado, pero es solo ese.
mi pregunta es en que afecta ese display a todos los demas si estan en palalelo y los estoy multiplexando.
el pulsador de incrementar esta conectado al pin RA6 y el pulsador decrementar esta conectado al pin RA7; uso el oscilador interno a 4 MHZ.
los display van conectados al puerto B y las lineas de control van a los pines A0-A3
aca les dejo el programa en asembler:
espero me puedan ayudar.
estoy trabajando con un pIC 16f628a programando un contador incremental, decremental. este contador visualisa el conteo en 4 display 7 segmentos.
el programa lo hice en asembler y me funciono perfectamente en el PIC simulator, pero cuando monte el circuito en el protoboard y lo probe no encendia el segmento E de todos los display, rastreando el circuito descubri que el segmento E del display de las decenas estaba dañado, pero es solo ese.
mi pregunta es en que afecta ese display a todos los demas si estan en palalelo y los estoy multiplexando.
el pulsador de incrementar esta conectado al pin RA6 y el pulsador decrementar esta conectado al pin RA7; uso el oscilador interno a 4 MHZ.
los display van conectados al puerto B y las lineas de control van a los pines A0-A3
aca les dejo el programa en asembler:
Código:
list p=16F877A
pc equ 02
status equ 03
porta equ 05
portb equ 06
trisa equ 85
trisb equ 86
v1 equ 20
v2 equ 21
contu equ 22
contd equ 23
contc equ 24
contm equ 25
reset org 00
goto inicio
org 05
inicio bsf status,5
movlw d'0'
movwf trisb
movlw b'11110000'
movwf trisa
bcf status,5
movlw d'0'
movwf contu
movwf contd
movwf contc
movwf contm
preg call ver
btfsc porta,6
goto noin
goto aumento
noin btfsc porta,7
goto preg
goto redusco
aumento call ver
btfss porta,6
goto aumento
goto sumo
redusco call ver
btfss porta,7
goto redusco
goto resto
sumo movf contu,w
xorlw d'9'
btfss status,2
goto nodiez
goto sidiez
nodiez incf contu,1
bcf status,2
goto preg
sidiez movlw d'0'
movwf contu
movf contd,w
xorlw d'9'
btfss status,2
goto nocien
goto sicien
nocien incf contd,1
bcf status,2
goto preg
sicien movlw d'0'
movwf contd
movf contc,w
xorlw d'9'
btfss status,2
goto nomil
goto simil
nomil incf contc,1
bcf status,2
goto preg
simil movlw d'0'
movwf contc
movf contm,w
xorlw d'9'
btfss status,2
goto nodm
goto sidm
nodm incf contm,1
bcf status,2
goto preg
sidm movlw d'0'
movwf contm
movwf contc
movwf contd
movwf contu
goto preg
resto movf contu,w
xorlw d'0'
btfss status,2
goto nocero
goto sicero
nocero decf contu,1
bcf status,2
goto preg
sicero movlw d'9'
movwf contu
movf contd,w
xorlw d'0'
btfss status,2
goto nodec
goto sidec
nodec decf contd,1
bcf status,2
goto preg
sidec movlw d'9'
movwf contd
movf contc,w
xorlw d'0'
btfss status,2
goto nocent
goto sicent
nocent decf contc,1
bcf status,2
goto preg
sicent movlw d'9'
movwf contc
movf contm,w
xorlw d'0'
btfss status,2
goto nom
goto sim
nom decf contm,1
bcf status,2
goto preg
sim movlw d'0'
movwf contm
movwf contc
movwf contd
movwf contu
goto preg
ver movlw b'1000'
movwf porta
call tablau
movwf portb
call ret
movlw d'0'
movwf portb
movlw b'0100'
movwf porta
call tablad
movwf portb
call ret
movlw d'0'
movwf portb
movlw b'0010'
movwf porta
call tablac
movwf portb
call ret
movlw d'0'
movwf portb
movlw b'0001'
movwf porta
call tablam
movwf portb
call ret
movlw d'0'
movwf portb
return
tablad movf contd,w
addwf pc,1
retlw b'00111111'
retlw b'00000110'
retlw b'01011011'
retlw b'01001111'
retlw b'01100110'
retlw b'01101101'
retlw b'01111100'
retlw b'00000111'
retlw b'01111111'
retlw b'01100111'
return
tablau movf contu,w
addwf pc,1
retlw b'00111111'
retlw b'00000110'
retlw b'01011011'
retlw b'01001111'
retlw b'01100110'
retlw b'01101101'
retlw b'01111100'
retlw b'00000111'
retlw b'01111111'
retlw b'01100111'
return
tablac movf contc,w
addwf pc,1
retlw b'00111111'
retlw b'00000110'
retlw b'01011011'
retlw b'01001111'
retlw b'01100110'
retlw b'01101101'
retlw b'01111100'
retlw b'00000111'
retlw b'01111111'
retlw b'01100111'
return
tablam movf contm,w
addwf pc,1
retlw b'00111111'
retlw b'00000110'
retlw b'01011011'
retlw b'01001111'
retlw b'01100110'
retlw b'01101101'
retlw b'01111100'
retlw b'00000111'
retlw b'01111111'
retlw b'01100111'
return
ret movlw d'30'
movwf v2
uno movlw d'40'
movwf v1
dos decfsz v1,1
goto dos
decfsz v2,1
goto uno
return
end
espero me puedan ayudar.
Última edición por un moderador: