1 测试平台
硬件:Altare DE2 Development and Education Borad
软件:uVision2 V2.40a、Quartus II 5.1
2 测试内容
原计划测试mc8051的所有中断源,但由于当前对其与普通8051的结构差异还不是很明确(还有一些未知用途的端口),所以测试了其外部中断源 /INT0与 /INT1,以及它们的优先级设置。
测试设计如下:
用P2作输出(P2连接至LEDR17~LEDR10),未有中断请求时,点亮的灯往左移位;当中断 /INT0发生时,灯往右移位;当中断 /INT1发生时,灯左右闪烁(即P2交替输出0x0F和0xF0)。
3 文件说明
\Interrupt\ExtInterrupt\ExtInterrupt.c c语言代码
\Interrupt\ EXinterrupt0.hex 仅测试/INT0的HEX文件
\Interrupt\ EXinterrupt1.hex 仅测试/INT1的HEX文件
\Interrupt\ EXPriority.hex 测试两个中断源优先级的HEX文件
/*------------------------------------------------------- /* Filename: ExtInterrupt.c /* Description: Test the external interrupt 0. /* Author: Long Hengyu /* Date: 11-01-2007 /*-------------------------------------------------------
#include <REG51.H> #include <stdio.h>
const char design[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
main() { unsigned int i,j; //unsigned char shift; EA = 1; // Set CPU status: interrupt enable EX0 = 1; // Set external interrupt 0 enable EX1 = 1; // set external interrupt 1 enable PX0 = 0; PX1 = 1;
for( ; ; ) { for(j=0; j<8 ; j++) { for(i=0; i<50000; i++); P2 = design[j]; // the turned-on led from right to left } } }
void EX0_int(void) interrupt 0 { unsigned int i; int j; for( ; ; ) { for(j=7; j>=0 ; j--) { for(i=0; i<50000; i++); P2 = design[j]; // the turned-on led from left to right } return; } }
void EX1_int(void) interrupt 2 { unsigned int i; for( ; ; ) { for(i=0; i<50000; i++); P2 = 0x0f; for(i=0; i<50000; i++); P2 = 0xf0; return; } }
|
4 测试结果
mc 8051的两个外部中断源可以正确工作,并能按照设置的优先级进行中断抢占。
|
文件: |
01.rar |
大小: |
20KB |
下载: |
下载 | |
阅读(1491) | 评论(0) | 转发(0) |