CAP4MICR
CAP4MICR
CAP4MICR
#include <pic.h>
/*
* Example code for using timer0 on a 16F877
* Just sets up a 1 second interrupt and increments a variable
*/
/*
* Calculate preload value for one second timer
*/
void interrupt
timer0_isr(void) @ 0x10
{
seconds++;
TMR0 += -PRELOAD; // re-load timer
T0IF=0;
}
main()
{
// initialize timer 0;
1
Microprocesadores 2
Prfr. Carlos Celaya Borges
T0STA = 0b01000; // prescale by 16
T0CS = 1; // select internal clock
TMR0 = -PRELOAD; // preload timer
T0IE = 1; // enable timer interrupt
GLINTD = 0; // enable global interrupts
for(;;)
continue; // let interrupt do its job
}
#include <pic.h>
/*
* Usando el PIC 16F84A
*/
main()
{
// inicialización
estado = 0; //estado inactivo.
segs=0;
3
Microprocesadores 4
Prfr. Carlos Celaya Borges
segs128=0;
ctap=0;
TRISB=0XC1; //BIT 0,6,7: ENTRADA, BITS
1,2,3,4,5:SALIDAS
LED1=1; LED2=1; // apaga LEDS
LED3=0; LED4=1; // apaga LEDS
OPTION = 0x07; // prescala por 256
T0CS = 0; // selecciona reloj interno
TMR0 = C128VOSEG; // precarga de TMR0, para 1/128 seg.
INTEDG=1; //borde positivo de RB0
T0IF=0; // por si está activa
INTF=0; // por si está activa
if(palanca6)T0IE = 1;// habilita interr. del TMR0
if(palanca7)INTE = 1;// habilita interr. de la línea RB0
GIE = 1; // habilitación global de interrupciones
for(;;) continue; // trabajan las interrupciones
}
4
Microprocesadores 5
Prfr. Carlos Celaya Borges
RB1 0 1 2 RB1
RB2 3 4 5 RB2
RB3 6 7 8 RB3
RB4 9 RB4
RB5 RB5
RB6 RB6
RB7 RB7
PIC
16F877
RD0
RD1
RD2
RD3
RD4
RD5
RD6
RD7