欢迎来到天天文库
浏览记录
ID:34706074
大小:241.70 KB
页数:10页
时间:2019-03-09
《mcs-51单片机中断系统与应用(基于-proteus仿真)x》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、MCS-51单片机中断系统及应用基于Proteus仿真前言:本文对MCS-51单片机的中断系统进行了简明扼要的总结和归纳,并在后面举了三个简单的例子,这样有助于更好地理解与掌握。1、MCS-51单片机有5个中断源,2个中断优先级。相同优先级条件下,CPU响应中断的顺序是处部中断0,定时/计数器0,外部中断1,定时/计数器1,串行口中断。当某一优先级的中断处理程序正在执行时,可以被更高优先级的中断请求中断,但不会被同级或低级的中断源所中断。2、中断允许寄存器IE(interruptenable):可位寻址,相应位置1,表示
2、开相应中断,置0表示关相应中断。(EX英文全称为external外部,所以EX0表示外部中断0)总中断:EA外部中断0:EX0中断编号为0,在函数后加上interrupt0来说明是外部中断0外部中断1:EX1中断编号为2,在函数后加上interrupt2来说明是外部中断1定时/计数器0:ET0中断编号为1,在函数后加上interrupt1来说明是T0中断定时/计数器1:ET1中断编号为3,在函数后加上interrupt3来说明是T1中断串行口中断:ES中断编号为4,在函数后加上interrupt4来说明是串行口中断只有使
3、用interrupt关键字定义的函数才能被当作中断服务函数使用3、中断优先级寄存器IP(interruptpriority中断优先级):可位寻址,相应位置1,表示高优先级,置0表示低优先级。外部中断0:PX0外部中断1:PX1定时/计数器0:PT0定时/计数器1:PT1串行口中断:PS4、定时/计数器T0,T1控制寄存器TCON:中断请求标志都是当CPU检测到有相应中断发生后,由硬件将相应的标志置1,当CPU响应该中断转向相应的中断处理程序时,由硬件自动将相应的标志位清0.系统复位时,TCON每一位都清零。在查询方式时,
4、TF0,TF1可以由程序查询和清“0”。外部中断0触发方式控制位:IT0=1为下降沿触发,IT0=0为低电平触发外部中断1触发方式控制位:IT1=1为下降沿触发,IT1=0为低电平触发外部中断0中断标志位IE0:为1表示有中断请求,为0表示无中断请求外部中断1中断标志位IE1:为1表示有中断请求,为0表示无中断请求定时/计数器0中断标志位TF0:为1表示有中断请求,为0表示无中断请求定时/计数器1中断标志位TF1:为1表示有中断请求,为0表示无中断请求定时/计数器0运行控制位TR0:为1表示启动,为0表示停止定时/计数器
5、1运行控制位TR1:为1表示启动,为0表示停止1、串行口控制寄存器SCON:TI(TransmitInterrupt发送中断)是串行口发送中断标志位,CPU将一个数据写入发送缓冲器SBUF时,就启动发送。每发送完一帧串行数据后,由中断系统的硬件自动将TI置1.但CPU响应中断时,并不清除TI,必须在中断处理程序中用指令将TI清0RI(ReceiveInterrupt接收中断)是串行口接收中断标志位,在允许串行口接收时,每接收完一帧数据后,中断系统的硬件自动将RI置1.同样,CPU响应中断处理程序时,并不自动将RI复位,必
6、须在中断处理程序中用指令将其清02、总结编写中断函数时,要记得在函数后面加上interrupt+中断编号,以说明是什么中断函数。在主函数中要记得开总中断,开相应中断,设置优先级,对外部中断要设置触发方式,对定时/计数器中断要用TR0/TR1=1启动计数器3、外部中断的简单应用实例(一)如下图所示,正常情况下,数码管以一定时间间隔循环轮流显示0~9,每按一次按钮开关,触发一次外部中断0,使数码管闪烁10次,闪烁完毕后继续正常的数字轮流显示。C程序如下:#include#defineucharunsigne
7、dchar#defineuintunsignedintvoiddelay(uintx){uchari;while(x--)for(i=0;i<120;i++);}ucharcodedis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchari;voidmain(){EA=1;//开总中断EX0=1;//开外部中断0IT0=1;//外部中断0设置为下降沿触发while(1){for(i=0;i<10;i++){P0=dis[i];delay(200);}}}
8、voidint0()interrupt0//外部中断0函数定义{P0=0xff;delay(200);for(i=0;i<10;i++)//闪烁十次{P0=~P0;delay(200);}}}Proteus仿真运行结果如下:1、外部中断的简单应用实例(二)如下图所示,正常情况下,数码管以一定时间间隔循环轮流显示0~9
此文档下载收益归作者所有