中断与定时计数

一、中断、定时

1.中断系统

中断源 级别 入口地址
外部中断0 最高 0003H
T0溢出中断 | 000BH
外部中断1 | 0013H
T1溢出中断 | 001BH
串行口中断 最低 0023H

2.中断不被响应情况

在遇到以下三种情况时中断请求不会被响应

(1)CPU正在处理同级或更高优先级的中断。

(2)所查询的机器周期不是当前正在执行指令的最后一个机器周期

(3)正在执行的指令是RETI或是访问IE或IP的指令

3.定时器/计时器

(1)结构:AT89S51定时器/计数器T0由特殊功能寄存器TH0、TL0构成,T1由特殊功能寄存器TH1、TL1构成, T0、T1都有定时器和计数器两种工作模式,两种模式实质都是对脉冲信号进行计数,只不过计数信号来源不同,同时它们具有4种工作方式(方式0,1,2,3)

(2)计数器初值计算

T0计算计数器初值:定时时间=(216−X)×12/晶振频率

二、外部中断、二级中断

(参考课件上的外部中断、二级中断内容)

1.单一外中断

在单片机P1口上接有8只LED。在外部中断0输入引脚(P3.2)接一只按钮开关K1。要求将外部中断0设置为电平触发。程序启动时,P1口上的8只LED全亮。每按一次按钮开关K1,使引脚接地,产生一个低电平触发的外中断请求,在中断服务程序中,让低4位的LED与高4位的LED交替闪烁5次。然后从中断返回,控制8只LED再次全亮。

(1)proteus仿真电路图

在这里插入图片描述

(2)实现代码

 #include <reg51.h>
  #define uchar  unsigned char
  void Delay(unsigned int i)	//延时函数Delay( ),i形式参数,不能赋初值
  {	
  	unsigned int j;
   	for(;i > 0;i--)		
   	for(j=0;j<333;j++)         //晶振为12MHz,j选择与晶振频率有关
   	{;}			   //空函数
  }
 
void  main( )			//主函数
  {	
  	EA=1;			//总中断允许
   	EX0=1;			//允许外部中断0中断
   	IT0=1;			//选择外部中断0为跳沿触发方式
  	w
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值