分类:
2007-11-14 20:27:39
1 测试平台
硬件:Altare DE2 Development and Education Borad
软件:uVision2 V
2 测试内容
在中断测试(01_interrupt)中,计数器中断的测试没有成功,原因未明确,怀疑是mc8051与普通的51单片机相比,关于TCON寄存器的结构有差异,导致在用C语言编程时不知道对哪个地址进行操作。
本试测试尝试了多个方案,试图了解mc8051中的counter 0是否在工作。设计程序时采用分支判断,用P2(与led灯连接)的闪烁情况来观察程序进入了哪个分支,从而作出判断。
程序逻辑为:
仿真时,进入分支2,即P2按0xf0和0x
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 测试结果
最终确定,在复位后mc8051的TF0位被置0 ,并且在“开始计数”后并不会被置1(所谓“开始计数”是指按照操作普通的51单片机的方法让mc8051的counter 0开始工作)。说明counter 0 并没有在计数。
|