TL16c550的中断通信问题
用TL16c550与DSp异步通信的,但是出现问题,用查询方式是好使的,但是中断方式为什么不行?
自己慢慢摸索的,不是太懂,请教各位,中断向量表也配置好了!
main()
{
MCWA=0x00080008;
LCR = 0x80; //使能波特率设置寄存器。DLAB=1.访问除数和功能切换寄存器,奇校验,奇偶校验无效,一个停止位,数据长度5位
DLL = 0x18; // 波特率9600
DLM = 0x00;
LCR = 0x03; // 设置数据格式:无校验,一个停止位,数据长度8位
FCR = 0x01;//允许FIFO
MCR = 0x00;//MODE控制
IER = 0x01; // 使能接收就绪中断
InitInterrupt();
while(1)
{}
}
void interrupt XINT4() //中断响应函数
{
unsigned int uWork;
while(LSR&0x01) //接收数据就绪
{
uWork=RBR&0xff;//接收数据
THR=uWork; //将接收到的数据发送出去
}
FCR=0x03;//清空FIFO
}
void InitInterrupt(void)
{
// 设置中断控制寄存器
CSR&=0xfffffffe; // 关中断 GIE=0
ISTP=0x00000c00; // 重置中断向量表到0C00h
IMH=0x0; // 指定xint4中断
IML=0x04;
ICR=0xff; // 清除等待的中断
IER=0x13; // 使能xint4中断
CSR=CSR|1; // 开中断
|