PRCTICA N 1
PRCTICA N 2
PRCTICA N 3
PRCTICA N 4
PRCTICA N 5
PRCTICA N 6
PRCTICA N 7
PRCTICA N 8
PRCTICA N 9
PRCTICA N 10
PRCTICA N 11
PROYECTOS:
PROYECTO N 1:
LUZ PRESENCIAL:
CERRADURA ELECTRNICA
PROYECTO N4:
TERMMETRO DIGITAL
PROYECTO N5:
PROYECTO N6:
RELOJ ELECTRNICO
PROYECTO N7:
PROYECTO N8:
CINCO VOLTMETROS
PROYECTO N9:
COMPROBADOR DE SERVOS
PROYECTO N10:
RODADOR DE MOTORES
PROYECTO N11:
PROYECTO N12:
PROYECTO N13:
PROYECTO N14:
activacin de buzzer
PROYECTO N15:
RELOJ CALENDARIO
PROYECTO N16:
PROYECTO N17:
REGULADOR DE POTENCIA
PROYECTO N18:
CONTROL DE SEMILLERO
PROYECTO N19:
PROYECTO N20:
TEMPORIZADOR
PROYECTO N21:
PROYECTO N22:
PROYECTO N23:
PROYECTO N24:
PROYECTO N25:
IZDO Y DCHO (NUEVO)
PRCTICA N 1
PRCTICA N 2
PRACTICA N 3
PRACTICA N 4
PRACTICA N 5
PRACTICA N 6
PRACTICA N 7
PRACTICA N 8
PRCTICA N 9
PRCTICA N 10
PRCTICA N 11
PRCTICA N 12
PRCTICA N 13
PRCTICA N 14
PRCTICA N1
Microcontrolador PIC16F84A.
Objetivo:
Encender y apagar cada segundo los leds conectados al puerto
B.
Esquema elctrico:
Programa:
;------------------------------------------------------
;PROGRAMA PORTB.ASM
;Apagar y encender el puerto B cada segundo
;------------------------------------------------------list
include
definidos.
p=16f84A;
"p16F84A.inc";
org
del re;
reset;
goto
comien;
00h;
inicio;
set ( 0000h ).
etiqueta = posicin de memoria.
salto a posicin de memoria donde
org
za el programa.
10h;
el
;
inicio;
STATUS,5;
movlw
00h;
movwf
TRISB;
bcf
STATUS,5;
00h.
;
;
;---------------------------------;PROGRAMA PRINCIPAL
;----------------------------------programa;
principal.
etiqueta de programa
movlw
movwf
00h;
PORTB;
;
call
movlw
movwf
sg1;
0ffh;
PORTB;
;
call
sg1;
goto
programa;
programa.
;-----------------------------------------------;RETARDOS
;-----------------------------------------------;ffh=255 goto=2 useg. decfsz=1 useg.
;(255 x 2) + 255= 765 useg
;(765 x 765) + 255= 585480 useg.
;(585480 x 2) + 1= 1170961 useg.
sg1;
1 seg.
0ffh;
0ch;
0dh;
movlw
movwf
01h;
0eh;
salto1 ;
repeticin.
decfsz
si es
;
0ch.
goto
0ch,1;
salto1;
decfsz
0dh,1;
si es
;
0dh.
goto
decfsz
salto1;
0eh,1;
si es
;
0eh.
salto a salto1.
decremento el registro 0eh y salto
cero depositando el resultado en
goto
salto1;
salto a salto1.
return;
regreso de
end;
subrutina.
PRCTICA N 2
Microcontrolador PIC16F84A.
Objetivo:
Swapf f,d
Rlf f,d
Rrf f,d
swapf 0ch,1
rlf 0ch,1
Ejemplo:
rrf 0ch,1
Esquema elctrico:
Programa:
;-------------------------------------------------------;PROGRAMA LED.ASM
;Apagar y encender el puerto B cada segundo
;--------------------------------------------------------
list
p=16f84A
include
"p16F84A.inc"
org 00h
reset
goto inicio
org 10h
inicio
bsf
STATUS
STATUS,5;
movlw
00h;
movwf
TRISB;
00h.
para
;
;
0.
STATUS,5;
;----------------------------------;PROGRAMA PRINCIPAL
;----------------------------------programa
movlw
movwf
00h;
PORTB;
call
sg1;
call
sg1
movlw
0fh;
movwf
PORTB;
call
sg1
call
sg1
swapf
PORTB,1;
aplico la intruccin al
y lo deposito en el mismo ya
que d= 1.
call
call
sg1
sg1
movlw
0ffh;
movwf
PORTB;
call
call
call
sg1
sg1
rotacion;
ma principal.
;------------------------------------------------------------;PROGRAMA DE ROTACION.
;------------------------------------------------------------rotacion
movlw
00h;
movwf
10h;
movlw
09h;
movwf
11h;
bsf
;
acarreo ).
( bit 0 = C =
der
decfsz
salto si
11h,1;
;
en
11h ya que d= 1.
goto
derecha;
llama;
da derecha.
movlw
08h;
movwf
11h;
bcf
( bit 0 = C = acarreo ).
izq
decfsz
salto
11h,1;
;
conteni-
;
1.
do en el mismo ya d=
goto
lla;
izquierda.
mada
return;
regreso de subrutina.
derecha
rrf
10h,0;
;
ya
que d= 0.
movwf
10h;
movwf
PORTB;
w.
w.
izquierda
call
sg1
goto
der;
rlf
10h,0;
del
;
ya
que d= 0.
movwf
10h;
movwf
PORTB;
w.
call
sg1
goto
izq;
;RETARDOS
;---------------------------------------;ffh=255 goto=2 useg.
decfsz=1 useg.
sg1
movlw
0ffh
movwf
0ch
movwf
0dh
movlw
01h
movwf
0eh
salto1
decfsz
0ch,1
goto
salto1
decfsz
0dh,1
goto
salto1
decfsz
0eh,1
goto
salto1
return
end
PRACTICA N 3
Microcontrolador PIC16F84A.
Objetivo:
Pasos:
1 paso:
2 paso:
3paso:
Programa:
;--------------------------------------------------------;PROGRAMA inter.ASM
;Cmo funciona la interrupcin externa /Int.
;--------------------------------------------------------list
include
p=16f84A
"p16F84A.inc"
;--------------------------------------------------;RESET
;--------------------------------------------------org
00h
goto
inicio
reset
;-----------------------------;INTERRUPCION
;-----------------------------org
04h
goto
int
;-------------------------------;PUNTERO DE INICIO
;-------------------------------org
inicio
10h
STATUS,RP0;
00h;
TRISA;
STATUS,RP0;
;----------------------;PuertoA apagado.
;----------------------movlw
00h
movwf
PORTA
banco1
puertoA como salida
banco0
STATUS,RP0;
OPTION_REG,INTEDG;
STATUS,RP0;
banco1
flanco descendente
banco0
INTCON,GIE;
INTCON,INTE;
;--------------------------------------------------------------------;Esperando la interrupcin.
;Cuando pulse el botn provoco un flanco de bajada y salgo del
;bucle de espera. La bandera pasa a 1 y salto al programa de la in;terrupcin y luego al programa principal, haciendo infinitos bucles.
;La /Int la uso como autorizacin (pulsar el botn) para ejecutar
;el programa principal.
;--------------------------------------------------------------------espera
btfss
INTCON,INTF;
salta si es uno
goto
espera;
;
;
;
;
;
;
;-------------------------------------------------;PROGRAMA PRINCIPAL
;-------------------------------------------------programa
movlw
movwf
00h;
PORTA
call
sg1
movlw
movwf
0ffh;
PORTA
call
sg1
goto
apago puerto A.
enciendo puerto A.
programa
;-----------------------------------------------------------------------------------------;INTERRUPCION DE /Int.
;-----------------------------------------------------------------------------------------;Deshabilitar permiso de int. global y particular de /Int.
;Con deshabilitar una de los dos bastara para no haber ms interrupciones.
int
bcf
INTCON,GIE;
bcf
INTCON,INTE;
;
;
0 para no ms interrupciones
de ningn tipo.
0 para no ms interrupcin
/Int.
INTCON,INTF;
retfie;
0 por software.
retorno de subrutina de interrupcin.
;------------------------------------------------------------------------;Retardos.
;-------------------------------------------------------------------------;c1h=193 goto=2 useg. decfsz=1 useg.( salta si 0 ).
;(193 x 2) + 193 = 579 useg
;(579 x 579) = 335241 useg.
;(335241 x 3) = 1005723 useg.
;0ch, 0dh y 0eh registros RAM del GPR
;---------------------------------------sg1;
1005723 useg.
movlw
movwf
movwf
0c1h
0ch
0dh
movlw
movwf
01h
0eh
salto1
decfsz
goto
0ch,1
salto1
decfsz
goto
0dh,1
salto1
decfsz
0eh,1
goto
salto1
return
;------------------------sg500; 497025 useg.
movlw
movwf
movwf
0e6h;
0ch
0dh
salto2 decfsz
goto
0ch,1
salto2
decfsz
goto
e6h= 235
0dh,1
salto2
return
;-------------------------sg250; 251001 useg.
movlw
movwf
movwf
0a7h;
0ch
0dh
a7h= 167
salto3
decfsz
goto
0ch,1
salto3
decfsz
goto
0dh,1
salto3
return
;--------------------------sg125; 125316 useg.
movlw
76h;
76h= 118
movwf
movwf
0ch
0dh
salto4
decfsz
goto
0ch,1
salto4
decfsz
goto
0dh,1
salto4
return
;---------------------------------end
PRCTICA N 4
Microcontrolador PIC16F84A.
Objetivo:
Pasos:
Esquema elctrico:
Programa:
;---------------------------------------------;PROGRAMA CONTADOR.ASM
;Probar el contador y su interrupcin.
;---------------------------------------------list
include
p=16f84A
"p16F84A.inc"
;------------------------------
;RESET
;-----------------------------org 00h
reset
goto inicio
;-----------------------------;INTERRUPCION
;-----------------------------org 04h
goto int
;-----------------------------;PUNTERO DE INICIO
;-----------------------------org 10h
inicio
;----------------------------------------------------;Configurar el puerto A como salida
;----------------------------------------------------;Registro TRISA= 00h para salidas.
bsf
movlw
movwf
bcf
STATUS,RP0; banco1
00h;
TRISA;
puertoA como salida
STATUS,RP0; banco0
;PuertoA apagado
movlw
movwf
00h
PORTA
STATUS,RP0;
OPTION_REG,T0SE
OPTION_REG,T0CS
STATUS,RP0;
banco1
banco0
0ffh
TMR0;
;
;
;
;--------------------------------------------;Preparar interrupciones.
;--------------------------------------------;Habilitar permiso de interrupcin global.
bsf
INTCON,GIE
INTCON,T0IE
INTCON,T0IF;
;
;
;
;
espera
;----------------------------------;PROGRAMA PRINCIPAL
;----------------------------------programa
movlw
movwf
00h
PORTA;
call
sg1
movlw
movwf
0ffh;
PORTA
call
sg1
goto
programa
apago el puertoA
INTCON,GIE
INTCON,T0IE
enciendo el puertoA
bcf
INTCON,T0IF
retfie;
;-----------------------------------------------------------------;Retardos.
;-----------------------------------------------------------------;c1h=193 goto=2 useg. decfsz=1 useg.( skip if 0 ).
;(193 x 2) + 193 = 579 useg
;(579 x 579) = 335241 useg.
;(335241 x 3) = 1005723 useg.
;0ch, 0dh y 0eh registros RAM del GPR
;---------------------------------------------------sg1;
1005723 useg.
movlw
movwf
movwf
0c1h
0ch
0dh
movlw
movwf
01h
0eh
salto1
decfsz
goto
0ch,1
salto1
decfsz
goto
0dh,1
salto1
decfsz
goto
0eh,1
salto1
return
;-------------------------
0e6h;
0ch
0dh
salto2
decfsz
goto
0ch,1
salto2
decfsz
goto
0dh,1
salto2
e6h= 235
return
;-------------------------sg250; 251001 useg.
movlw
movwf
movwf
0a7h;
0ch
0dh
salto3
decfsz
goto
0ch,1
salto3
decfsz
goto
0dh,1
salto3
a7h= 167
return
;-----------------------------------------------sg125; 125316 useg.
movlw
movwf
movwf
76h;
0ch
0dh
76h= 118
salto4
decfsz
goto
0ch,1
salto4
decfsz
goto
0dh,1
salto4
return
;---------------------------------end
PRCTICA N 5
Microcontrolador PIC16F84A
Objetivo:
Encender y apagar cada segundo un led conectado al puerto
PA2. Se usar el timer0 para hacer la temporizacin.
Esquema elctrico:
Programa:
;----------------------------------------------;PROGRAMA TIMER0.ASM
;Temporizador con el timer0
;haciendo on-off un led seg. alternos.
;----------------------------------------------list
p=16F84A
include "p16F84A.inc"
;-----------------;RESET
;------------------
org 00h
reset
goto inicio
;--------------------------INTERRUPCIONES
;--------------------------org 04h
goto int
;------------------------------;Comienzo del programa
;------------------------------org 10h
inicio
;----------------------------------------------;Configurar el puertoA como entrada
;excepto el PA2 que ser salida.
;----------------------------------------------;1= entradas, 0= salidas
;PA3,4= 1; PA2= 0; PA1,0= 1
;Registro TRISA= ---1 1011b= 1bh
bsf
movlw
movwf
bcf
STATUS,RP0;
1bh
TRISA
STATUS,RP0
banco1
PORTA,2;
poner 0 en la puerta 2.
;apagar led
bcf
;-----------------------------------------bsf
STATUS,RP0;
movlw
87h;
movwf
OPTION_REG
bcf
STATUS,RP0;
;
;
;
;
;
;
;
;
banco1
Divido la frecuencia entre 256 poniendo PS0,PS1 y PS2= 1; PSA= 0
asigno el divisor de frecuencia a
TMR0; T0SE= 0 flanco ascendente;
T0CS= 0 pulsos de reloj interno de
f= fosc./4; INTEDG:= 0 flanco descendente (no usada la /int);
/RBP0= 1 desactivadas (no usadas las
resistencias pull-up puerta B).
banco0
INTCON,GIE;
INTCON,T0IE;
64h;
0eh
;-------------------------------------;Programa principal
;-------------------------------------programa
bsf
;
PORTA,2;
lcall
cuenta1;
bcf
PORTA,2;
lcall
retardo 1 sg.
poner 0 en el PA2, apago el led.
cuenta1
goto programa;
salto a programa
INTCON,T0IE;
INTCON,T0IF;
movlw
movwf
0d8h;
TMR0;
btfss
INTCON,T0IF;
goto
cuenta;
cuenta
;
decfsz
0eh,1;
goto
cuenta1
movlw
64h;
salta si es 1. Espero la
interrupcin por
desbordamiento.
decrementa 0eh y salta si es
cero.
64h= 100
movwf
return
0eh
;--------------------------------------;Tratamiento de la interrupcin.
;--------------------------------------int
bcf INTCON,T0IE;
bcf INTCON,T0IF;
retfie;
end
La corriente elctrica que usamos en la vida diaria es una seal alterna senoidal como la de
la figura:
Al pasar esta corriente elctrica por la lmpara haremos que se ilumine al 100 %.
Si nos las ingeniamos para que la seal aplicada a la lmpara se recorte como se ve
en la figura siguiente, obtendremos valores de iluminacin entre un 0% y un 100%.
;----------------------------------------------------------------------------;PROGRAMA COMPROBADO:
;Manejo de la instruccin RETLW
;Realizaremos un contador de eventos
;con TMR0 (de 00h a 0Fh).
;----------------------------------------------------------------------------;PIC 16F84A/ 4 MHz/
;Bits de configuracin para el programador:
;CP(proteccin de la memoria de cdigo):..............................No
;PWRTE(activacin del temporizador "Power-up"):..............No
;WDTE(activacin del "perro guardin"):...............................No
;FOSC1-FOSC0(tipo de oscilador):.........................................Xtal
;------------------------------------------------------------------------------;PROGRAMA
LIST
p=16f84A
INCLUDE
"p16f84A.inc"
ORG
goto
00h
inicio
ORG
10h
tabla
movf TMR0,0
andlw 0fh
addwf PCL,1
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
3fh
06h
5bh
4fh
66h
6dh
7dh
07h
7fh
67h
77h
7ch
39h
5eh
79h
71h
inicio
;Configurar el puerto B salida
call
movlw
movwf
call
banco1
00h
TRISB
banco0
movlw
movwf
00h
PORTB
;Configurar el TMR0.
call
bsf
bsf
call
banco1
OPTION_REG,T0SE
OPTION_REG,T0CS
banco0
clrf
TMR0
programa
call
tabla
movwf
PORTB
goto
programa
return
END