Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CHIHUAHUA
Microcontroladores
(15:00-14:00)
Prctica # 1
Intermitencia con el PIC16F884 (SEMAFORO) (ASM).
ALUMNOS
Gonzlez Garza Miguel Angel
Medina Pin Gustavo Abdi
Polo Aguilar Gabriela
Rodrguez Olivas Erick Daniel
13 de octubre 2014
CUENTA1
EQU
CUENTA2
EQU
F
w
EQU
EQU
1
0
ORG 00H
BSF STATUS,5
BCF TRISB,0
BCF STATUS,5
INICIO
BSF PORTB,0
CALL DELAY
BCF PORTB,0
CALL DELAY
GOTO INICIO
;=======================
;= DELAY: Subrutina de retardo
=
;= Modifica los siguientes registros: =
;= CUENTA1
=
;= CUENTA2
=
;=======================
;(Conviene hacerse un pequeo resumen de lo que
;hace cada subrutina, puede sernos muy til para
;usarla en otros programas)
;Subrurtina hecha con 2 lazos anidados
DELAY MOVLW
0ffH
MOVWF CUENTA1
ACA1 MOVLW 0FFH
MOVWF CUENTA2
ACA
DECFSZ CUENTA2,F
GOTO ACA
DECFSZ CUENTA1,F
GOTO ACA1
RETURN
;=
=
;= FIN DE LA SUBRUTINA DELAY =
;===========================
END
EQU
EQU
1
0
ORG 00H
BSF STATUS,5
BCF TRISB,0
BCF TRISB,1
BCF TRISB,2
BCF TRISB,3
BCF TRISB,4
BCF TRISB,5
;MOVLW 00H
;MOVF TRISB
BCF STATUS,5
;Carga un 0 al acumulador
;Asigna una cero todo el puerto
;banco 0
INICIO
MOVLW B'00100001'
MOVWF PORTB
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
MOVLW B'00100000'
MOVWF PORTB
CALL DELAY
MOVLW B'00100001'
MOVWF PORTB
CALL DELAY
MOVLW B'00100000'
MOVWF PORTB
CALL DELAY
MOVLW B'00100001'
MOVWF PORTB
CALL DELAY
MOVLW B'00100000'
MOVWF PORTB
CALL DELAY
MOVLW B'00100001'
MOVWF PORTB
CALL DELAY
MOVLW B'00100010'
MOVWF PORTB
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
MOVLW B'00001100'
MOVWF PORTB
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
MOVLW B'00001100'
MOVWF PORTB
CALL DELAY
MOVLW B'00001100'
MOVWF PORTB
CALL DELAY
MOVLW B'00000100'
MOVWF PORTB
CALL DELAY
MOVLW B'00001100'
MOVWF PORTB
CALL DELAY
MOVLW B'00000100'
MOVWF PORTB
CALL DELAY
MOVLW B'00001100'
MOVWF PORTB
CALL DELAY
MOVLW B'00010100'
MOVWF PORTB
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
GOTO INICIO
;repite el ciclo
;=======================
;= DELAY: Subrutina de retardo
=
;= Modifica los siguientes registros: =
;= CUENTA1
=
;= CUENTA2
=
;=======================
;(Conviene hacerse un pequeo resumen de lo que
;hace cada subrutina, puede sernos muy til para
;usarla en otros programas)
;Subrurtina hecha con 2 lazos anidados
DELAY
MOVLW 0ffH
;Carga el acumulador W con el valor
;de FFH (255 en decimal)
MOVWF CUENTA1
;Mueve el contenido del acumulador
;a CUENTA1
ACA1
MOVLW 0FFH
;Carga CUENTA2 con el valor FFH
MOVWF CUENTA2
ACA
DECFSZ CUENTA2,F
;Decrementa CUENTA2, guarda el resultado en
f(CUENTA2), y si es cero se salta la siguiente instruccin
GOTO ACA
;Vuelve a decrementar mientras CUENTA2 no sea
cero
DECFSZ CUENTA1,F
llega a cero
GOTO ACA1
y repite el proceso
RETURN
;=
=
;= FIN DE LA SUBRUTINA DELAY =
;===========================
END
V. Conclusin.
Gabriela Polo Aguilar
El semforo diseado cumple con los requisitos pedidos por el maestro, su funcionamiento
es correcto aunque tuvimos problemas al momento de direccionarlo todo al puerto B. Pero
al final se encontr la solucin al problema. Por otro lado el aplicar los conocimientos
vistos en clase nos ayud a comprender el funcionamiento y la importancia que tiene el
tiempo en este lenguaje, y a pesar de que en la actualidad se utiliza ms el lenguaje C este
no le resta importancia al lenguaje ensamblador. Porque siempre es importante conocer el
origen de las cosas y as comprender lo que actualmente se tiene.