PicManía by RedRaven |
![]()
Búsqueda personalizada
|
TÉCNICAS EN C |
||
|
Esta serie de contenidos titulada Técnicas en C pretende mostrar con ejemplos comentados la forma de implementar ciertos procesos muy usuales durante el uso de los Microcontroladores PIC de las series 16F y 18F. |
|
|
Generando un pulso. 1ª Parte. Onda cuadrada simétrica mediante INTRTCC |
|
A.- Conceptos involucrados: |
|
|
|
|
|
|
|
|
|
B.- Técnica a Aplicar: |
|
|
|
|
|
|
|
|
|
|
|
C.- Implementación en C: |
|
|
setup_timer_0(RTCC_DIV_16 | RTCC_8_BIT);// Ajusto divisor de TMR1 para RTC cada 0.25 ms enable_interrupts(int_rtcc); enable_interrupts(global); // Habilito las interrupciones necesarias |
||
|
#int_rtcc void handle_rtcc_int(){ Output_Toggle(OUT); // Conmuto PIN de Salida; Set_timer0(177); } |
||
|
|
///////////////////////////////////////////////////////////////////////////////////// // // generando_un_pulso_5_intrtcc.c // // SERIE: "Técnicas en C" para el Foro TODOPIC // // (c) 10.2006 by RedPic // // Propósito: Generar un pulso de 2 Khz (0.5 ms de periodo) // // Técnica Empleada: Habilitar INTRTC para conmutar un PIN cada semiperiodo // //////////////////////////////////////////////////////////////////////////////////// #include <18f4550.h> #fuses HS,MCLR,CCP2B3,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOPBADEN,NOLVP,NOCPD,NODEBUG,NOWRT,NOVREGEN #use delay(clock=20000000) #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) //////////////////////////////////////////////////////////////////////////////////// // // Defines y Constantes // //////////////////////////////////////////////////////////////////////////////////// #define LED PIN_E0 // Defino el Pin del Led #define OUT PIN_B3 //////////////////////////////////////////////////////////////////////////////////// // // Interrupción por Externa por Cambio de Flanco en RB0 // //////////////////////////////////////////////////////////////////////////////////// #int_rtcc void handle_rtcc_int(){ Output_Toggle(OUT); // Conmuto PIN de Salida; Set_timer0(177); Output_Toggle(LED); // Conmuto PIN de Led; } //////////////////////////////////////////////////////////////////////////////////// // // Main // //////////////////////////////////////////////////////////////////////////////////// void main() { ////////////////////////////////////////// INICIALIZACIONES GENERALES delay_ms(333); // Espero a que todo se estabilice e ... disable_interrupts(global); // Inicializo el Micro y ... disable_interrupts(int_timer1); // deshabilitando todo lo no necesario ... disable_interrupts(int_rda); disable_interrupts(int_ext); disable_interrupts(int_ext1); disable_interrupts(int_ext2); setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); setup_spi(FALSE); setup_psp(PSP_DISABLED); setup_counters(RTCC_INTERNAL,RTCC_DIV_2); setup_timer_0(RTCC_OFF); setup_timer_1(T1_INTERNAL | T1_DIV_BY_1); setup_timer_2(T2_DISABLED,0,1); setup_timer_3(T3_DISABLED); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); port_b_pullups(FALSE); delay_ms(333); /////////////////////////////////////////// INICIALIZACIONES PERTINENTES A LA APLICACION setup_timer_0(RTCC_DIV_16 | RTCC_8_BIT); // Ajusto divisor de TMR1 para RTC cada 0.25 ms enable_interrupts(int_rtcc); enable_interrupts(global); // Habilito las interrupciones necesarias printf("\r\nGenerando un pulso : RTCC\r\n"); printf("By Redpic para Foro TODOPIC\r\n\n"); do { } while (TRUE); } |
||
D.- Ejemplo funcionando: |
|
Esta página se modificó el 27/12/2008
|