hola
;
PRACTICA 1
;
;
Autor: Mikel Etxebarria
;
(c) Microsystems Engineering (Bilbao)
;
;
;Leer el estado de los 5 interruptores E0-E4 conectados a RA0-RA4 y reflejar el nivel lógico de
;los mismos sobre los leds S0-S4 conectados en RB0-RB4
List
p=16F84
include "P16F84.INC"
con los nombres
;Tipo de procesador
;Incluye el fichero P16F84.INC que contiene la definición
;de losregistros internos
org
goto
Loop
;Vector de Reset
org
Inicio
0x00
Inicio
0x05
;Salva el vector de interrupción
clrf
bsf
clrf
movlw
movwf
bcf
PORTB
STATUS,RP0
TRISB
b'00011111'
TRISA
STATUS,RP0
;Borra los latch de salida
;Selecciona banco 1 de la memoria de datos
;Puerta B se configura como salida
movf
movwf
goto
PORTA,W
PORTB
Loop
;Leer lasentradas RA0-RA4
;Reflejar en las salidas
;Bucle sin fin
end
;Puerta A se configura como entrada
;Selecciona banco 0 de la memoria de datos
;Fin del programa fuente
;
;
PRACTICA 2
;
;
Autor: Mikel Etxebarria
;
(c) Microsystems Engineering (Bilbao)
;
;Una lámpara conectada en RB0 se controla mediante dos interruptores conectados en RA0 y RA1.
;Cuando cualquiera de losinterruptores cambie de estado, la lámpara también lo hará.
List
p=16F84
include "P16F84.INC"
Temp
;Tipo de procesador
;Incluye el fichero P16F84.INC que contiene la definición
;con los nombres de los registros internos
;Variable temporal que se almacena en la posición 0x0c
;Salva el vector de interrupción
clrf
bsf
clrf
movlw
movwf
bcf
PORTB
STATUS,RP0
TRISB
b'00000011'
TRISASTATUS,RP0
;Borra los latch de salida
;Selecciona banco 1 de la memoria de datos
;Puerta B se configura como salida
Temp
;Pone a 0 el registo o variable temporal
movf
andlw
PORTA,W
b'00000011'
;Leer el estado de la puerta A
;Filtra la información leída y nos quedamos con el estado
Temp
STATUS,Z
Apagar
b'00000001'
Temp,W
STATUS,Z
Encender
b'00000010'
Temp,W
STATUS,ZEncender
;Almacena temporalmente
;RA0=0 y RA1=0 ??
;Si, la lámpara se apaga
bcf
PORTB,0
;No, la lámpara se apaga
goto
Encender
0x05
movwf
btfsc
goto
movlw
subwf
btfsc
goto
movlw
subwf
btfsc
goto
Apagar
;Vector de Reset
clrf
de RA0 y RA1
0x00
Inicio
org
Loop
0x0c
org
goto
Inicio
equ
Loop
bsf
PORTB,0
goto
Loop
end;RA0 y RA1 se configuran como entrada
;Selecciona banco 0 de la memoria de datos
;RA0=1 y RA1=0 ??
;Si, la lámpara se enciende
;RA0=0 y RA1=1 ??
;Si, la lámpara se enciende
;La lámpara se enciende
;Fin del programa fuente
;
;
PRACTICA 3
;
;
Autor: Mikel Etxebarria
;
(c) Microsystems Engineering (Bilbao)
;
;Programa combinacional
;
;Según el estado de losinterruptores RA0 y RA1, activar los
;puerta B, conforme a la siguiente tabla de la verdad:
;
;
RA1
RA0
RB7
RB6
RB5
RB4
;
------;
0
0
1
0
1
0
;
0
1
0
1
0
1
;
1
0
0
0
0
0
;
1
1
1
1
1
1
leds RB0-RB7 conectados a la
RB3
-1
0
1
0
RB2
-0
1
1
0
RB1
-1
0
1
0
RB0
-0
1
1
0
Loop:
0x00
Inicio
;Vector de Reset
org
Inicio
;Tipo deprocesador
;Incluir la definición de los registros internos
;Variable temporal
org
goto
Temp
List
p=16F84
include "P16F84.INC"
equ
0x0c
0x05
;Salva el vector de interrupción
clrf
bsf
clrf
movlw
movwf
movlw
movwf
bcf
PORTB
STATUS,RP0
TRISB
b'00001001'
OPTION_REG
b'00000011'
TRISA
STATUS,RP0
;Borra los latch de salida
;Selecciona banco 1
;Puerta B se configuracomo salida
clrwdt
movf
andlw
movwf
btfsc
goto
movlw
PORTA,W
b'00000011'
Temp
STATUS,Z
Secuencia_00
b'00000001'
;Preescaler de 1:2 asociado al WDT
;RA0 y RA1 se configuran como entrada
;Selecciona banco 0
;Refrescar el WDT
;Carga el valor de la PUERTA A
;Filtra el estado de RA0 y RA1
;Almacena temporalmente
;Están a 00 ?
;Si
subwf
btfsc
goto
movlw
subwf...
Regístrate para leer el documento completo.