首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

sci的发送中断服务程序进不了

sci的发送中断服务程序进不了

#include"DSP28_Device.h"
void InitPieCtrl(void);
void InitPieVectTable(void);
interrupt void TX_ISR(void);
//interrupt void RX_ISR(void);
Uint16 Send_Flag,RX_dat[100],i,j,TX_dat[100];
void main(void)
{
/*
初始化系统*/
InitSysCtrl();
/*
关中断*/
DINT;
IER = 0x0000;
IFR = 0x0000;
/*
初始化PIE中断*/
InitPieCtrl();
/*
初始化PIE中断矢量表*/
InitPieVectTable();

/*
初始化SCIA寄存器*/
    InitSci();
    for(i = 0; i < 100; i++)
    {
     RX_dat=0;
     TX_dat=i;
}
    i = 0;
    j = 0;
    Send_Flag = 0;
   
    EALLOW;
    PieVectTable.TXAINT=&TX_ISR;
//    PieVectTable.RXAINT=&RX_ISR;
    EDIS;
   
//    PieCtrl.PIEIER9.bit.INTx1=1;
    PieCtrl.PIEIER9.bit.INTx2=1;
    IER=IER|0x0100;
    EINT;
while(1)
{
// if(SciaRegs.SCICTL2.bit.TXRDY==1&&Send_Flag==1)
// { SciaRegs.SCITXBUF=RX_dat;
//  i++;
//  Send_Flag=0;
//  if(i==j)
//  { i=0;
//   j=0;
//  }
//  if(i==100)
//   i=0;
//
// }

;
}
}  
interrupt void TX_ISR(void)
{
// PieCtrl.PIEIER9.bit.INTx1=0;

SciaRegs.SCITXBUF=RX_dat;
i++;
if(i==100)
{
  PieCtrl.PIEIER9.bit.INTx2=0;
}
PieCtrl.PIEACK.bit.ACK9=1;
// PieCtrl.PIEIER9.bit.INTx1=1;
}
//interrupt void RX_ISR(void)
//{
// RX_dat[j]=SciaRegs.SCIRXBUF.all;
// Send_Flag=1;
// j++;
// if(j==2)
//  j=0;
// PieCtrl.PIEACK.bit.ACK9=1;
//}
首先SCI的接收中断服务程序可以正常进入执行,同时,也可以通过判断SciaRegs.SCICTL2.TXRDY==1来发送数据,在串口接收窗口中能正常显示发送的数据,但就是进不去发送中断服务程序中,请求帮忙???拜托兄弟们和版主们,给点意见,万分感谢!!!!!
发送TXENA使能,从SCITXBUF向TXSHF赋值使得TXRDY=1,表明SCITXBUF可以接受新的值,如果发送中断TX INT ENA使能,则数据的转移产生中断,而向SCITXBUF赋值将清零TXRDY。试着向SCITXBUF赋个值呢。
做人要做懒羊羊啊!
返回列表