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:
<?php
#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