Ud1 7 puertos_es_pic

20
Puertos E/S en PICS Puertos E/S para PIC Departamento de Electrónica Fundación San Valero

Transcript of Ud1 7 puertos_es_pic

Page 1: Ud1 7 puertos_es_pic

Puertos E/S en PICS

Puertos E/S para PIC

Departamento de ElectrónicaFundación San Valero

Page 2: Ud1 7 puertos_es_pic

Puertos de E/S en PICS

Page 3: Ud1 7 puertos_es_pic

Puertos de E/S en PICS

Page 4: Ud1 7 puertos_es_pic

Puertos de E/S en PICS

Page 5: Ud1 7 puertos_es_pic

Puertos de E/S en PICS

Page 6: Ud1 7 puertos_es_pic

Puertos de E/S en PICS

Page 7: Ud1 7 puertos_es_pic

Puertos de E/S en PICS

Page 8: Ud1 7 puertos_es_pic

Puertos de E/S en PICS

Page 9: Ud1 7 puertos_es_pic

Puertos de E/S en PICS

Page 10: Ud1 7 puertos_es_pic

Ejemplo uti l ización Puertos de E/S en

PICS

set_tris_a(); ej-> set_tris_a(0b00110001); set_tris_a(0x34); set_tris_b(); ej-> set_tris_b(0b00110001); set_tris_b(0x34);

1) Especificar qué líneas son de entrada, y cuáles de salida

2) Líneas de salida (escritura -> output)

3) Líneas de entrada (lectura -> input)

1 -> Input -> Entrada0 -> Output -> Salida

output_low(); ej-> output_low(PIN_A2);output_high(); ej-> output_high(PIN_A0);output_bit(); ej-> output_bit(PIN_A1,0); output_bit(PIN_A1,1);output_X(); ej_> output_a(0x03); output_a(0xFF);

input(); ej-> input(PIN_B2);input_X(); ej_> puerto_b=input_b();

OPERACIONES CON TIEMPOS:

Retardo de microsegundos: delay_us(); ej-> delay_us(50);

Page 11: Ud1 7 puertos_es_pic

Ejemplo uti l ización Puertos de E/S en

PICS

#include<16F84A>#use delay(clock=4000000)main(){

set_tris_a(0x00);set_tris_b(0x01); //Importante con las entradas!!!!

while(TRUE){if(input(PIN_B0)) output_bit(PIN_A0,0);else output_bit(PIN_A0,1);

}} if(!input(PIN_B0))

if(input(PIN_B0)==0)

Ejemplo:

Page 12: Ud1 7 puertos_es_pic

Interrupciones en PICS

Interrupciones en PIC

Departamento de ElectrónicaFundación San Valero

Page 13: Ud1 7 puertos_es_pic

Interrupciones en PICS

Page 14: Ud1 7 puertos_es_pic

Interrupciones en PICS

Page 15: Ud1 7 puertos_es_pic

Interrupciones en PICS

Page 16: Ud1 7 puertos_es_pic

Interrupciones en PICS

Page 17: Ud1 7 puertos_es_pic

Interrupciones en PICS

Page 18: Ud1 7 puertos_es_pic

Ejemplo Interrupciones

Interrupciones:

#include<16F84A>#use delay(clock=4000000)

-> AQUÍ

main(){

}

¿Dónde colocar la subrutina?

Configurar las interrupciones:

enable_interrupts(INT_RTCC);enable_interrupts(GLOBAL);

#int_TIMER0subrutina_TIMER0(){ }

Page 19: Ud1 7 puertos_es_pic

Ejemplo Interrupciones

Ejemplo uti l ización de interrupciones:#include<16F84A>#use delay(clock=4000000)

int flag=0; //Variable global

#int_TIMER0subrutina_TIMER0(){

if(flag==1) output_bit(PINB0,1);if(flag==0) output_bit(PINB0,0);flag=1-flag;

}main(){

set_tris_b(0x00); //Configurar B=salidasenable_interrupts(INT_RTCC); //Configurar interrupcionesenable_interrupts(GLOBAL);setup_timer_0(RTCC_DIV_1|RTCC_INTERNAL); //Conf. TMR0set_timer0(0xFF); //Establecer frecuencia de parpadeowhile(TRUE); //Bucle infinito

}

Page 20: Ud1 7 puertos_es_pic

Ejemplo Interrupciones

Programación por interrupciones:

int cont=0, velocidad1=0, velocidad2=0;

#int_TIMER0subrutina_TIMER0(){

cont++;if(cont=NUM_VELOCIDADES){

output_bit(MOTOR_1,1);output_bit(MOTOR_2,1);cont=0;

}if(cont==velocidad1) output_bit(MOTOR_1,0);if(cont==velocidad2) output_bit(MOTOR_1,0);

}

Programación por interrupciones