Modo de usar las interrupciones en el 16f84 en ensamblador
| #11 |
| #12 |
|
JuAnSiTo
|
Ya lo he pensado...
Pero sabes lo que hago en C, supongo que también se deberia hacer en ASM... Que es guardar lo que es registro W, STATUS y el PCL... No se si te suena esto. En fin, esto se hace con el fin de poder volver a tener estos registros antes de volver de la interrupcion, de modo que la operacion que estaba haciendo antes de la interrupcion, no se despeñe por que estaba utilizando estos registros. En fin, luego me di cuenta en el datasheet que lo que hace cuando hay una interrupcion, es que la dirreccion donde se activo la interrupción se guarda en el Stack 1 de la Pila, de modo que cuando vuelvo de la interrupción, esta dirección que está en el Stack1 se pone en el Contador de programa otravez, de modo que vuelve a sitio donde se activo la interrupción. Esto independiente mente si pones el GIE a 1 otravez. Entonces, dudaba mucho de que lo que planteaba de, que si se podia cambiar el sitio de retorno, por que creo que no se puede cambiar el valor del Stack1. A noser que desbordemos la pila... pero claro, la dirección que al final hay en el primer Stack despues de debordar la pila será distinta, pero no será la que yo quiero que vuelva. Asi que estamos en la misma... Bueno, no se si has entendido lo que he pensado y reflexionado depues de haber leido 10 veces el datasheet xD... En fin, espero que esto te de ideas, y puedas compartiarlas tambieén... Un saludo Pepechip |
|||||||||||
|
|
||||||||||||
| #13 |
|
pepechip
Colaborador
|
JuAnSiTo escribió: Creo que mo lo has entendido. Normalmente al confeccionar un programa utilizando las interrupciones seguimos los siguientes pasos: 1º activamos las interrucciones 2º Cuando ocurre la interrupcion ejecutamos la rutina que deseemos 3º ponemos fin a la interrupcion, con lo que el contador de programa vuelve a donde se quedo antes de la interrupcion. Tu si quieres que no continue donde lo dejo lo haces de esta manera. 1º activamos las interrucciones 2º Cuando ocurre la interrupcion ejecutamos la rutina que deseemos 3º Hago un goto a la rutina nueva que quiera ejecutar, pero en el principio de esta rutina vuelves a poner las instrucciones del 1º punto "activamos las interrupciones" Lo siento no se explicartelo de otra manera para que lo comprendas. |
|||||||||||
|
|
||||||||||||
| #14 |
|
El nombre
|
Dentro de una interrupción ver que se produce otra es facil.
Solo tienes que esperar que se produzca otra revisando los flags y cuando se active otra lo envias donde quieras. No es muy lógico hacer eso en programación si lo tienes bien estructurado pero es una forma de salir del problema. |
|||||||||||
|
|
||||||||||||
| #15 |
|
Leon Elec
|
Cuando uno utiliza la interrupción, no es obligatorio usar el RETFIE
Esta instrucción, lo que hace, como dijo pepechip, habilita de nuevo las interrupciones y vulve al punto de dónde se abandonó la tarea. Esto lo hace en dos ciclos de instrucción. Si esta instrucción RETFIE, no estaría, tendríamos que usar el RETURN y luego utilizar el BSF GIE para activar las interrupciones. De esta manera, ocuparíamos 3 ciclos de reloj, pero con el RETFIE, se ahorra un ciclo. Lo que hiso Pepechips, es totalmente válido, y tiene la suerte que al desbordarce la PILA, por la forma de su programa, no le es problema. Pero es un detalle que hay que tener en cuenta. |
|||||||||||
|
|
||||||||||||
|
| Otros temas de interés | |
|---|---|
| Circuito acondicionador de entrada 4-40mA y salida 0-10 V | |
| Circuito Cerrado de Televisión | |
| Circuito de Audio cerrado en una casa | |
| Circuito cerrado de television | |
| 74390 con reseteo | |
| Foros de Electronica |
| ||
Cuestiones Elementales de Electrónica ||
Fuentes de alimentacion ||
Circuitos de radio ||
Diseño de circuitos en general || || Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión || || Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos || |
Contacto |
Acerca de |
Ayuda |
Normas de la Comunidad |
Privacidad |
Mapa de los foros
© Foros de Electrónica - Comunidad Internacional de Electrónicos
© Foros de Electrónica - Comunidad Internacional de Electrónicos

