Autor Tema: INTERRUPCION CON USART EN 16F877A  (Leído 4269 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado yuhe

  • PIC12
  • **
  • Mensajes: 76
INTERRUPCION CON USART EN 16F877A
« en: 03 de Enero de 2015, 14:23:00 »
Antes que nada Feliz año a todos amigos ,
Me pongo una vez mas en contacto con ustedes amigos porque tengo un pequeño problema que no se resolver , y es el siguiente . Estoy realizando un proyectito que consta de un pic 16f877a a 4mhz  que esta leyendo constantemente un teclado de 4x3 ,pero a su vez quiero que este atento a una comunicacion serial con un pc a 2400 baud , y el problema es que no se como hacer una interrupcion que cuando entre datos por portc.6 deje de leer el teclado para atender esos datos de entrada .
rogaria ayuda por vuestra parte , y aseguro que he usado el buscador del foro  pero no logro ver nada de interrupcion por puerto usart , una vez mas gracias amigos

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: INTERRUPCION CON USART EN 16F877A
« Respuesta #1 en: 05 de Enero de 2015, 12:11:50 »
¿Usas basic PSI?.
Saludos desde Granada, España.

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
Re: INTERRUPCION CON USART EN 16F877A
« Respuesta #2 en: 05 de Enero de 2015, 12:17:27 »
Seria altamente deseable que colocaras que tipo de compilador estas usando, CCS, proton, xc8, asembler, mikroC...
Y colocar algun codigo que estes utilizando para poderte ayudar mejor asi como un esquema de lo que tienes.   :mrgreen:

Saludos

Desconectado yuhe

  • PIC12
  • **
  • Mensajes: 76
Re: INTERRUPCION CON USART EN 16F877A
« Respuesta #3 en: 07 de Enero de 2015, 20:06:24 »
buenas amigos , utilizo pic basic pro 2.60

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: INTERRUPCION CON USART EN 16F877A
« Respuesta #4 en: 14 de Enero de 2015, 08:38:33 »
Proceder para interrupciones con un solo modulo:

‘*******************************************
- Con ON INTERRUPT defines el nombre de la rutina a la que se saltara cada vez que se produzca la interrupción
- Activas el bit de interrupción del modulo en cuestión
- ENABLE
‘*******************************************

Rutina Main:
   Codigo rutina main
Goto Main
END

‘*******************************************
- DISABLE
- Nombre rutina definida mediante ON INTERRUPT:
Código a ejecutar
Borras el bit de interrupción del modulo, para usart no hace falta, se borra solo.
-ENABLE
-RESUME
‘*******************************************

A tener en cuenta en este lenguaje:
Las interrupciones en cualquier lenguaje se ejecutan después de terminar la ejecución
de la sentencia maquina que se este ejecutando, esto viene hacer de 4 a 8 ciclos de reloj.
Esto es para 4Mhz de 1uSeg. a 2uSeg.

En este lenguaje la interrupción se comienza a atender después de sentencia de compilación.
Por ejemplo: si durante la ejecución de un PAUSE 1000, se produce una interrupción, esta no se comenzara a atender hasta que termine el pause. Así que depende lo que tarde en ejecutarse la sentencia de compilación así se demorará la interrupción.
En realidad este sistema es muy poco eficiente.
El manual de este lenguaje indica que se puede realizar la atención a las interrupciones mendiante una rutina código maquina, que si que las hace mucho mas eficientes.
Saludos desde Granada, España.

Desconectado yuhe

  • PIC12
  • **
  • Mensajes: 76
Re: INTERRUPCION CON USART EN 16F877A
« Respuesta #5 en: 14 de Enero de 2015, 11:30:18 »
Muchisimas gracias por tu explicacion dogflu66  ((:-)) ((:-)) ((:-))

Desconectado jansuini

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 566
Re: INTERRUPCION CON USART EN 16F877A
« Respuesta #6 en: 14 de Enero de 2015, 17:45:27 »
Buenas:
Según estuve probando alguna vez con el basic del PSI ,la respuesta a interrupciones es en el momento que se produce .-
No recuerdo si esto lo probé con interrupción por uart ,pero si respondia a cambio de estado de un pin.-
Sds.
Jorge

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: INTERRUPCION CON USART EN 16F877A
« Respuesta #7 en: 14 de Enero de 2015, 22:38:58 »
Las interrupciones en el BASIC del psi son naturales como en cualquier otro lenguaje, se procesan después de que termine la instrucción maquina actual, pueden tener un delay comprendido entre 4 y 8 ciclos de reloj y son el pilar de la programación.

En el BASIC del amigo yuhe no son naturales, se procesan después de que termine una sentencia (sentencia = conjunto de instrucciones maquina) del compilador, pueden tener un delay de centenares incluso miles de microsegundos, a título personal no les veo utilidad en este lenguaje.
« Última modificación: 18 de Enero de 2015, 12:23:27 por dogflu66 »
Saludos desde Granada, España.