Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

02/08/2006 #1


::Programando en C:: Error en las interrupciones
Hola, estoy trabajando con el emulador Softec inDART-HC08 y un micro MC908JL8CPE. En él tengo conectado un LED al PTA_PTA0, un zumbador al PTD_PTD3 y 4 switchs en PTA_PTA1, PTA_PTA2, PTA_PTA3 y PTA_PTA4.

Tengo el siguiente codigo en C escrito. Estoy trabajando con el Freescale CodeWarrior.
Cuando voy a compilar me da un error extraño. Me dice "Empty declaration" en la rutina para la interrupción.


Código:
#include "hidef.h"
#include "derivative.h" /* include peripheral declarations */


//-- Valor para conseguir overflow cada 100ms
#define T100ms  0x0EF7

void rsi_ov1 (void) interrupt 6 
{
  //-- Desactivar flag de interrupcion
  T1SC=(~0x80);
//
//-- Cambiar de estado bit 0 del puerto B
pitar(1); 
}

#pragma DATA_SEG SHORT _DATA_ZEROPAGE
void delay (unsigned int dly);
void pitar (int parametro);
void luz (int parametro2);
void leerp (void);
int leido;
int i;
unsigned char valor;



void main (void) 
{
       

         //***Inicialización
         
         EnableInterrupts                        // Enables Global Interrupt
         CONFIG1 |= 0x01;                        // Disables COP

         DDRD_DDRD3=1; //Zumbador as output
         DDRA_DDRA0=1; //LED as output
         
         DDRA_DDRA1=0; //Switch as input
         DDRA_DDRA2=0; //Switch as input
         DDRA_DDRA3=0; //Switch as input
         DDRA_DDRA4=0; //Switch as input
         
         PTAPUE_PTAPU1=1;  //Pullup
         PTAPUE_PTAPU2=1;  //Pullup
         PTAPUE_PTAPU3=1;  //Pullup
         PTAPUE_PTAPU4=1;  //Pullup
         
          /*-----------------------------*/
        /*- Configurar el temporizador */
        /*-----------------------------*/
T1SC = 0x76;    // Prescaler: Div entre 64

//-- Establecer modulo del contador
//-- IMPORTANTE!: Se debe realizar en este orden
//-- primero la parte alta y luego la baja
T1MODH = 0x0E;   // Parte alta
T1MODL = 0xF7;   // Parte baja

//-- Habilitar las interrupciones
 _asm CLI _endasm; 
//-- Activar temporizador
T1SC&=~(0x20);

        //***
        
        
        for(;;) { // Forever
    
         //pitar(1); 
         //luz(0); 
        // leerp();
          
         }
}

void delay (unsigned int dly)
{
int i;

do
{
for(i=0; i<100; i++)
;
}
while(dly-- > 0);
}

      
void pitar (int parametro)
{
if (parametro==0)
{
PTD_PTD3=0;
}
else
{
PTD_PTD3=1;
}
}

void luz (int parametro2)
{
if (parametro2==0)
{
PTA_PTA0=0;
}
else
{
PTA_PTA0=1;
}
}

void leerp (void) {
leido=PTA_PTA1+PTA_PTA2+PTA_PTA3+PTA_PTA4;
}

//////////////////////////////////////////////////////////////////////////////
// IRQ Interrupt Handler
// ---------------------
// This subroutine is needed to implement the "Halt" debugging command.
//////////////////////////////////////////////////////////////////////////////
void irq_isr (void) 
{
asm {
wait_irq:
        bil     wait_irq                        // Waits for the IRQ signal to go high
        swi                                     // Jumps to monitor code
        rti
        }
}
Alguien sabe como solucionar estos errores???

Graciass

Salu2
10/02/2007 #2


hola podes poner un marcador para ver en que parte te pone el error.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.