
把定时器设为计数方式,计数初值为0xFF,自动重载模式,通过触发定时器引脚就可以触发中断了。
在需要有多个外部中断的应用场合,可用8259A可编程中断控制器接口芯片给MCS-51单片机扩展外部中断源。解决MCS-51单片机系统中,如何产生与8259A相匹配的中断响应信号,8259A的初始化程序及单片机中断响应程序的设计。
扩展资料:
51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。例如,“双功能下载线”就具有良好的稳定性和较快的下载速度,上位机可扩展,可以下载更多的单片机及嵌入式芯片。通过实验,这样才可以进行实际的,全面的学习。日后在工作上,仿真器也大有用处。
参考资料来源:百度百科-51单片机
我们设计的简易PLC有的时候需要一些实时的 *** 作,比如故障检测及保护,到位检测等等。
如果外部中断太多、太频繁,可能导致MCU陷于中断程序中,无法执行主程序以及其它中断程序,导致控制器无法及时响应,造成假死现象,影响客户体验,甚至影响控制器的功能。
因此,我们在设计时参照SDS的要求做了以下的规定:
要求
1) 不允许外部输入造成CPU的中断。
2)如果必须要使用外部中断,必须满足以下条件:
输入信号必须用硬件的低通滤波器进行过滤,比如通过R、C滤波电路进行过滤。
根据控制器定义的功能,确定输入信号在最坏情况下的最大频率,将硬件低通滤波器的截止频率设计为比该频率高5%。
当输入信号的频率高于硬件低通滤波器的截止频率时,输入信号不应该让MCU产生中断。
当输入信号的频率为硬件低通滤波器的截止频率时,MCU处理输入信号产生的中断所处理的时间加上其它所有中断所花费的时间,不应该高于中断产生的最小周期的30%。
R、C滤波电路
设计实例
比如,我们在给客户定制的一款控制器中,用了主、从两个MCU,从MCU通过单线通信将数据发送给主MCU,其中用到了IO口的电平变化中断。
其中,bit 1用大概256us的脉宽表示,bit 0用128us的脉宽表示。
考虑到主、从MCU的时钟偏差以及器件的公差,bit 0的最短脉宽考虑为128us05=64us,则最高频率为15625kHz。根据计算,用于滤波的R、C低通滤波器的R阻值为51K,电容为125nF,选择103的电容。
当输入信号为频率超过15625kHz的方波信号时,MCU不应该产生电平变化中断。
当输入信号为频率15625kHz的方波信号时,
MCU处理电平变化中断的时间,经实际测试为51us ,中断周期为625us,即每隔626us中断一次。
此外还有100us的定时器中断,处理花费4us,中断周期为100us,即每隔100us中断一次。
串口接收中断花费7us,最高支持115200bps的波特率,中断周期约为868us,即每隔868us中断一次。
串口发送中断花费6us,最高支持115200bps的波特率,中断周期约为868us,即每隔868us中断一次。
当所有中断同时发时的,MCU处理花费的总时间为51us+40us+7us+6us=221us。
总处理时间/最小中断周期=22us/625us=35%,勉强满足要求。
一、采用硬件请求和软件查询的方法:
这种方法是:把各个中断源通过硬件“或非(高有效,如CD4002)”(与,低有效)门引入到单片机外部中断源输入
端(INT0或INT1),同时再把外部中断源送到单片机的某个输入输出端口,这
样当外部中断时,通过“或非”(与)门引起单片机中断,在中断服务程序中再通
过软件查询,进而转相应的中断服务程序。显然,这种方法的中断优先级取决于
软件查询的次序。其硬件连接和软件编程如下:
Void zhongduan (void) interrupt 0 using 3 //中断函数
{
EX0=0;//关中断
If(P0_0=1) { }//中断查询
If(P0_1=1) { }//中断查询
If(P0_2=1) { }//中断查询
EX0=1;开中断
}
二、用普通二极管构成中断选择
扩展的8个外部中断源均通过二极管向I N T(x=0或I)请求中断。当某个外部中断源请求中断服务时输出低电平,单片机的I NT 经二极管接地电平,单片机满足响应外部中断(I N T)请求条件,响应中断,程序立即转向I NT 对应的中断入口地址处开始执行中断服务程序,通过软件查询PI0~P17口外中断源的状态,以识别提出请求的外扩中断源,并转向中断服务程序为其服务,其查询顺序即为外部扩展中断源的中断优先级顺序。在图中,是选用PI0~PI7作为外扩中断源请求的状态信息输入端口。
有点类似第一种方法。
三、用定时器/计数器作外部中断
单片机的定时器/计数器是一个加一计数器,每当计数输入端有一个“1—0”的负
跳变时,计数器加一,当加一计数器溢出时,就向CPU发出中断,利用这个特性
来扩展中断的方法是:首先把定时器/计数器设置成计数方式,并预置满值,把
外部中断源输入到P3口第4引脚或第5引脚(计数器输入端),这样就可以利用
定时器/计数器作为单片机外部中断了。注意这种方法的中断服务的入口地址应
在000BH或001BH。
四、用专用中断扩展芯片8259A
8259A是可编程中断控制接口,单片机控制八级中断。在系统中还可采用级联方式,一个主片可级联8个从片,构成64级中断处理系统。
这样在程序小于8K的情况,就可以用一片单片机实现了,而不需要用两片单片机控制,还要进行单片机点对点通讯。
以上就是关于51单片机只有两个外部中断,有哪些方法可以进行外部中断的扩充全部的内容,包括:51单片机只有两个外部中断,有哪些方法可以进行外部中断的扩充、plc外部中断频率、mcs-51 单片机的外部中断源扩展方法有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)