danielmi 发表于 2012-4-10 11:03:09

M16C/62单片机串口查询发送接收没有问题,但用中断就跑飞

项目一天一天逼近了,搞了几天还是没有搞出来,都急了。

现在的问题就是用查询的方式来发送和接收没有问题,但是用中断来接收数据就出现illegal instruction,程序跑到BRK处停了。是不是HEW有什么地方要设置的啊,刚开始用瑞萨的单片机,不太熟悉,望各位帮帮忙啊!!

附上代码:void InitSci ( void )
{
    //pclk1 = 1;   /// seleck F1SIO,using default setting
    /* UART Transmit/Receive Control Register 2 */
    ucon = 0x00;
    u0c0 = 0x10;
    u0brg = BAUD(115200L);                // set baud rate
       
    /* UART0 transmit/receive control register 1 */
    /*disable transmit and receive, no error output pin, data not inverted */
    u0c1 = 0x00;
    u0mr = 0x05;
    /* clear UART0 receive buffer by reading */
    u0tb = u0rb;
    /* clear UART0 transmit buffer */
    u0tb = 0;

    /* Enable UART0 receive interrupt, priority level 5 */
    s0ric = 0x05;

    u0c1 = 0x05;
               pd6_7 = 1;
        pd6_6 = 0;
}
void SendByte ( unsigned char b )
{
        while( ti_u0c1 == 0 );
        u0tbl = b;
        ClearSCITxFlag();
}
void SendString ( char far *str )
{
        // sends string until NUL terminator is reached
       
        unsigned short us;

        us = 0;
        while ( str != 0 )
        {
                SendByte ( (unsigned char) str );
                us++;
        }
}
#pragma interrupt        _uart0_receive(vect=18)
void _uart0_receive(void);
void _uart0_receive(void){}

void main(void)
{

        u8 c;
        __low_level_init();///初始化系统时钟 外部晶振时钟:
       
        InitSci();       
//        asm("Fset i");
       
        SendString("UART0 Testing!!\r\n");
        SendString("Over\r\n");
        SendString("Over\r\n");
        SendString("Over\r\n");
        SendString("....\r\n");       
       
        SendString("Please Input Something\r\n");
        while(!(s0ric & 0x08));
        c = u0rb;
        SendByte(c);
        while(1)
        {
               
               
        }       
}

fengtao137 发表于 2012-7-18 09:46:04

新工作,刚用这个芯片,不能帮到你{:sad:}
页: [1]
查看完整版本: M16C/62单片机串口查询发送接收没有问题,但用中断就跑飞