cómo habilitar la interrupción externa de 8051?8051 interrupción externa
Respuesta
Cada una de las interrupciones del 8051s tiene su propio bit en el registro de función especial (SFR) de habilitación de interrupción (IE
) y se habilita configurando el bit correspondiente. Los siguientes ejemplos de código están en ensamblaje 8051 y también en C para proporcionar una idea general de lo que está ocurriendo.
Para habilitar la interrupción externa 0 (EX0
) necesita establecer el bit 0 de IE
.
SETB EX0
o ORL IE,#01
o MOV IE,#01
Para habilitar interrupción externa 1 (EX1
) es necesario establecer el bit 3 del IE
.
SETB EX1
o ORL IE,#08
o MOV IE,#08
interrupciones a continuación, es necesario permitir a nivel mundial poniendo el bit 7 del IE
, que es el interupt mundial activar/desactivar bits (EA
). Si es necesario, puede establecer la prioridad de las interrupciones externas en alto a través de la prioridad de interrupción (IP
) SFR.
SETB EA
o ORL IE,#80
Ejemplo en C:
#define IE (*(volatile unsigned char *)0xA8)
#define BIT(x) (1 << (x))
...
IE &= ~BIT(7); /* clear bit 7 of IE (EA) to disable interrupts */
...
IE |= BIT(0); /* set bit 0 of IE (EX0) to enable external interrupt 0 */
...
IE |= BIT(1); /* set bit 3 of IE (EX1) to enable external interrupt 1 */
...
IE ^= BIT(7) /* toggle bit 7 of IE (EA) to re-enable interrupts */
o
IE = 0x89; /* enable both external interrupts and globally enable interrupts */
Los diversos 8051 vendedores C compilador menudo definen sus propios métodos de creación de funciones de interrupción. Es posible que deba consultar la documentación de su compilador específico.
Para definir una función de interrupción utilizando el compilador Keil C51 (pdf link to application note), se especifica un número de interrupción y un banco de registros donde el número de interrupción corresponde a una dirección de vector de interrupción específica.
void my_external_interrupt_0_routine(void) interrupt 0 using 2
{
/* do something */
}
Para definir una función de interrupción usando el 8051 IAR C/C++ Compiler (icc8051) (pdf link to reference guide), la palabra clave __interrupt
y la directiva #pragma vector
puede ser utilizado.
#pragma vector=0x03
__interrupt void my_external_interrupt_0_routine(void)
{
/* do something */
}
Si usted es nuevo en el 8051, hay una gran cantidad de información disponible en www.8052.com. También recomendaría The 8051/8052 Microcontroller: Architecture, Assembly Language, and Hardware Interfacing escrito por Craig Steiner, el webmaster y autor de 8052.com.
muy buen tutorial, me ayudó mucho. http://www.8052.com/tutint.phtml
- 1. C++ para microcontrolador 8051?
- 2. ¿recomendación del kit del microcontrolador 8051?
- 3. Manejo de señales en C - Interrupción de interrupción
- 4. MATLAB excepción tiro interrupción
- 5. Interruptor sin interrupción
- 6. jQuery - ¿Animación de interrupción?
- 7. Paralelo.Para la interrupción
- 8. clojurescript puntos de interrupción
- 9. interrupción() no funciona
- 10. Interrupción del software
- 11. Java ExecutorService invokeAll() interrupción
- 12. externa bidireccional
- 13. Diferencia entre interrupción y eventos
- 14. Puntos de interrupción páginas aspx
- 15. Función de interrupción de reposo()
- 16. C++ 0x interrupción de hilo
- 17. SQL: Interrupción de una consulta
- 18. Punto de interrupción señalando "objc_autoreleaseNoPool"
- 19. Punto de interrupción condicional C#?
- 20. ¿Cómo envío y recibo continuamente con puerto serie inalámbrico en 8051?
- 21. ¿Cómo puedo enviar una cadena en serie desde un 8051 solo UNA VEZ?
- 22. ¿Qué es mejor ... unión externa izquierda o unión externa derecha?
- 23. diferencias entre "clave externa" y "restricción de clave externa"
- 24. Vulnerabilidades de imagen externa
- 25. MySQL - Clave externa única
- 26. clave externa condicional PostgreSQL
- 27. Ant incluye externa .jar
- 28. mysql externa izquierda
- 29. log4j.xml externa archivo
- 30. Unir tablas, clave externa
Puede tener mejor suerte con esto en http://chiphacker.com – Earlz