欢迎来到天天文库
浏览记录
ID:60775371
大小:328.00 KB
页数:5页
时间:2020-12-17
《IO实验3——中断按键LED.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验报告三:IO实验3——中断按键LED一、实验目的:了解单片机中断系统的结构以及与中断有关的寄存器、中断的开放与禁止,以及中断程序的编写技巧。二、实验准备内容:1、认真理解并读懂程序,根据程序画出protues的仿真原理图。2、把protues文件和编译生成的HEX文件带到实验室。三、实验内容及要求1、基本内容IF(已经准备有protues仿真文件和HEX文件的)(1)进行仿真演示。(1)认真理解并读懂程序,将所给程序在KEIL中编译,产生HEX文件;(2)将程序烧写到实验箱中的单片机中;(3)连接实验箱中的硬件:序号单片机(A2区)LED灯、按键(D1区)备
2、注1J61(P10~P17)J52(LED1~LED8)2J57(P30~P37)J53(KEY1~KEY8)只有K3,K4有作用(4)运行程序,在实验箱中实现程序功能。四、实验程序//*****************************************************************************//程序:ex3.c//功能:外部中断0、中断1控制LED//实验箱上D1区J52接P1//实验箱上D1区J53接P3//*****************************************************
3、************************#include/*包含头文件REG51.H*/#defineucharunsignedchar#defineuintunsignedint#defineLEDP1/*定义8个LED接至P1口*/voidExInt_Init();//外部中断初始化函数声明voidDelayMS(uintx);//延时函数声明voidLED_Down(uintx);//单只LED灯依次下移点亮函数声明voidLED_Up(uintx);//单只LED灯依灯上移点亮函数声明voidmain(){ExInt_Init(
4、);//外部中断初始化LED=0x00;//8个LED全亮while(1){DelayMS(250);LED=~LED;//8个LED闪烁}}//*****************************************************************************//函数名:ExInt_Init//函数功能:外部中断初始化//*****************************************************************************voidExInt_Init(){IE=0x85;
5、//允许外部中断、开放IP=0x01;//外部中断为最高优先级IT0=1;//设置外部中断为边沿触发方式IT1=1;//设置外部中断为边沿触发方式}//*********************************************************************************//函数名:ExInt0_ISR//函数功能:每次按键都会触发中断,中断发生时8个LED将变成从上到下依次点亮LED,//循环三圈后恢复成8个LED将闪烁状态,产生LED状态由按键控制的效果//******************************
6、***************************************************voidExInt0_ISR()interrupt0{ucharSave_LED=LED;//保护现场,将中断前LED的状态保存LED_Down(3);//单只LED依次灯下移点亮3圈LED=Save_LED;//恢复现场,恢复LED中断前的状态}//*********************************************************************************//函数名:ExInt1_ISR//函数功能:每次按
7、键都会触发中断,中断发生时8个LED将变成从下到上依次点亮LED,//循环三圈后恢复成8个LED将闪烁状态,产生LED状态由按键控制的效果//*********************************************************************************voidExInt1_ISR()interrupt2{ucharSave_LED=LED;//保护现场,将中断前LED的状态保存EA=0;//关中断EA=1;//开中断LED_Up(3);//单只LED依次灯上移点亮3圈EA=0;//关中断LED=Save_LED
8、;//恢复现场,恢复LE
此文档下载收益归作者所有