导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→AVR单片机:[求助]IAR下编译出错问题[jiyy]

 *第6583篇: AVR单片机:[求助]IAR下编译出错问题

  
楼 主:jiyy 2002年11月28日10:12
 AVR单片机:[求助]IAR下编译出错问题
在IAR环境下,以下代码编译无法通过,哪位高手能指点一二?!!
#if IAR_VERSION < 200
错误指向这里-------》 interrupt [UART_TX_vect] void UART_TX_interrupt (void)
#else
  #pragma vector=UART_TX_vect
  __interrupt void UART_TX_interrupt (void)
#endif

{
    UartTxCount--;                                      /* Decrement number of 
characters left to send      */
    if (UartTxCount) {
        UDR = UartTxBuf[UartTxRdPtr];                   /* Place next character 
into UART transmit register */
        UartTxRdPtr++;                                  /* Advance to next 
character                        */
        OSSemPost(UartTxSem);                           /* Signal that we have 
room for one more character  */
    } else {
        UCR &= ~0x40;                                   /* Disable UART 
transmit complete interrupt         */
    }
}


C:\SOFTWARE\UCOS-II\IAR\TEST\Test.c (189) : Error[Pe077]: this declaration has 
no storage class or type specifier
C:\SOFTWARE\UCOS-II\IAR\TEST\Test.c (189) : Error[Pe065]: expected a ";"
C:\SOFTWARE\UCOS-II\IAR\TEST\Test.c (346) : Warning[Pe012]: parsing restarts 
here after previous syntax error

  
2楼:guest 2003年6月5日10:06
 Interrupt Vector 格式错,应这样编写
/* Serial Port application for 8XC196KB 
$Revision: 1.1 $
Copyright 1995-1999 IAR Systems. All rights reserved. */

#include "stdio.h"
#include "intrins.h"
#include "io196_kb.h"
#pragma  language=extended

sfrb int_mask = 0x08;
sfrb int_mask1 = 0x13;
sfrb int_pend = 0x09;
sfrb int_pend1 = 0x12;
sfrb serial_port_status = 0x11;
sfrb wsr = 0x14;
sfrb receive_register = 0x7;
sfrb transmit_register = 0x7;

static char buff[20];
static char index;

/* Transmit interrupt routine: */  

void interrupt [0x30] TI_interrupt(void)
{
  if(index != 0)
  {
   wsr = 0; /* set wsr send byte */
   transmit_register  = buff[index]; /* send it out again */
   index--;
  }
}
  
/* Receive interrupt routine: */  

void interrupt [0x32] RI_interrupt(void)
{
  char shadow;

  wsr = 0; /* set wsr to read incoming byte and status register:*/
  shadow = serial_port_status;
  if(index >   19) /* if the buffer is full, start over. */
    index = 0;   
  buff[index] = receive_register;
  /* wsr is set to send byte */
  transmit_register  = buff[index]; /* send it out again */
  index++;
}

void main(void)
{
 /* Initially, our buffer is empty */
 index = 0;
 /* Allow receive and transmit interrupt: */
 int_mask1 = 0x03; 
 /* Enable interrupts:*/
 enable_interrupt();

 /* Wait for an incoming byte: */
 while(1);
}

  
3楼:freeray 2007年3月14日12:03
 我也遇到了Pe065的问题,哪位大虾可以给点建议吗
如题

>>>>>>对该主题发表你的看法

本主题贴数3,分页: [第1页]


[上一篇主题]:硬件:有谁用过sanyo图象处理芯片LC82102,急需设计资料!

[下一篇主题]:96