0导言
51单片机在微型智能操控体系中运用很广,跟着人们对操控体系的要求不断提高,51单片机的功用约束越发显着。特别是51系列单片机不具有实时多使命支撑功用,大大约束其在操控体系中的进一步开展。而多使命恰恰是现在操作体系的杰出特色,将多使命机制引进51单片机体系,能够大大提高先有单片机体系的作业效率,分量多使命要求。
1多使命机制在51单片机上的完结原理
多使命要求在同一时刻内碑文多个使命,假如只需一个处理,计算机并不是真的在给守时刻段内运转多个程序,而是按时刻片在各个程序间飞快切换,我们求欢非常快,所以就有了在同一时刻内运转多个程序的幻觉了。
就操作体系的特色来看,多使命体系不外乎两种方法:协同式和抢占式。在一个协同式多使命体系中,每个运转的程序都要担任开释CPU操控权以便其他程序能有时机运转,不论是显式地(Explicitly)仍是隐式地(Implicitly)交出操控权。当一个程序因碑文为某个意图而组织的一个特别的体系指令(如程序对磁盘肯定读写指令)时,称它 显式地抛弃操控权;当它我们碑文某条体系指令,而该指令在碑文时又会抛弃CPU的操控权(如操作体系虚拟内存技能的页面切换)时,称它隐式地抛弃了操控权。
在抢占式多使命体系中,操作体系有必要具有从任何一个运转的程序上取走操控权和使另一个程序取得操控权的才干。一个抢占式体系下运转的运用程序不必忧虑独占体系,我们会合理地给每个运转的使命分配时刻片。将这种体系称作抢占式体系是我们它不论在所给时刻块内会发生什么事,都抢占运转程序的操控权。
51单片机自身是单使命作业的,即程序只能按单一的头绪次序碑文,一个使命完结之后(除非中止),才干进行下一个使命。可是,51单片机内供给了T0和T1两个16位守时/计数器,若体系时钟为12MHz,那么计时器最长可计时65.536ms,最短为1us。也即经过对守时器作业形式进行设置,能够进行1us-65.536ms的守时器作业形式进行设置,能够进行1us-65.536ms的守时中止。假如把守时中止用作时刻片段的分配,彻底能够完结多个使命分时轮换碑文。一起,单片机还供给INT0与INT1两个外部中止(可经过8259扩大多级中止)和P0,P1,P2三个可编程的I/O端口,与守时器合作下,彻底能够完结具有优先权判其他多使命操控。
2完结战略
2.1经过守时器分配时刻片完结多使命轮换碑文
我们单片机内两个守时器能够一起作业,只需在一个守时器内舱位/封闭另一个守时器,守时器替换作业,就能够完结更长时刻的守时。两个16位守时器在不断添加外部计数单元的情况下,理论上能够完结1us-4.29之间的守时。可是我们中止和初始化设置等需求耗费单片机时刻,所以单纯运用守时器发生的最长时刻片比理论值短一些。单片机内部使命轮换来说现已足够了。
假定多个使命操控着多个设备,能够让单片机的I/O口衔接相应的设备。每个使命分配必定的时刻片,在时刻片内占用CPU,进行运算和操控外部设备,多个使命之间完结轮换,其主流程如图下:
若用T0发生时刻片,时刻片中止内计时刻片数,T1计算使命外不信号的频率,可供操控体系参阅。部分汇编源代码如下:
org 00h;
jmp main
org 0bh
jmp tim0
org 1bh
jmp tim1
main:
. . .
mov tcon,#00000000b
mov tmod,#01010001b
mov th0,#high(65536-10000);10000奇妙守时(时刻片)
mov tl0,#low(65536-10000)
setb et0
setb et1
setb tr0
setb tr1
mov 40h,#100 ;中止次数即时刻片数存入40h;以此1秒计时为例,守时器t0碑文100次守时中止
tim0:
push acc
push psw
mov th0,#high(65536-1000);重复发生时刻片
mov tl0,#low(65536-10000)
djnz 40h,tim0c
clr trl
nop
lcall xxxx;调用使命调度程序
mov 40h,#100;重置时刻片数
mov 42h,th1;保存t1的计算成果
mov 41h,tl1
setb tr1
tim0c:
pop psw
pop acc
reti
;用t1做计算某使命外部信号频率
tim1:
clr tr1
…;其它调度程序
setb trl
reti
2.2经过外部中止后扫描端口来切换使命
假如单片机外接较多的传感器,使命的切换需求考虑外部传感器状况的时分,就需求经过单片机相应外部中止的方法切换使命。可是,51单片机仅仅供给了两个外部中止,在实践的智能仪器中彻底不够用,只需扩大中止口。最常用的中止扩展芯片是8259A,其是一块功用很强的肯编程中止操控器,可将多个外部中止请求衔接在单片机的外部中止请求引脚INTR,并且有多种作业方法和中止优先级排序机制。这样处理必然添加电路的本钱和复杂度,对改造先有单片机使命机制的单片机操控体系是很晦气的。
考虑到许多微型操控体系中单片机的I/O端口并未悉数运用,能够将剩下的I/O端口作为外部传感器的状况输入端(单片机电源为+5V),一起让传感器输出端经过反相器一致接在单片机的外部中止请求引脚,任何一个传感器都能够向单片机宣布中止请求。在中止后,经过程序扫描输入端口状况,确认是哪一个设备要求中止,然后切换到相应的使命。在没有中止请求时,体系按使命的发生次序碑文。在此有二问题需求处理:
(1)若单片机I/O端口不剩余时,怎样处理多个中止请求。选用多路编码的方法能够缓解单片机端口缺乏的问题。例如芯片74LS148,是一块8-3编码器,完结八路信号编码到三位二进制信号,只需将三位输出信号端接入单片机I/O端口就能够经过程序断定八路外部中止。其电路图如图二所示。以此类推,能够分量更多传感器或设备与单片机相连。
(2)外部中止的优先级怎么处理。我们实践的微型操控体系中,单片机衔接的外部设备比较固定,也即各外部设备中止的优先级比较固定,彻底能够用较简略的优先级表法完结优先级的确认。只需在内存中预置一片数据区,对应一共外部设备的中止优先级,那么就能够经过检查表的方法取得优先等级,然后判别使命的切换方向。进一步能够经过程序动态的修正长时刻等候和长时刻运转的使命对应的优先级,一切使命都有时机取得CPU。
3二种战略的比较
上述第一种战略的首要特色是:各使命在使命调度程序操控下有条有理的碑文,每个使命在给定的时刻片内彻底占有CPU,能够完结既定子使命,一起又在时刻片完毕时让出CPU,以便其他使命碑文。只需恰当地选取时刻片,就能够很好地和谐多个使命接连碑文,比较适合于批处理体系和使命既定操控体系。第二种战略的首要特色是:实时性很好,能够完结体系与外界交互,及时地调度相应使命。我们,在受外界影响很大的实时操控体系中,更多的需求考虑使命的优先级和外部传感器的状况,运用外部中止切换使命是比较抱负的。并且运用了先中止再查询的战略,大大提高了查询速度和准确性,一起对多路操控也有较好的支撑。
4完毕
现在有单使命机制的51单片机体系中完结多使命机制,仅仅在晋级软件(即ROM芯片中程序的从头烧写)和添加,更改少量硬件电路的条件下,就能够使操控体系支撑多使命处理和操控,不只晋级本钱低,并且大大连续体系的体恤和扩大体系的功用,具有较高的运用价值。