一个C8051f023的板子,自己编一个内存测试程序,遇到问题

2020-01-19 19:40发布

本帖最后由 dengxm2009 于 2015-9-5 22:45 编辑

/************************************************************************************/
// ÒýÓÃÍⲿͷÎļþ

#include "c8051f020.h"                 // SFR declarations         
#include <stdio.h>
#include <string.h>
#include ".initinit.h"
#include ".io_ToUartSimUart.h"
#include ".generalgeneral.h"



/************************************************************************************/

/************************************************************************************
// ³£Á¿¼°È«¾Ö±äÁ¿¶¨Òå
*************************************************************************************/




/************************************************************************************
// ×Óº¯ÊýÉùÃ÷
*************************************************************************************/

void EMI_Init()
{
    EMI0CF    = 0x0F;
}

void Port_IO_Init()
{
   

       
          P1MDOUT   = 0x14;
    XBR2      = 0xC2;
}

void Oscillator_Init()
{
    int i = 0;
    OSCXCN    = 0x67;
    for (i = 0; i < 3000; i++);  // Wait 1ms for initialization
    while ((OSCXCN & 0x80) == 0);
    OSCICN    = 0x0C;
}

// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void)
{
   // EMI_Init();
    Port_IO_Init();
    Oscillator_Init();
}

/************************************************************************************
//  Ö÷Ñ­»·³ÌÐò
*************************************************************************************/

void main (void) {

        unsigned int data i;
        unsigned long j;
        unsigned int k;

        unsigned char xdata *x;
        unsigned char xdata temp;
    char data et;

    WDTCN = 0xde;                       // disable watchdog timer
    WDTCN = 0xad;
Init_Device();
Init_sim_uart1(18432000,9600);
        SimUart1_WriteString("SRAM_rw_test program running! ",strlen("SRAM_rw_test program running! "));
   

        k=0;
        i=0;
        x=0x0000;

        for(j=0;j<32767;j++)
    {
                et=*x;
                i=j%256;
                *x=i;   //i=0~255
                temp=*x;
                if(temp!=i)
        {
                        k++;
                }
                x++;
        }

        if (k==0)
                        SimUart1_WriteString("External SRAM read&write test succeed! ",strlen("External SRAM read&write test succeed! "));
        else
                        SimUart1_WriteString("External SRAM read&write test fail! ",strlen("External SRAM read&write test fail! "));
        while(1);
}
加上EMI初始化
默认优化选项8 程序可以运行,但是不正常,
Init_sim_uart1(18432000,9600);这句的参数无法传到这个子程序里面。
编译选项选择0,程序运行到晶振初始化
for (i = 0; i < 3000; i++);  // Wait 1ms for initialization
这句卡死。

外接573,62256集成块。数据地址复用。EMI初始化不知正确不正确?
EMI0CF    = 0x0F;

1.jpg (52.41 KB, 下载次数: 0) 下载附件 2015-9-5 22:45 上传
0条回答

一周热门 更多>