Documente Academic
Documente Profesional
Documente Cultură
Grupo:
Fecha de entrega: 24 marzo 2006
Fecha examen: 24 marzo del 2006. INAMOVIBLE
SI PONEIS OTRO EXAMEN ESE DA DE OTRO
PROFESOR: LO SIENTO
Ojo: Como mnimo 3 firmas por da de clase, as
que espabila, y trabaja las prcticas en casa
Puedes rellenar las prcticas con lpiz.
Rellena esta tabla al entregar la prctica:
Pract
2
3
4
5
6
Suma
firmas
Max
3
11
11
9
9
43
Nota
6.88
La nota de las firmas se calcula multiplicando la suma de las firmas por 0.16
A rellenar
por el profesor:
FIRMA
Nota firmas:
Presentacin 0 a 3.12
Nota final:
Curso 2005-06
1 Introduccin
1.1 Microcontroladores
Los microcontroladores estn presentes en muchos electrodomsticos y aparatos
electrnicos comunes: Telfonos, teclados de ordenadores, electrodomsticos, hornos
microondas, cmaras, videos, TV, impresoras, modem... cualquier dispositivo
electrnico que tenga que controlar un proceso. Antes se realizaba con lgica
combinacional, discreta, hoy en da se realiza todo en un solo chip, que tiene los
elementos indispensables para decir que se trata de un ordenador integrado en un solo
circuito integrado.
Automocin
Tiene integrado las siguientes partes :
Perifricos de
PC
33%
10%
Industria
16%
Telecom
16%
Electrodom
25%
1.2 PIC
Los PIC son C fabricados por Microchip (www.microchip.com) se clasifican por su
anchura de palabra, los hay de 4, 8, 16, 32 bits, los ms comunes por su versatilidad en
multitud de aplicaciones son los de 8 bits.
Dentro de la familia de PIC de 8 bits podemos encontrar 4 familias:
Familia Enana PIC12C(F)XXX de tan slo 8 pines, slo 33 instrucciones
Familia Baja PIC 16C5X con 18 y 28 pines, ms prestaciones que la enana.
Familia Media PIC16C(F)XXX esta es la familia ms variada de PICs dentro de esta
familia se encuentra el 16X84 que ser objeto de estudio. Los encapsulados van desde
18 hasta 68 pines.
Familia Alta PIC17CXXX con 58 instrucciones de 16 bits cada una, son ms parecidos
a los microprocesadores que a los microcontroladores
Curso 2005-06
FIRMA
Curso 2005-06
list p=16f84A
#include p16f84a.inc
Tiempo EQU 22h
Vueltas EQU 23h
org 0
CONFIGURAR
BSF STATUS,RP0
BCF
TRISB,0
BCF
STATUS,RP0
COMIENZO
BSF PORTB,0
CALL RETARDO
BCF PORTB,0
CALL RETARDO
CALL RETARDO
GOTO COMIENZO
RETARDO
MAS
MOVLW b'11001000'
MOVWF Vueltas
DECFSZ Tiempo
GOTO MAS
MOVLW b'11111111'
MOVWF Tiempo
DECFSZ Vueltas
GOTO MAS
RETURN
END
Bucle:
High 0
Pause 500
Low 0
Pause 500
GoTo bucle
End
|
( ) 16C84
|
( ) 16F84
|
(*) 16F84A
[ OK - Enter ]
< Cancel - Esc >
< Help - F1 >
|
+----------------------------------------------------------------+
:0C000000830100308A0004288301B52B26
:10076A0083168601831286018C018C0A8D010D087D
:10077A00803A8E0080300E020A3003190C02031CE4
:10078A00C72BC82BC92BDA2BCA2B8C0A03198D0A43
:10079A000D08803A83128E0080300E020A30031947
:1007AA000C02031CD92BDA2BC92B013083128600C9
:1007BA008C018C0A8D010D08803A8E0080300E0261
:1007CA000A3003190C02031CEB2BEC2BED2BFE2B2E
:1007DA00EE2B8C0A03198D0A0D08803A83128E00BB
:1007EA0080300E020A3003190C02031CFD2BFE2B6B
:0607FA00ED2BB72B0428D3
:00000001FF
Qu significa TRISB=0b00000000 ?
Curso 2005-06
Una vez hecho esto, se vuelve a compilar F3, salir del programa y entrar en
IcProg, la primera vez que se ejecuta hay que decir que programador se usa, en
nuestro caso se llama JDM Programer en COM1 o COM2
Conectamos nuestra Tarjeta grabadora PIC TE20 , pulsar el botn de abrir
Y buscamos nuestro Prueba.hex
Una vez cargado apretamos al botn de programar
El aspecto de nuestro programa ser el siguiente: (antes desactivar el WatchDog: WDT)
Una vez programado, sacaremos nuestro PIC del programador, y montaremos el circuito
de la ilustracin 1. Tiene que hacer un intermitente por B0
firma
ATENCION: IC-PROG EN WIN-XP :Se debe de tener en la misma carpeta que el ejecutable IcProg.exe
el archivo icprog.sys. Este fichero se puede descargar de www.ic-prog.com . Adems hay que habilitar el
Driver NT/2000/XP en el IcProg pulsando en Ajustes->Opciones->Miscelanea.
Curso 2005-06
PORTB=PORTA;
Curso 2005-06
firma simupic
firma PIC
3.2 Ejercicio
Se desea realizar un juego de luces por el puerto B de la forma que se indica en la figura
Solucin ejer3-2.c
firma
simupic
firma PIC
3.3 Ejercicio
Se desea realizar una intermitencia por todo el puerto B
Solucin ejer3-3.c
firma simupic
firma PIC
10
Curso 2005-06
3.4 Ejercicio
Se desea realizar un juego de luces como el indicado en la figura
Solucin ejer3-4.c
firma simupic
firma PIC
3.5 Ejercicio
Enunciado libre, colorea en la figura el juego de luces que desees
Solucin ejer3-5.c
firma simupic
firma PIC
firma
dificultad
11
Curso 2005-06
firma simupic
firma PIC
4.2 ejercicio
Realizar un programa que lo que entre por el puerto A se visualice por el puerto B de
forma intermitente
Solucin ejer4-2.c
firma simupic
firma PIC
12
Curso 2005-06
4.3 ejercicio
Realizar un programa que lo que entra por el puerto A se visualice al revs en el puerto
B y los 4 bits que sobran que hagan una intermitencia
firma simupic
Solucin ejer4-3.c
#include <pic.h>
main(){
int i;
int x,y,z;
TRISA=0b11111;
TRISB=0b00000000;
for(;;){
x=PORTA;
y=~x;
z=y&0b00001111;
PORTB=z;
for (i=0;i<10;i++) continue;
z=y|0b11110000;
PORTB=z;
for (i=0;i<10;i++) continue;
}
}
firma PIC
4.4 ejercicio
Realizar un programa que lo que entra por el puerto A se visualice al revs por el puerto B
Solucin ejer4-4.c
firma simupic
firma PIC
4.5 ejercicio
Ejercicio de libre enunciado
firma simupic
firma PIC
firma
dificultad
13
Curso 2005-06
firma PIC
5.2 ejercicio
Realizar un programa de tal manera que si A0=0 hay un intermitente por B0 su A0=1
hay intermitente por B1
solucin ejer5-2.c
/* ********************
si A0=0 intermitente B0
si A0=1 intermitente B1
**********************/
#include <pic.h>
main(){
int i;
TRISA=0b11111;
TRISB=0b00000000;
luzB0: for(;;){
if ((PORTA&0b00001)!=0) goto luzB1;
PORTB=0b00000000;
for (i=0;i<10;i++) continue;
PORTB=0b00000001;
for (i=0;i<10;i++) continue;
}
luzB1: for(;;){
if ((PORTA&0b00001)==0) goto luzB0;
PORTB=0b00000000;
for (i=0;i<10;i++) continue;
PORTB=0b00000010;
for (i=0;i<10;i++) continue;
}
}
14
firma simupic
firma PIC
Curso 2005-06
5.3 ejercicio
Realizar un programa de manera que si no se acciona A2 el puerto B
hace un secuenciamiento de luces hacia la derecha, si se acciona A2 se
para.
Solucin ejer5-3.c
#include <pic.h>
main(){
int i;
char x,y;
TRISA=0b11111;
TRISB=0b00000000;
y=0b10000000;
mueve: for(;;){
x=PORTA;
if ((x&0b00100)!=0) goto para;
y=y>>1;
if (y==0) y=0b10000000;
PORTB=y;
for(i=0;i<10;i++) continue;
}
para:
for(;;){
x=PORTA;
if ((x&0b00100)==0) goto mueve;
PORTB=y;
}
}
firma simupic
firma PIC
5.4 ejercicio
Ejercicio de libre enunciado
firma simupic
firma PIC
firma
dificultad
15
Curso 2005-06
6 Ejercicios avanzados
6.1 ejercicio
Realizar un programa que sea alarma de coche, el led B0 indica que esta en
funcionamiento, hay dos sensores en A0 y en A1, si alguno de los dos se pone a 1,
entonces se dispara la alarma , la alarma es un intermitente en todos los B, la alarma se
apaga poniendo A2=1
#include <pic.h>
main(){
char i;
int j;
TRISB=0b00000000;
TRISA=0b11111;
PORTA=0b00000;
inicio: for(;;){
i=PORTA;
if ( (i&0b00010) | (i&00001) ) goto alarma;
PORTB=0b00000001;
for (j=0;j<=10;j++) continue;
PORTB=0b00000000;
for (j=0;j<=10;j++) continue;
}
alarma: for(;;){
i=PORTA;
if (i&0b00100) goto inicio;
PORTB=0b11111111;
for (j=0;j<=10;j++) continue;
PORTB=0b00000000;
for (j=0;j<=10;j++) continue;
}
}
firma simupic
firma PIC
6.2 ejercicio
Realizar un programa que pilles la luz . El puerto A ser entrada, y el puerto B ser
salida, que realizar la siguiente secuencia:
00000001 00000010 00000100.... 100000000 00000001
y si el interruptor que acciones en A es igual a la luz que se visualiza por B, entonces se
iluminan todas las luces del puerto B
#include<pic.h>
main(){
char x,y;
int i;
x=0b00000001;
TRISA=0b;11111
TRISB=0b00000000;
for(;;){
PORTB=x;
x=x<<1;
if (x==0) x=0b00000001;
y=PORTA;
if (y==x) goto fin;
for(i=0;i<10;i++) continue;
}
fin:
for(;;){
PORTB=0b11111111;
}
}
firma simupic
firma PIC
16
Curso 2005-06
6.3 ejercicio
Realizar un programa de dado electrnico, en el puerto B ser la salida de un nmero
del 1 al 6 de forma rpida, utilizaremos el puerto B las salidas B3B2B1B0 codificadas
en binario.
Cuando en A1 sea =1 el dado se parar dando un nmero al azar entre 1 y 6. Cuando
A1=0 volver a empezar.
#include <pic.h>
main(){
unsigned char i,j;
TRISA=0b11111;
TRISB=0b00000000;
PORTA=0b00000;
inicio: for(;;){
for (j=1;j<=6;j++){
PORTB=j;
i=PORTA;
if ((i&0b00010)!=0) goto para;
}
}
para:
for(;;){
i=PORTA;
if ((i&0b00010)==0) goto inicio;
}
}
firma simupic
firma PIC
6.4 ejercicio
libre enunciado
firma simupic
firma PIC
firma
dificultad
17
Curso 2005-06
7 Ampliacin de PICS
7.1 Sonidos
Con los PICS no slo se puede utilizar bombillas, sino tambin se pueden mover
motores, incluso sonido, el siguiente ejemplo realiza un pitido, y si te fijas es
simplemente una intermitencia, pero muy rpida, en este caso no hay que cambiar el 10
por 10000, pero cambindolo por 20 o por 5 se obtienen distintos tonos.
He tenido alumnos que me han hecho un piano con un
PIC, o un semforo para ciegos a que no es tan difcil?
#include <pic.h>
main(){
unsigned char i;
TRISB=0b00000000;
for(;;){
PORTB=0b00000001;
for (i=1;i<=10;i++) continue;
PORTB=0b00000001;
}
}
Si no se quiere utilizar
transistores, hay que conectar
un altavoz de poca potencia,
pues el PIC no tiene mucha
corriente de salida, por
ejemplo, el altavoz pequeo de
un ordenador:
18
19