instalador de picc proteus

Download Report

Transcript instalador de picc proteus

CORPOCIDES
Ing. Emilio Medina Baquero
[email protected]
SOFTWARE NECESARIO
INSTALADOR DE PICC
PROTEUS
OPERADORES
Asignación de Suma:
x+=y ;
// Es lo mismo que x=x+y;
Ejercicio:
int x=4,y=5;
x+=y;
// Cuanto vale x?
Asignación de Resta:
x-=y ;
// Es lo mismo que x=x-y;
Ejercicio:
int y=4,x=5;
x-=y;
// Cuanto vale x?
OPERADORES
Asignación de Multiplicación:
x*=y ;
// Es lo mismo que x=x*y;
Ejercicio:
int x=4,y=5;
x*=y;
// Cuanto vale x?
Asignación de División:
x/=y ;
// Es lo mismo que x=x/y;
Ejercicio:
int y=4,x=20;
x/=y;
// Cuanto vale x?
FUNCIONES
Tipodato Nombrefunción(tipo param1, tipo param2,…)
{
Sentencias;
return(dato);
}
Ejemplo:
int suma(int a,int b)
//Definición de la función
{
int c;
c=a+b;
return(c);
}
Void main()
{
int dato;
dato=suma(a,b);
//Llamado de la función
}
VARIABLES
VARIABLES GLOBALES: Su valor puede ser escrito y leído
desde cualquier función.
VARIABLES LOCALES: Su valor se pierde al salir de una
función.
INSTALACION DE PICC
1. Instalar el PICC:
- Es importante descomprimir el instalador e instalar los dos archivos:
EL PRIMER PROYECTO
1. Abre el PICC (Inicio, programas, PIC-C, PIC C Compiler)
2.Seleccionar New -> Project Wizard
EL PRIMER PROYECTO
3. coloca el nombre del
proyecto
(Primer_Programa) y la
carpeta donde se
guardará.
EL PRIMER PROYECTO
4. En la pestaña General selecciona las opciones como aparece en la figura
EL PRIMER PROYECTO
5. En la pestaña Comunicaciones deshabilita RS-232
EL PRIMER PROYECTO
6. Acepta los cambios haciendo click en OK
7. La ventana del PICC debe aparecer como en la figura:
EL PRIMER PROYECTO
8. Nuestro primer programa consistirá en sacar un “1” por el pin RB0 con
el comando:
output_high(pin_b0);
EL PRIMER PROYECTO
9. Ahora compilamos el código haciendo click en Build de la pestaña
Compile.
EL PRIMER PROYECTO
10. Ahora verificamos que no se hallan presentado errores, mirando la
ventana Output
EL PRIMER PROYECTO
11. Para simular el programa usaremos Proteus, por lo que debemos
abrir el ISIS.
12. Hacemos click en la carpeta para abrir el esquemático
EL PRIMER PROYECTO
EL PRIMER PROYECTO
14. Hacemos doble click sobre el PIC para editar sus propiedades.
- Verificamos la frecuencia del reloj: 4MHz
EL PRIMER PROYECTO
15. Hacemos doble click sobre la carpeta de la opción Program File
16. Seleccionamos el programa (.hex) de la carpeta del proyecto de PICC
I/O DIGITALES
U4
13
1
U3
9
10
U2
16
15
4
OSC1/CLKIN
OSC2/CLKOUT
MCLR
RA0
RA1
RA2
RA3
RA4/T0CKI
RB0/INT
RB1
RB2
RB3
RB4
RB5
RB6
RB7
PIC16F84A
17
18
1
2
3
6
7
8
9
10
11
12
13
2
3
4
5
6
7
1
OSC1/CLKIN
OSC2/CLKOUT
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
MCLR/Vpp/THV
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
PIC16F873A
21
22
23
24
25
26
27
28
11
12
13
14
15
16
17
18
2
3
4
5
6
7
14
33
34
35
36
37
38
39
40
OSC1/CLKI
MCLR/VPP
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2A
RC2/CCP1
RA0/AN0
RC3/SCK/SCL
RA1/AN1
RC4/SDI/SDA
RA2/AN2/VREFRC5/SDO
RA3/AN3/VREF+
RC6/TX/CK
RA4/T0CKI
RC7/RX/DT
RA5/AN4/SS/LVDIN
RA6/OSC2/CLKO
RD0/PSP0
RD1/PSP1
RB0/INT0
RD2/PSP2
RB1/INT1
RD3/PSP3
RB2/INT2
RD4/PSP4
RB3/CCP2B
RD5/PSP5
RB4
RD6/PSP6
RB5/PGM
RD7/PSP7
RB6/PGC
RB7/PGD
RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
8
9
10
PIC18F452
Los microcontroladores PIC tienen teminales de entrada/salida divididos en
puertos, que se encuentran nombrados alfabéticamente A,B,C,D.
Cada puerto puede tener hasta 8 teminales que, de forma básica se
comportan como una entrada/salida digital.
I/O DIGITALES
- Los pines son configurables por software como entrada o salida digital.
- El pin RA4 necesita resistencia de pull-up si se va a usar como salida.
- El puerto B tiene resistencias de pull-up que se pueden habilitar por
software.
I/O DIGITALES
- Los pines de salida del PIC tienen un límite de corriente.
I/O DIGITALES
-Por defecto se usa la directiva STANDARD_IO (el compilador configura
automáticamente los pines como entrada o salida).
COMANDOS:
output_a(valor);
output_b(valor);
//saca valor (entero de 8 bits) por el puerto A
//saca valor (entero de 8 bits) por el puerto B
Ejemplo:
output_b(23);
//saca el dato 23 por el puerto B
Es importante notar que el comando output configura automáticamente el
puerto como salida.
I/O DIGITALES
-Modificamos el programa
-Compilamos
-En el ISIS damos play a la simulación.
(es necesario detener la simulación
previamente para que los cambios en el
programa se reflejen)
I/O DIGITALES
output_bit(pin,valor);
//saca valor (1 ó 0) por el pin seleccionado
Ejemplo:
output_bit(pin_b1,0);
//saca un “0” lógico por el pin RB1
Es importante notar que el comando output_bit configura automáticamente
el pin como salida.
I/O DIGITALES
-Modificamos el programa
-Compilamos
-En el ISIS damos play a la simulación.
(es necesario detener la simulación
previamente para que los cambios en el
programa se reflejen)
I/O DIGITALES
output_high(pin);
//saca un “1” lógico por el pin seleccionado
Ejemplo:
output_high(pin_b7);
//saca un “1” lógico por el pin RB7
Es importante notar que el comando output_high configura automáticamente
el pin como salida.
I/O DIGITALES
-Modificamos el programa
-Compilamos
-En el ISIS damos play a la simulación.
(es necesario detener la simulación
previamente para que los cambios en el
programa se reflejen)
I/O DIGITALES
output_low(pin);
//saca un “0” lógico por el pin seleccionado
Ejemplo:
output_low(pin_b0);
//saca un “0” lógico por el pin RB1
Es importante notar que el comando output_low configura automáticamente
el pin como salida.
I/O DIGITALES
-Modificamos el programa
-Compilamos
-En el ISIS damos play a la simulación.
(es necesario detener la simulación
previamente para que los cambios en el
programa se reflejen)
I/O DIGITALES
output_toggle(pin);
//niega el estado lógico del pin seleccionado
Ejemplo:
output_toggle(pin_b6);
//si el estado del pin b6 es “0” saca un “1”
//si el estado del pin b6 es “1” saca un “0”
Es importante notar que el comando output_toggle configura automáticamente
el pin como salida.
I/O DIGITALES
-Modificamos el programa
-Compilamos
-En el ISIS damos play a la simulación.
(es necesario detener la simulación
previamente para que los cambios en el
programa se reflejen)
I/O DIGITALES
Valor1=input_a();
//lee el dato (8 bits) del puerto A y lo almacena en
//la variable Valor1
Valor2=input_b();
//lee el dato (8 bits) del puerto B y lo almacena en
//la variable Valor2
- La función retorna un dato entero (8bits).
-Es importante notar que el comando input configura automáticamente el
puerto como entrada.
-Ej:
int dato;
dato=input_a();
Output_b(dato);
I/O DIGITALES
-Modificamos el programa
-Compilamos
-En el ISIS damos play a la simulación.
(es necesario detener la simulación
previamente para que los cambios en el
programa se reflejen)
I/O DIGITALES
CICLOS INFINITOS:
While(1){
//aquí va el programa a repetir infinitamente
}
For(;;) {
//aquí va el programa a repetir infinitamente
}
INSTRUCCIÓN IF-ELSE
Con la ayuda de If-Else se pueden tomar desiciones.
If (expresión){
sentencia1;
}
Else{
sentencia2;
}
I/O DIGITALES
Valor1=input(pin);
// lee el valor (“0” ó “1”) del pin seleccionado
// y lo almacena en la variable Valor1
-La función retorna un valor booleano “0” si el pin está en bajo.
-La función retorna un valor booleano “1” si el pin está en alto.
- Es importante notar que el comando input configura automáticamente el
puerto como entrada.
Ejemplo:
While(1){
if(input(pin_a0)==1)
output_b(0xFF);
else
output_b(0x00);
}
I/O DIGITALES
-Modificamos el programa
-Compilamos
-En el ISIS damos play a la simulación.
(es necesario detener la simulación
previamente para que los cambios en el
programa se reflejen)
I/O DIGITALES
Valor1=input_state(pin); // lee el valor (“0” ó “1”) del pin seleccionado
// y lo almacena en la variable Valor1
Ejemplo:
Valor2=input_state(pin_b1); //lee el pin RB1 y almacena el valor en Valor2
-La función retorna un valor booleano “0” si el pin está en bajo.
-La función retorna un valor booleano “1” si el pin está en alto.
- Es importante notar que el comando input NO cambia la dirección del pin
leído.
EJERCICIOS
Se tiene una lámpara conectada al pin RB0 y dos pulsadores conectados a los
pines RA0 y RA1 respectivamente.
A. Encender la lámpara si se presionan los dos pulsadores (si se pulsa uno
solo no debe encender).
B. Encender la lámpara si se presiona alguno de los dos pulsadores (si se
pulsan juntos también debe encender)
C. Encender la lámpara si se presiona alguno de los dos pulsadores (si se
pulsan juntos no debe encender)
D. Si se tiene un tercer pulsador conectado en el pin RA2, encender la
lámpara si se pulsan 2 interruptores a la vez. (si se pulsa uno solo o los tres
a la vez no debe encender)
E. Realizar la siguiente secuencia de luces, dejando 500ms entre cada dato:
00000001, 00000010, 00000101, 00001010, 00010100, 00101000,
01010000, 10100000, 01000000, 10000000, 00000000
Para realizar retardos se usa el comando delay_ms(tiempo_en_ms);
F. Realice un programa en el cual al presionar un pulsador en RA0 se
incremente el dato del puerto B y al presionar un pulsador en RA1 se
decremente el dato del puerto B.
DESARROLLO EJERCICIOS