Chinaunix首页 | 论坛 | 博客
  • 博客访问: 436435
  • 博文数量: 122
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 1538
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-17 11:10
文章分类

全部博文(122)

文章存档

2011年(1)

2008年(86)

2007年(35)

我的朋友

分类:

2007-11-08 14:00:48

1         测试平台

       硬件:Altare DE2 Development and Education Borad

       软件:uVision2 V2.40aQuartus II 5.1

2         测试内容

调试内存访问指令,由于没有外部内存,只测试了内部内存的读和写访问。访问内存需要包含头文件

测试设计如下:

主程序的功能为循环读入程序存储区的前100字节,将指令显示到P2(七个LED灯)上。若外部中断0响应,则执行中断程序,功能是对数据存储区的前10个字节进行读写操作。为保证程序正常运行下去,对数据区进行写操作时需要先保存其内容,用以复原数据,具体做法为:先保存原有数据,写入新数据,再读出写入数据(显示在LED灯上),最后将原有数据写入存储区。

3         文件说明

\Memory\Memory.c                     c语言代码

\memory.hex                               测试的HEX文件

4         测试结果

mc 8051程序存储区的读指令和数据存储区的读、写指令工作正常。

 

/*-----------------------------------------------------------
/* Filename: Memory.c
/* Description: Test Memory Access.
/* Author: Long Hengyu
/* Date: 11-07-2007
/*----------------------------------------------------------

#include <absacc.h>
#include <REG51.H>
#include <stdio.h>

main()
{
    unsigned int pc;
    unsigned int i,j;
    EA = 1;        // Set CPU status: interrupt enable
    EX0 = 1;    // Set external interrupt 0 enable
    for(;;)
    {
        pc = 0x00;
        for(j=0;j<100;j++ )
        {
            for(i=0;i<50000;i++);
            pc += 0x01;
            P2 = CBYTE[pc];
        }
    }
}

void EX0_int(void) interrupt 0
{
    unsigned int pc;
    unsigned int i,j;
    unsigned char temp;
    for(;;)
    {
        pc = 0x00;
        for(j=0;j<10;j++ )
        {
            pc += 0x01;
            P2 = DBYTE[pc];
            for(i=0;i<50000;i++);
            temp = DBYTE[pc];
            DBYTE[pc] = 0x5a;
            P2 = DBYTE[pc];
            for(i=0;i<50000;i++);
            DBYTE[pc] = temp;
        }
        return;
    }
}

 

文件: 02.rar
大小: 19KB
下载: 下载
阅读(1727) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~