在进行仿真的时候,主程序运行到这条语句的时候就不动了(*PEDATDIR = *PEDATDIR&0x0FFFD;),想进入死循环了一样,我是出学的,在做硬件仿真的时候应该把程序下载到外部RAM里吧,我现在的电路上还扩展了I/O空间,这样就是地址线和数据线复用,不知道这样能不能进行仿真~ 主函数~: main() { char LedBuf[4]; long i; unsigned int t; DSPsystem_Init(); KeyOutput1_Fo; KeyOutput2_Fo; *PEDATDIR = *PEDATDIR&0x0FFFD; sprintf(LedBuf, "%4s", "----"); LedDisplay(LedBuf, 1); i=0; for(;;) { while(key == 0); switch(key) ……………… }
我的初始化函数如下: void DSPsystem_Init(void) { asm(" SETC INTM "); /*关总中断*/ asm(" CLRC SXM "); /*抑制符号扩展*/ asm(" CLRC OVM "); /*累加器中结果正常溢出*/ asm(" CLRC CNF "); /*B0区被配置为数据空间*/ *SCSR1=0x83FE; /*时钟2倍频,CLKIN=12M,CLKOUT=24M*/ *WDCR=0x00E8; /*不使能WDT*/ *IMR=0x0000; /*屏蔽所有CPU中断*/ *XINT1CR=0x8001; /*高优先级,使能中断INT1,上升沿产生中断*/ *XINT2CR=0x8001; /*低优先级,使能中断INT2,下降沿产生中断*/ *IFR=0xFFFF; /*清全部中断标志*/ *MCRA=0x0007; /*IO口初始化*/ *MCRB=0xFF3D; *MCRC=0x0000; WSGR=0x0006; /*外部IO空间和数据存储空间插入等待周期*/ *PADATDIR=0xF080; *PBDATDIR=0x00FF; *PCDATDIR=0xFF00; *PDDATDIR=0xFFFF; *PEDATDIR=0xFFFF; *PFDATDIR=0xF000; /*串口初始化*/ *SCICCR=0x0007; /*空闲线多处理器模式,8位数据,1位停止位,无奇偶校验*/ *SCICTL1=0x0013; /*接收使能,SLEEP=0,SW RESET=0*/ *SCICTL2=0x0002; /*接收中断使能*/ *SCIHBAUD=0x0001; *SCILBAUD=0x0038; /*波特率为9600systemclk=24M*/ *SCICTL1=0x0033; /*串口初始化完成,SW RESET=1*/ *SCIPRI=0x0060; /*一旦仿真挂起,在完成当前的接收/发送操作后停止*/ /*PEDATDIR = *PEDATDIR&0xFFFD;*/ *IMR=0x0001; /*开中断INT1*/ asm(" CLRC INTM "); /*开总中断*/ }
|