请高手帮我看看怎么是怎么会事

2019-07-15 20:23发布

在进行仿真的时候,主程序运行到这条语句的时候就不动了(*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 ");         /*开总中断*/
   
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。