文档库

最新最全的文档下载
当前位置:文档库 > 实验4.指示灯 数码管的中断控制

实验4.指示灯 数码管的中断控制

实验4.指示灯/数码管的中断控制

【实验目的】

掌握外部中断原理,学习中断编程与程序调试方法。

【实验原理】

实验电路原理图如图A.53所示,图中按键K1和K2分别接于P3.2和P3.3,发光二极管D1接于P0.4,共阴极数码管LED1接于P2口。时钟电路、复位电路、片选电路忽略。

实验4.指示灯 数码管的中断控制

图A.53 实验的电路原理图

在编程软件配合下,要求实现如下功能:程序启动后,D1处于熄灯、LED1处于黑屏状态;单击K1,可使D1亮灯状态反转一次;单击K2,可使LED1显示值加1,并按十六进制数显示,达到F后重新从1开始。

软件编程原理为:K1和K2的按键动作分别作为INT0和INT1的中断请求,在中断函数中进行指示灯与数码管的信息处理。初始化后,主函数处于无限循环状态,等待中断请求。

【实验内容】

(1)熟悉μVision3的软件调试方法;

(2)完成C51语言编程;

(3)练习μVision3与ISIS的联机仿真方法。

【实验步骤】

(1)提前阅读与实验4相关的阅读材料;

(2)参考图A.53;和表A.5,在ISIS中完成原理图的绘制;

(3)在KeilμVision3中编写和编译C51程序,并生成可执行文件;

(4)在μVision3中启动ISIS的仿真运行,并进行联机调试。

【实验要求】

提交实验报告并包括如下内容:电路原理图、C51源程序(含注释语句)、软件调试分析、仿真运行截图及实验小结。

【参考图表】

实验4.指示灯 数码管的中断控制

实验4.指示灯 数码管的中断控制

【实验程序】

/*指示灯、数码管的中断控制程序*/

#include

sbit P0_4 = P0^4;

unsigned char i = 0; //数码管计数初始值0

unsigned char duanma[16] ={

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0-F的数码管段码

void main()

{ P2 = 0x00; //开机数码管黑屏

P0_4 = 1; //开机LED灯灭

EA = 1; //总中断允许

EX1 = EX0 = 1; //INT0、INT1允许

IT1 = IT0 = 1; //脉冲触发

while(1);

}

void INT_0SVR() interrupt 0 //INT0中断函数

{ P0_4 = !P0_4; //将P0_4非赋值给P0_4

}

void INT_1SVR() interrupt 2 //INT1中断函数

{ i++; //数码管计数加一

if(i==16) //当数码管计数达到16时回归1

i = 1;

P2 = duanma[i]; //将段码赋值给P2

}

【仿真截图】

【实验小结】

通过实验对Protues有了更多的了解,同时了解到中断系统在实际中的更好应用。经过编程操作起来更加熟练,能很快的完成绘图,编程时也更得心应手,能熟练的运用软件找出自己所编程序中的语法问题及其他问题,并予以改正。相信在今后的学习与试验中能取得更大的进步。