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

全部博文(122)

文章存档

2011年(1)

2008年(86)

2007年(35)

我的朋友

分类:

2007-11-14 20:27:39

1         测试平台

       硬件:Altare DE2 Development and Education Borad

       软件:uVision2 V2.40aQuartus II 5.1

2         测试内容

在中断测试(01_interrupt)中,计数器中断的测试没有成功,原因未明确,怀疑是mc8051与普通的51单片机相比,关于TCON寄存器的结构有差异,导致在用C语言编程时不知道对哪个地址进行操作。

本试测试尝试了多个方案,试图了解mc8051中的counter 0是否在工作。设计程序时采用分支判断,用P2(与led灯连接)的闪烁情况来观察程序进入了哪个分支,从而作出判断。

程序逻辑为:

仿真时,进入分支2,即P20xf00x0f闪烁。若在开发板上进入分支1,即P20x5a0xa5闪烁,而最终不进入分支2,则说明二者结构不同。

3         文件说明

\TCInterrup\ TCInterrup.c                   c语言代码

\counter0.hex                                     测试的HEX文件

/*-------------------------------------------------------
/* Filename: TCInterrupt.c
/* Description: Test the Timer/Counter.
/* Author: Long Hengyu
/* Date: 11-13-2007
/*-------------------------------------------------------


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

sfr TSEL = 0x8E;

main()
{
    unsigned int i;
    TSEL = 0x00;
    TMOD = 0x01;    
// Set Timer0 works in mode 1

    TH0 = 0x00;
    TL0 = 0x00;
    TR0 = 1;
    for(i=0;i<50000;i++);
    
    if(!TF0)
    {
        for(i=0;i<50000;i++);
        P2 = 0x5a;
        for(i=0;i<50000;i++);
        P2 = 0xa5;

        for(i=0;i<50000;i++);
        P2 = 0x5a;
        for(i=0;i<50000;i++);
        P2 = 0xa5;

        for(i=0;i<50000;i++);
        P2 = 0x5a;
        for(i=0;i<50000;i++);
        P2 = 0xa5;
    }

    i = 0x00;
    for(;;)
    {        
        if(TF0)
        {
            TF0 = 0;
            i++;
            if(i%10 == 0)    P2 = 0xf0;
            if(i%10 == 5)    P2 = 0x0f;
        }
    }
}

4         测试结果

最终确定,在复位后mc8051TF0位被置0 ,并且在“开始计数”后并不会被置1(所谓“开始计数”是指按照操作普通的51单片机的方法让mc8051counter 0开始工作)。说明counter 0 并没有在计数。

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

chinaunix网友2009-05-11 15:05:37

楼主,你好,最近我也在研究8051的IP,能加你的QQ吗?有些问题想跟你讨论