欢迎来到天天文库
浏览记录
ID:37692774
大小:96.50 KB
页数:9页
时间:2019-05-28
《中断与定时器计数器的C51》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、·9·1.MCS-51单片机的中断系统由哪几个特殊功能寄存器组成?MCS-51单片机的中断系统是由TCON、IE、IP组成的。2.MCS-51单片机中与定时器/计数器有关的特殊功能寄存器有哪几个?它们的功能各是什么?和定时器/计数器有关的寄存器分别为TMOD、TCON、TH、TLTMOD寄存器是定时器/计数器工作方式设置寄存器TCON寄存器是定时器/计数器控制寄存器TH、TL是初值寄存器3.试编写一段对中断系统初始化程序,允许外部中断0、外部中断1、定时器/计数器T0溢出中断、串行口中断,且使定时器/计数器T0溢出中断为高优先级中断。I
2、E=0X87;IP=0X02;4.MCS-51单片机若要把外部中断源扩充为6个,可采用哪些方法?如何确定它们的优先级?可以采用两种方法。(1)利用外部中断和查询相结合的方法扩展外部中断如果系统有多个外中断请求源,可以按照它们的轻重缓急进行排队,把其中最高级别的中断源直接连接到单片机外中断0输入引脚,其余的外部中断请求可以用利用逻辑器件通过“与”或者“或”的办法连接到单片机外中断1引脚,同时还连接到输入/输出端口(如P0或P1)的若干引脚,用来查询判断具体是哪一个中断请求源发生的中断事件。电路如下,利用单片机扩展5个外部中断源,中断的优先
3、次序为S0~S4,其中S0接到外部中断0上,S1~S4通过“与”门接到外部中断1上;单片机的P1.4~P1.7接4个发光二极管用来作为输出指示;当有S1~S4其中一个外部中断发生时,相应的发光二极管D1~D4点亮;当S0外部中断发生时,4个发光二极管全亮。·9·C5源程序代码如下:#includesbitP1_0=P1^0;//定义位变量sbitP1_1=P1^1;sbitP1_2=P1^2;sbitP1_3=P1^3;sbitP1_4=P1^4;sbitP1_5=P1^5;sbitP1_6=P1^6;sbitP1_7
4、=P1^7;voidmain(){P1=0xFF;//熄灭LEDIT0=1;IT1=1;//外中断0、1脉冲触发方式EA=1;EX0=1;EX1=1;//中断管理for(;;)//延时等待中断发生{;}}voidINT0_ISR()interrupt0//外中断0中断服务函数{P1=0x0F;//P1口高4位置0,点亮4个LED}voidINT1_ISR()interrupt2//外中断1中断服务函数{if(P1_0==0){P1=0xef;}//如果为中断S11,点亮D1elseif(P1_1==0){P1=0xdf;}elseif(
5、P1_2==0){P1=0xbf;}elseif(P1_3==0){P1=0x7f;}//如果为中断S44,点亮D4}·9·(2)利用优先编码器扩展外部中断可以采用优先级解码芯片如74LS148,把多个中断源信号作为一个中断。如下图所示,在有8个中断源(S0~S7)的情况下,经74LS148优先译码后,只占3个I/O引脚,即用3根引脚可分辨8个中断源,从而节省了I/O口资源(8个中断源的响应用D1~D7模拟)。C51源程序代码如下:#includeunsignedcharstatus;//定义一变量,用来读取P0口状态
6、voidmain(){EA=1;EX0=1;IT0=1;for(;;){;}}voidINT0_ISR()interrupt0//外中断0中断服务函数{status=P0&0x07;//读取P0口低三位状态,不同的值对应不同的中断源switch(status){case0:P1=0xfe;break;//处理中断源0case1:P1=0xfd;break;case2:P1=0xfb;break;case3:P1=0xf7;break;case4:P1=0xef;break;case5:P1=0xdf;break;case6:P1=0xb
7、f;break;case7:P1=0x7f;break;//处理中断源7}}·9·5.在MCS-51单片机系统中,已知振荡频率是12MHz,用定时器/计数器T0实现从P1.1产生周期是2s的方波,试编程。要输出周期为2s的方波,应产生1s的周期性定时,定时到则对P1.1取反即可实现。用定时/计数器T0产生周期性为10ms的定时,然后用一个变量对10ms计数100次。系统时钟为12MHz,定时/计数器T0定时10ms,计数值N为10000,选方式1,方式控制字为00000001B(01H),则初值X为X=65536-10000。C51源程
8、序代码如下:#includesbitP1_1=P1^1;unsignedchari;//定义计数变量voidmain(){i=0;//初始化TMOD=0x01;TH0=(65536-100
此文档下载收益归作者所有