单片机 中断实验 实验报告_第1页
单片机 中断实验 实验报告_第2页
单片机 中断实验 实验报告_第3页
单片机 中断实验 实验报告_第4页
单片机 中断实验 实验报告_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验三中断实验一、实验内容1.当单片机的INT0端出现负脉冲时,进入相应的中断服务程序,P1口做输出口,接8只发光二极管,通过程序控制发光二极管依次点亮。2.选择外部中断0(P3.2)接按键INTO到地,按下出现负脉冲时,进入相应的中断服务程序,在中断服务程序中,数码管显示加1,在0-9之间循环。二、实验目的1、学习外部中断技术的基本使用方法。2、学习中断处理程序的编程方法。三、实验原理(中断原理部分参考教材填写)本实验中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。要保护的地方,除了累加器ACC、标志寄存器PSW外,还要注意。一是主程序中的延时程序和中断处理程序中的延时程序不能混用,本实验中,主程序延时用的寄存器和中断延时用的寄存器应不相同。四、实验电路(参考学习板说明书Page11)五、接线方式(参考学习板说明书Page11)P1口接发光二极管的L1—L8;单脉冲输出端“”接INI0,即接89C51的P3.2管脚。六、参考程序程序一、ORG0030Htmpdate:DB01H,02H,04H,08H,10H,20H,40H,80H/*定义常量做为输出*/ORG0000HLJMPMAINORG0003HLJMPINTMAIN: SETBEA /*首先开启总中断*/ SETBEX0 /*开启外部中断0*/ SETBIT0 /*设置成下降沿触发方式*/ MOVR7,#8 MOVDPTR,#TMPDATEL0: SJMPL0 //等待中断 INT: DJNZR7,L1/*外部中断0每按一次主板上的"INT0"键,中断响应,调用该函数,我们从P1口输出点亮发光二极管*/ MOVR7,#8L1: MOVA,R7 MOVCA,@A+DPTR CPLA MOVP1,A RETI END程序二、/***************************************************************功能:按下按键,数码管加1,用中断的方法作者:txl时间:2009-04版本:V1.0***************************************************************/#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharsbitwei1=P2^0;sbitkey1=P3^2;ucharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//共阳数码管码表//全局变量ucharnum;//函数声明voiddelay(uintz);voidled_show(uchartemp);voidmain(){ num=0;// IT0=1;//中断以下降沿方式触发IT0=0;//中断以低电平方式触发EX0=1;//允许外部中断0中断 EA=1;//总中断开wei1=0; while(1) { led_show(num); //显示 }}/***************************************************************功能:外部中断0入口***************************************************************/voidEX0_Int()interrupt0{ EX0=0; //关中断 num++;if(num==10)num=0; while(!key1);//消除抖动 delay(5); while(!key1);// for(;!key1;); //等待放开 EX0=1; //开中断}voiddelay(uintz){ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voidled_show(uchartemp){P0=table[temp];delay(5);}扩展程序三、#include<AT89X52.H> //包含头文件sbitled=P1^0; #defineshumaP0 //数码管数据口sbitLED_0=P2^0; //定义数码管4个控制位sbitLED_1=P2^1;sbitLED_2=P2^2;sbitLED_3=P2^3;unsignedcharm;unsignedintcodeton[7];voiddisplay(unsignedchard1,unsignedchard2,unsignedchard3,unsignedchard4);/*=====0-9=====A-G=====*/unsignedchara[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //共阳极数码管的段码0123456789ABCDEF//定时初值计算方法:以5ms为例,5ms=5000us,0xffff-5000/1.085即为TH和TL的值voidint1()interrupt3//T1中断,时间是5ms{ TR1=0; //关中断 TH1=0xed; //装定时器初值实现5ms定时 TL1=0xff; ET1=1; //开中断 TR1=1; display(1,2,3,4); //在中断里显示数字 }voidmain(void){ m=1; TMOD=0x10; //设置为T1定时器 TH1=0xed; //装定时器初值 TL1=0xff; TR1=1; //开中断 ET1=1; EA=1; while(1) { }}voiddisplay(unsignedchard1,unsignedchard2,unsignedchard3,unsignedchard4){ if(m==1) //每进入一次中断显示1位,用变量m作为显示位标识 { LED_0=0; //使能该数码管控制位 LED_1=LED_2=LED_3=1; //其他控制位无效 shuma=a[d1]; //按照数据点亮该数码管 } if(m==2) //第二次中断显示第二位 { LED_1=0; LED_0=LED_2=LED_3=1; shuma=a[d2]; } if(m==3) //第三次中断显示第三位 { LED_2=0; LED_1=LED_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论