指示灯数码管的中断控制

  • 格式:doc
  • 大小:236.00 KB
  • 文档页数:7

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学生实验报告

学院:软件与通信工程学院

课程名称:单片机系统设计

专业班级:

姓名:

学号:

学生实验报告(1)

一、实验综述

1、实验目的及要求

【实验目的】

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

【内容及要求】

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

(2)完成c51语言编程

(3)练习uvision3与ISIS的联机仿真方法

【实验原理】

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

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

2、实验仪器、设备或软件

电脑, Keil uVision4, proteus7

二、实验过程(实验步骤、记录、数据、分析)

(1)在Keil uVision4中编写和编译C51程序,生成可执行文件;

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

【实验代码】

#include

unsigned char

led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5e ,0x79,0x71};

unsigned char count=0;

sbit P0_4=P0^4;

void INT_0SRV() interrupt 0 {

P0_4 = ~P0_4;

}

void INT_1SRV() interrupt 2 {

count++;

if(count==16)

count = 1;

P2 = led_mod[count];

}

void main(){

P2=0x00;

P0_4=0x01;

EA=1;

EX0=1;

EX1=1;

IT1=1;

IT0=1;

while(1);

}

【实验原理图】

三、结论

1、实验结果

(1)程序启动后,D1处于熄灯,LED1处于黑屏状态

(2)单击K1,使D1亮灯状态反转一次

(3)单击K2,使LED1显示值加1,

.

.

.

.

.

(4)达到F后重新从1开始

2、分析讨论

由运行结果可以看出,按键K1产生外部中断0控制D1的状态,使指示灯D1由亮到暗一次变化;按键K2产生外部中断1使LED显示0~F不同数值。

四、指导教师评语及成绩:

评语:

成绩:指导教师签名:

批阅日期: