ud1 7 puertos_es_pic
TRANSCRIPT
Puertos E/S en PICS
Puertos E/S para PIC
Departamento de ElectrónicaFundación San Valero
Puertos de E/S en PICS
Puertos de E/S en PICS
Puertos de E/S en PICS
Puertos de E/S en PICS
Puertos de E/S en PICS
Puertos de E/S en PICS
Puertos de E/S en PICS
Puertos de E/S en PICS
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);
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:
Interrupciones en PICS
Interrupciones en PIC
Departamento de ElectrónicaFundación San Valero
Interrupciones en PICS
Interrupciones en PICS
Interrupciones en PICS
Interrupciones en PICS
Interrupciones en PICS
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(){ }
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
}
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