关于6713的中断问题

我参考6713实验指导书中的实验6.1交通灯实验的例程,编写了一段在AD的间隙中响应串口中断的程序,其中AD过程用到了定时器中断(xint15)。
主程序如下:
main()
{

nPointNumber=0;
init_emif(); // 初始化emif
InitCTR(); // 初始化ICETEK-CTR
InitInterrupt();
LCR = 0x80;
DLL = 0x18;
DLM = 0x00;
LCR = 0x03;
FCR = 0x00;
MCR = 0x20;
IERt = 0x01;

for(;;);
}

InitInterrupt(); 函数定义如下:

void InitInterrupt()
{
// 设置中断控制寄存器
//EXP=0x1;
CSR&=0xfffffffe; // 关中断 GIE=0
ISTP=0x00000c00; // 重置中断向量表到0C00h
IMH=0x08000000; // 指定xint15中断
IML=0x04; // 指定xint4中断
ICR=0xff; // 清除等待的中断
IER=0x8013; // 使能xint4、xint15中断
// 设置定时器产生中断信号的频率
TIMER1PRD=0x1000; // 定时器1的周期=0x1000
TIMER1CTL=0x3c0; // 开始计数
CSR=CSR|1; // 开中断
}

将例程中vectors文件改写如下
unused .macro id

.global unused:id:
unused:id:
b unused:id: ; nested branches to block interrupts
nop 4
b unused:id:
nop
nop
nop
nop
nop

.endm

.sect ".vectors"

.ref _c_int00 ; C entry point

.align 32*8*4 ; must be aligned on 256 word boundary

RESET: ; reset vector
mvkl _c_int00,b0 ; load destination function address to b0
mvkh _c_int00,b0
b b0 ; start branch to destination function
mvc PCE1,b0 ; address of interrupt vectors
mvc b0,ISTP ; set table to point here
nop 3 ; fill delay slot
nop
nop

;
; plug unused interrupts with infinite loops to
; catch stray interrupts
;
unused 1
unused 2
unused 3
mvkl _XINT4,b0 ; load destination function address to b0
mvkh _XINT4,b0
.ref _XINT4
b b0
nop
nop
nop
nop
nop
;unused 4
unused 5
unused 6
unused 7
unused 8
unused 9
unused 10
unused 11
unused 12
unused 13
unused 14
;unused 15
mvkl _Timer,b0 ; load destination function address to b0
mvkh _Timer,b0
.ref _Timer
b b0
nop
nop
nop
nop
nop

编译后没有问题,但是运行中既不能完成AD过程也不能响应串口中断,不知道问题出在哪里??

第1个回答  2008-03-27
看不明白