6. teclado matricial

download 6. teclado matricial

of 30

Transcript of 6. teclado matricial

  • 7/29/2019 6. teclado matricial

    1/30

    Profesor:

    Mag. Ing. Sergio Salas Arriarn

    Diseo de sistemas

    microprocesados

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Semana 10:

    Manejo de teclado matricial e

    Interrupciones en el dsPIC30F3014

  • 7/29/2019 6. teclado matricial

    2/30

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Puertos del dsPIC30F3014

    Mag. Ing. Sergio Sala

  • 7/29/2019 6. teclado matricial

    3/30

    En total se cuentan con 5 puertos

    I/O

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    El Puerto B tiene 13 bits (RB0-RB12). Adems, cada uno de estos pines

    puede configurarse como entrada analgica. Los pines RB6 y RB7 se utilizan

    para la programacin de la memoria FLASH a travs del grabador Pickit2. Los

    pines RB0-RB5 funcionan tambin como generadores

    de interrupcin por cambio de estado (CNx).

    El Puerto C consta de tres pines (RC13, RC14, RC15). El pin RC15 funciona

    como entrada del

    cristal externo. Si se utiliza una seal de reloj externa por el pin CLKI o el

    oscilador interno en

    reemplazo del cristal, este pin puede funcionar como puerto I/O. Los pines

    RC13 y RC14 pueden operar como generadores de interrupcin por cambio de

    estado (CNx) o tambin como entrada de un cristal de baja frecuencia (porejemplo, 32,768 kHz.).

    El Puerto A est compuesto por un solo pin (RA11). Este pin puede ser

    configurado como generador de interrupcin externa (INT0) para la deteccin

    de flancos de subida de seales digitales.

    El Puerto D se compone de 6 pines (RD0-RD3 y RD8-RD9). Estos pines

    pueden operar tambin para los modos de Entrada de captura, Comparacinde salida y tambin para dos interrupciones externas adicionales (INT1 e

  • 7/29/2019 6. teclado matricial

    4/30

    Configuracin de los puertos

    analgicos

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    La combinacin del registro TRISB y el registro ADPCFG permite el control y operacin

    tambin operan como entrada analgica. Los pines del Puerto B que se desean utilizar c

    analgica deben tener sus respectivos pines del TRISB puestos a 1 lgico. Si los pines

    a 0 entonces el voltaje convertido ser el nivel alto (VOH) el nivel bajo (VOL).

    Cuando se lee el registro PORTB estando todos los pines configurados como entrada an

    lgico detectado ser siempre 0 en cada pin.

    Por defecto todos los pines del Puerto B estn configurados como entrada analgica. Si

    como salida digital, no habr ningn conflicto. Pero, si se quiere utilizar los pines del Pueentrada digital es necesario poner cada bit respectivo del registro ADPCFG a 1 lgico.

    si TRISB = 0xFFFF y ADPCFG = 0x00FF, entonces los pines RB12-RB8 funcionan como

    mientras que los pines RB7-RB0 operan como entrada digital.

  • 7/29/2019 6. teclado matricial

    5/30

    Los registros PORTx y LATx

    Mag. Ing. Sergio Sala

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Los registros LATx han sido incorpo

    para solucionar los problemas de ge

    las instrucciones que leen y modific

    las puertas de entrada y salida.Cualquier escritura sobre el registro

    LATx o PORTx genera que dicho val

    se muestre en el Puerto.

    Si se configura el puerto como entra

    Y se lee el registro PORTx entonces

    Leer el valor introducido en dicho pSi se lee el registro LATx se obtendr

    valor del LATCH el cual NO es simil

    al valor del puerto.

  • 7/29/2019 6. teclado matricial

    6/30

    Ejemplo de configuracin de

    puertos

    Mag. Ing. Sergio Sala

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    int main()

    {

    /*Al iniciar el programa todos los pines son entrada por defecto*/

    TRISB = 0x0000; /*El Puerto B tiene 13 bits se configurantodos como salida*/

    LATB = 0x1CA5; /*Acceso al Puerto B a travs del registro

    LATCH*/

    PORTB = 0x1CA6; /*Acceso directo al Puerto B*/

    LATB++; /*Cualquier manipulacin del valor del Puerto B debe

    realizarse sobre el registro LATCH*/

    LATB++; /*LATB = LATB + 1*/

    while(1);

    return(0);

  • 7/29/2019 6. teclado matricial

    7/30

    El teclado matricialFacultad de Ingeniera Electrnica y MecatrnicaCarrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

  • 7/29/2019 6. teclado matricial

    8/30

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    Las resistencias de Pull up de los

    pines CNx

    RB0/CN2

    5V

    RB1/CN3

    RB2/CN4

    RB3/CN5

    RB4/CN6

    RB5/CN7

    RC14/CN0

    RC13/CN1

    El bit respectivo del registro

    CNPU1 permite activar lasprimeras 8 resistencias de Pull up

    de los pines CN0-CN7.

    Con este bit a 1 se habilitan los

    Pull ups internos de los pines CN0-

    CN7.Con este bit a 0 las resistencias

    CNPU1 = 0b0000000011111111

    dsPIC30F3014Una resistencia de Pull up permite

    fijar una

    tensin de 5V en un pin de entrada

    cuando

    este se encuentra desconectado.Esto es

    ideal para la conexin de

    pulsadores en los

    cuales se hace contacto con tierra.

  • 7/29/2019 6. teclado matricial

    9/30

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Algoritmo de lectura del teclado usando

    los pines CN0-CN7 (Inicio)

    Mag. Ing. Sergio Sala

    RB1

    RB2

    RB3

    RB0

    RB4RB5RC13RC14

    0V 0V 0V 0V

    1

    1

    1

    1

    Salidas digitales

    En

    tradas

    digitales

    5V

  • 7/29/2019 6. teclado matricial

    10/30Mag. Ing. Sergio Sala

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Algoritmo de lectura del teclado usando

    los pines CN0-CN7 (Segunda parte)

    RB1

    RB2

    RB3

    RB0

    RB4RB5RC13RC14

    0V 0V 0V 0V

    1

    0

    1

    1

    Salidas digitales

    En

    tradas

    digitales

    5V

    Se pulsa la

    tecla 4

  • 7/29/2019 6. teclado matricial

    11/30Mag. Ing. Sergio Sala

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Algoritmo de lectura del teclado usando

    los pines CN0-CN7 (Tercera parte)

    RB1

    RB2

    RB3

    RB0

    0V 1 1 1

    0

    0

    0

    0

    Entradas digitales con pull up activoRB4RB5RC13RC14

    Se pulsa la

    tecla 4

    5V

    5V

    Salidas

    digitales

  • 7/29/2019 6. teclado matricial

    12/30

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    Algoritmo de lectura del teclado usando

    los pines CN0-CN7 (Parte final)

    Dado que primero, el 0 lgico fue detectado en el pin RB2 y el segundo 0 lgico fue

    detectado en el pin RC14, la interseccin da Fila 2 y Columna 1. Eso implica la

    posicin 0x04 y coincidentemente la tecla 4.

    Posteriormente, se deben ignorar los Glitches producidos por el efecto de soltar la

    tecla pulsada. Para esto se debe realizar un retardo de tiempo de alrededor de 200

    mseg. De no realizarse este retardo se corre el riesgo de detectar ms de una

    pulsacin.

    Finalmente, se configuran nuevamente los pines RB5-RB2 como como salidasdigitales con el estado 0 lgico y los pines RB1, RB0, RC13 y RC14 como entradas

    con Pull up activo. Y el proceso de espera de

    la pulsacin de la siguiente tecla se repite.

  • 7/29/2019 6. teclado matricial

    13/30

    Algoritmo de deteccin de las teclas pulsadas

    (parte 1)

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    typedef union{

    struct{

    unsigned char bit0:1;

    unsigned char bit1:1;

    unsigned char bit2:1;unsigned char bit3:1;

    unsigned char bit4:1;

    unsigned char bit5:1;

    unsigned char bit6:1;

    unsigned char bit7:1;

    }_bits;

    unsigned char _byte;

    }teclado;

    unsigned char LeeTeclado(void);

    unsigned char k;

  • 7/29/2019 6. teclado matricial

    14/30

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    Algoritmo de deteccin de las teclas pulsadas

    (parte 2)int main(){

    TRISB = 0xFFF0; //Los cuatro pines menos significativos son sal

    TRISC = 0xFFFF; //RC13 y RC14 son CN0 y CN1

    ADPCFG = 0xFFFF;

    LCD_CONFIG();BORRAR_LCD();

    ESCRIBE_MENSAJE("Prueba",6);

    LATB=0;

    CNPU1 = 0x00FF;

    while(1)

    {

    k = LeeTeclado();

    POS_CURSOR(1,7);

    if(k!='N') ESCRIBE_CHAR(k);

    }

    return(0);

    }

  • 7/29/2019 6. teclado matricial

    15/30

    Mag. Ing. Sergio Sala

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera ElectrnicaAlgoritmo de deteccin de las teclas pulsadas (parte

    3)unsigned char LeeTeclado(void)

    {

    teclado a;

    a._bits.bit0 = PORTCbits.RC14;

    a._bits.bit1 = PORTCbits.RC13;

    a._bits.bit2 = PORTBbits.RB5;

    a._bits.bit3 = PORTBbits.RB4;

    if(a._byte == 0b00001111)return('N');

    else if(a._byte == 0b00000111)

    {

    //COL 4

    TRISB &= 0xFF0F;

    TRISB |= 0x000F;

    TRISC = 0x0FFF;

    LATB = 0;

    LATC = 0;

    CNPU1 = 0x00FF;

    a._bits.bit0 = PORTBbits.RB0;

    a._bits.bit1 = PORTBbits.RB1;

    a._bits.bit2 = PORTBbits.RB2;

    a._bits.bit3 = PORTBbits.RB3;

    __delay_ms(200);

  • 7/29/2019 6. teclado matricial

    16/30

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    Algoritmo de deteccin de las teclas pulsadas (parte

    4)

    if(a._byte == 0b00000111)

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('A');}

    else if(a._byte == 0b00001011)

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('B');}

    else if(a._byte == 0b00001101)

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('C');}else if(a._byte == 0b00001110)

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('D');}

    else

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('M');}

    }

    else if(a._byte == 0b00001011)

    { //COL3TRISB &= 0xFF0F;

    TRISB |= 0x000F;

    TRISC = 0x0FFF;

    LATB = 0;

    LATC = 0;

    CNPU1 = 0x00FF;

  • 7/29/2019 6. teclado matricial

    17/30

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    a._bits.bit0 = PORTBbits.RB0;

    a._bits.bit1 = PORTBbits.RB1;

    a._bits.bit2 = PORTBbits.RB2;

    a._bits.bit3 = PORTBbits.RB3;

    __delay_ms(200);

    if(a._byte == 0b00000111)

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('3');}

    else if(a._byte == 0b00001011)

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('6');}else if(a._byte == 0b00001101)

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('9');}

    else if(a._byte == 0b00001110)

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('#');}

    else

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('M');}

    }

    else if(a._byte == 0b00001101)

    { //COL2

    TRISB &= 0xFF0F;

    TRISB |= 0x000F;

    TRISC = 0x0FFF;

    LATB = 0;

    LATC = 0;

    CNPU1 = 0x00FF;

    Algoritmo de deteccin de las teclas pulsadas (parte

    5)

  • 7/29/2019 6. teclado matricial

    18/30

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    a._bits.bit0 = PORTBbits.RB0;a._bits.bit1 = PORTBbits.RB1;

    a._bits.bit2 = PORTBbits.RB2;

    a._bits.bit3 = PORTBbits.RB3;

    __delay_ms(200);

    if(a._byte == 0b00000111)

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('2');}

    else if(a._byte == 0b00001011)

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('5');}else if(a._byte == 0b00001101)

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('8');}

    else if(a._byte == 0b00001110)

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('0');}

    else

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('M');}

    }else if(a._byte == 0b00001110)

    { //COL1

    TRISB &= 0xFF0F;

    TRISB |= 0x000F;

    TRISC = 0x0FFF;

    LATB = 0;

    LATC = 0;

    CNPU1 = 0x00FF;

    Algoritmo de deteccin de las teclas pulsadas (parte

    6)

  • 7/29/2019 6. teclado matricial

    19/30

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    Algoritmo de deteccin de las teclas pulsadas (parte

    7)

    a._bits.bit0 = PORTBbits.RB0;a._bits.bit1 = PORTBbits.RB1;

    a._bits.bit2 = PORTBbits.RB2;

    a._bits.bit3 = PORTBbits.RB3;

    __delay_ms(200);

    if(a._byte == 0b00000111)

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;retuelse if(a._byte == 0b00001011)

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;retu

    else if(a._byte == 0b00001101)

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;retu

    else if(a._byte == 0b00001110)

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;retuelse

    {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;retu

    }

    else

    return('N');

    }

  • 7/29/2019 6. teclado matricial

    20/30

    Las InterrupcionesFacultad de Ingeniera Electrnica y MecatrnicaCarrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    En el mundo de los microcontroladores, es muy comn implementar programas multit

    encuentran pendientes de mltiples procesos: lectura de un dato proveniente del ADC,un byte por el puerto serie UART, pulsacin de una tecla del teclado matricial, un flanc

    un sensor digital, el desbordamiento de un Timer, un evento de Reset, etc.

    Muchos de estos eventos son procesos no predecibles que pueden ocurrir en cualquie

    Si el procesador se encuentra siempre pendiente de que cualquiera de estos eventos

    suceder ciertos problemas:

    1. El consumo de energa aumenta.

    2. El procesador puede perder un evento por no registrarlo a tiempo.

    3. Si dos eventos ocurren en simultneo el procesador puede ignorar uno

    de ellos.

    4. El procesador puede verse limitado en su capacidad de procesamientoal tener que sostener tantos procesos a la vez.

    Para evitar todos estos inconvenientes, los microcontroladores cuentan con un sistem

    que permite detectar eventos externos al procesador en los momentos que ocurren y

    procesador con tareas en el instante que dicho evento ha sido generado.

  • 7/29/2019 6. teclado matricial

    21/30

    El concepto de una interrupcin

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    Telfono con la

    bocina malogradaTimbre malogrado

    Hombre trabajando en la programacin de

    un microcontrolador dsPIC30F3014. (Tarea

    Principal)

  • 7/29/2019 6. teclado matricial

    22/30

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    La prioridad de una interrupcin

    Telfono con la

    bocina malogradaTimbre malogrado

    Hombre trabajando en la programacin de

    un microcontrolador dsPIC30F3014. (Tarea

    Principal)

    Qu sucede si el telfono y el timbre suenan al mismo tiem

    A quin se atiende primero?

    Prioridad 7 (mayor)

    Prioridad 5 (menor)

  • 7/29/2019 6. teclado matricial

    23/30

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    Posibles causas de interrupcin en el

    dsPIC30F3014

    Interrupcin externa 0 (INT0).

    Entrada de captura 1 (IC1).

    Comparacin de salida 1 (OC1).

    Timer 1.

    Entrada de captura 2 (IC2).

    Comparacin de salida 2 (OC2).

    Timer 2.

    Timer 3.

    SPI1 Receptor del UART 1.

    Transmisor del UART 1.

    Fin de conversin del ADC.

    Escritura de la FLASH finalizada (NVM).

    Interrupcin modo esclavo I2C.

    Interrupcin modo maestro I2C.

    Interrupcin por cambio de estado (CNx).

    Interrupcin externa 1 (INT1).

    Interrupcin externa 2 (INT2).

    Receptor del UART 2.

    Transmisor del UART 2.

    Bus CAN.

    Deteccin de bajo voltaje (LVD).

    Interrupciones reservadas.

  • 7/29/2019 6. teclado matricial

    24/30

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    Tabla de interrupciones del

    dsPIC30F3014

    El nmero de interrupcin (INT Number) especifica la prionatural de la interrupcin. Mientras menor sea este nme

    alta ser la prioridad.

    El nmero de vector es el identificador de la interrupcin

    de vector de interrupciones (IVT).

    Los vectores de interrupciones se encuentran en la mem

    a partir de la direccin 0x000014.

    Cuando un evento de interrupcin ocurre, el Puntero de p

    (PC) salta a la direccin respectiva del vector de interrup

    La direccin de dicho vector se debe encontrar la instruccRUT_INT_XX, donde XX es el nombre asociado a la inte

    especfica de dicho vector.

    El salto a la rutina de interrupcin toma cuatro ciclos de r

    ocurre para salir de la interrupcin y regresar al punto do

    PC se haba quedado.

  • 7/29/2019 6. teclado matricial

    25/30

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    Banderas de interrupcin

    Los registros IFSx contienen las banderas de las diversas interrupciones del dsPIC30F

    automticamente se ponen a 1 lgico para indicar que una interrupcin ha ocurrido. U

    la interrupcin esta bandera debe ser puesta a 0 lgico por Firmware, ya que de no h

    interrupcin ser considerada no atendida por el CPU y esta se volver a ejecutar.

    Por ejemplo, para borrar la bandera de interrupcin por el TIMER 1 se puede realizar l

    asignacin al registro IFS0:

    IFS0bits.T1IF = 0;

  • 7/29/2019 6. teclado matricial

    26/30

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    Los registros habilitadores de

    interrupciones

    Los registros IECx permiten habilitar las respectivas interrupciones del CPU. Una vez p

    el respectivo bit, la interrupcin queda activa y es posible que un evento la dispare. Estnormalmente se habilitan una sola vez en el programa, a menos que el programador de

    interrupcin a raz de otro evento.

    Para habilitar la interrupcin por el Timer 1 se hace la siguiente asignacin al registro IE

    IEC0bits.T1IE = 1;

  • 7/29/2019 6. teclado matricial

    27/30

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    Los registros de configuracin de

    prioridad de interrupcin

    Si se van a utilizar unas cuantas interrupciones del dsPIC es posible reasignar las prio

    interrupciones y evitar as la prioridad por defecto dada por la tabla IVT. Solo es posibl

    prioridades donde el valor de 7 es la mxima prioridad. Para esto se cuenta con los recontienen un conjunto de 3 bits para asignar la prioridad a cada tipo de interrupcin.

    Por ejemplo, para que el Timer 1 tenga prioridad 3 se tiene que ejecutar la siguiente in

    IPC0 = IPC0 | 0x3000;

  • 7/29/2019 6. teclado matricial

    28/30

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    La rutina de interrupcin

    La rutina de interrupcin es una funcin que tiene un tipo especial de declaracin:

    void __attribute__((__interrupt__))

    Este tipo de declaracin implica que la funcin es de interrupcin y es llamada automti

    eventos que generan que la bandera de interrupcin sea 1 lgico. Esta funcin no reci

    parmetros.

    El nombre de la rutina de interrupcin corresponde al vector asignado en la IVT. Este va

    Las libreras de cabecera del proyecto. El nombre del vector tiene la siguiente nomencla

    _(identificador de la interrupcin)interrupt.

    Por ejemplo, la rutina de interrupcin para el Timer 1 tiene el siguiente nombre:

    void __attribute__((__interrupt__)) _T1Interrupt(void)

  • 7/29/2019 6. teclado matricial

    29/30

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag. Ing. Sergio Sala

    La interrupcin INT0

    El pin RA11 puede funcionar como generador de interrupcin externa por flanco de baj

    seal cuadrada. Cada vez que se detecta un flanco de bajada en esta seal se dispar

    (INT0)

    dsPIC30F3014

    RA11

    INT 1 INT 2

  • 7/29/2019 6. teclado matricial

    30/30

    Facultad de Ingeniera Electrnica y Mecatrnica

    Carrera: Ingeniera Electrnica

    Mag Ing Sergio Sala

    Programa de manejo de la INT0int main()

    {

    TRISB = 0xFF00; //Los cuatro pines menos

    significativos son salida

    ADPCFG = 0xFFFF;

    TRISAbits.TRISA11 = 1;LATB = 0;

    IFS0bits.INT0IF = 0;

    IPC0 = IPC0 | 0x0001; //Prioridad 1

    IEC0bits.INT0IE = 1;

    while(1);

    return(0);}

    void __attribute__((__interrupt__)) _INT0Interrupt(void){

    LATB++;

    __delay_ms(100);

    IFS0bits INT0IF = 0;