InicioCiencia Educacionhacer un contador en ensamblador

hacer un contador en ensamblador

Ciencia Educacion•6/28/2013
que tal banda, aqui les dejo como hacer un contador en ensamblador usando 3 push button, un pic 16f84a y un display de 7 segmentos
hay diferentes formas de hacerlo, aqui es usando solo comparaciones

el primer push cuenta de 0 hasta 9
el segundo push cuenta de 0 hasta 5
el tercer push cuenta de 0 hasta 7


y aquie el .asm


;----------------------------------------------------------------
;ZONA DE DATOS
__CONFIG _CP_OFF &_WDT_OFF &_PWRTE_ON &_XT_OSC

LIST P=16F84A
INCLUDE<P16F84A.INC>
CBLOCK 0x0C
ENDC
ORG 0
inicio bsf STATUS,RP0
clrf TRISB
movlw b'00111111'
movwf TRISA
bcf STATUS,RP0
movlw b'00111111'
movwf PORTB

boton0 btfsc PORTA,0;si vale uno ejecuta la siguiente instruccion
goto boton1
goto apagado
boton1 btfsc PORTA,1;si vale uno ejecuta la siguiente instruccion
goto boton2
goto aapagado
boton2 btfsc PORTA,2;si vale uno ejecuta la siguiente instruccion
goto principal
goto xapagado

principal movfw PORTB
movwf PORTB
goto boton0
apagado ;rlf PORTB,1
movlw b'00111111'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto noigual1 ;no es igual
goto igual1 ;si es igual
;call Retardo_100ms
;goto boton
igual1 movlw b'00000110';1
movwf PORTB
call Retardo_100ms
goto principal
noigual1 movlw b'00000110'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto noigual2 ;no es igual
goto igual2 ;si es igual
igual2 movlw b'01011011';2
movwf PORTB
call Retardo_100ms
goto principal
noigual2 movlw b'01011011'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto noigual3 ;no es igual
goto igual3 ;si es igual
igual3 movlw b'01001111';3
movwf PORTB
call Retardo_100ms
goto principal
noigual3 movlw b'01001111'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto noigual4 ;no es igual
goto igual4 ;si es igual
igual4 movlw b'01100110';4
movwf PORTB
call Retardo_100ms
goto principal
noigual4 movlw b'01100110'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto noigual5 ;no es igual
goto igual5 ;si es igual
igual5 movlw b'01101101';5
movwf PORTB
call Retardo_100ms
goto principal
noigual5 movlw b'01101101'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto noigual6 ;no es igual
goto igual6 ;si es igual
igual6 movlw b'01111101';6
movwf PORTB
call Retardo_100ms
goto principal
noigual6 movlw b'01111101'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto noigual7 ;no es igual
goto igual7 ;si es igual
igual7 movlw b'00000111';7
movwf PORTB
call Retardo_100ms
goto principal
noigual7 movlw b'00000111'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto noigual8 ;no es igual
goto igual8 ;si es igual
igual8 movlw b'11111111';8
movwf PORTB
call Retardo_100ms
goto principal
noigual8 movlw b'11111111'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto noigual9 ;no es igual
goto igual9 ;si es igual
igual9 movlw b'01100111'
movwf PORTB
call Retardo_100ms
goto principal
noigual9 movlw b'01100111'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto iguala ;no es igual
goto iguala ;si es igual
iguala movlw b'00111111'
movwf PORTB
call Retardo_100ms
goto principal
;boton 1
aapagado ;rlf PORTB,1
movlw b'00111111'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto nnoigual1 ;no es igual
goto iigual1 ;si es igual
;call Retardo_100ms
;goto boton
iigual1 movlw b'00000110';1
movwf PORTB
call Retardo_100ms
goto principal
nnoigual1 movlw b'00000110'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto nnoigual2 ;no es igual
goto iigual2 ;si es igual
iigual2 movlw b'01011011';2
movwf PORTB
call Retardo_100ms
goto principal
nnoigual2 movlw b'01011011'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto nnoigual3 ;no es igual
goto iigual3 ;si es igual
iigual3 movlw b'01001111';3
movwf PORTB
call Retardo_100ms
goto principal
nnoigual3 movlw b'01001111'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto nnoigual4 ;no es igual
goto iigual4 ;si es igual
iigual4 movlw b'01100110';4
movwf PORTB
call Retardo_100ms
goto principal
nnoigual4 movlw b'01100110'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto nnoigual5 ;no es igual
goto iigual5 ;si es igual
iigual5 movlw b'01101101';5
movwf PORTB
call Retardo_100ms
goto principal
nnoigual5 movlw b'01101101'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto iigual6 ;no es igual
goto iigual6 ;si es igual
iigual6 movlw b'00111111';6
movwf PORTB
call Retardo_100ms
goto principal


;boton2
xapagado ;rlf PORTB,1
movlw b'00111111'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto xnoigual1 ;no es igual
goto xigual1 ;si es igual
;call Retardo_100ms
;goto boton
xigual1 movlw b'00000110';1
movwf PORTB
call Retardo_100ms
goto principal
xnoigual1 movlw b'00000110'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto xnoigual2 ;no es igual
goto xigual2 ;si es igual
xigual2 movlw b'01011011';2
movwf PORTB
call Retardo_100ms
goto principal
xnoigual2 movlw b'01011011'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto xnoigual3 ;no es igual
goto xigual3 ;si es igual
xigual3 movlw b'01001111';3
movwf PORTB
call Retardo_100ms
goto principal
xnoigual3 movlw b'01001111'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto xnoigual4 ;no es igual
goto xigual4 ;si es igual
xigual4 movlw b'01100110';4
movwf PORTB
call Retardo_100ms
goto principal
xnoigual4 movlw b'01100110'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto xnoigual5 ;no es igual
goto xigual5 ;si es igual
xigual5 movlw b'01101101';5
movwf PORTB
call Retardo_100ms
goto principal
xnoigual5 movlw b'01101101'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto xnoigual6 ;no es igual
goto xigual6 ;si es igual
xigual6 movlw b'01111101';6
movwf PORTB
call Retardo_100ms
goto principal
xnoigual6 movlw b'01111101'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto xnoigual7 ;no es igual
goto xigual7 ;si es igual
xigual7 movlw b'00000111';7
movwf PORTB
call Retardo_100ms
goto principal
xnoigual7 movlw b'00000111'
subwf PORTB,W
btfss STATUS,Z ;compruebo
goto xigual8 ;no es igual
goto xigual8 ;si es igual
xigual8 movlw b'00111111';8
movwf PORTB
call Retardo_100ms
goto principal

INCLUDE <RETARDOS.INC>
END
Datos archivados del Taringa! original
33puntos
2,613visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
13visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

l
lugotache🇦🇷
Usuario
Puntos0
Posts2
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.