摘要:80C196MC/MD单片机是196系列单片机中功能最强大的单片机之一,它所独有的WFG(波形发生器)功能使在电机变频控制中心倍受青睐。文中介绍了80C196MC/MD中事件处理阵列(EPA)和外设事务服务器(PTS)的结构、功能和使用方法,以及如何利用EPA和PTS实现串行通讯的技术和设计思路。
关键词:EPA PTS 80C196MC 单片机 串行通讯
1 概述
随着单片机技术的发展和控制技术的提高,16位单片机已经被广泛地应于工和民用领域。其中,Intel公司的80C196系列16位单片机目前应用非常广泛的一种。
80C196MC/MD单片机集合了Intel16位单片机的所有特性,是196系列单片机中功能最强大的单片机之一。它有一个16位逻辑运算单元,13路10位A/D转换通道,一个EPA、PTS、两个PWM脉宽调制单元和三个WFG(波形发生器)。由于它完善的硬件结构、出色的运算能力,使得196MC/MD单片机可以应用于各个领域。它所独有的WFG更使196MC/MD在电机变频控制中倍受青睐。196MC/MD单片机的另一特色就是它独特的通讯方式。与其它单片机不同,196MC/MD的通讯不是通过独立的串行通讯接口实现的,而是利用EPA和PTS来实现的。这种方式不但能够实现一般串行口的完成的各种通讯功能。而且还能实现一些特殊的功能(如多串口的通讯)。要实现196MC/MD灵活多样的串行通讯方式,关键是要掌握EPA和PTS的使用技巧。
2 EPA和PTS的工作原理
Intel公司在KC系列以后的16位单片机中增加了EPA(Event Process Array)事件处理阵列和PTS(Peripheral Transaction Server)外设事务服务器。其中外设事务服务器是微指令中断控制器。196MC/MD的串行通讯以是利用它们来实现的。
196MC/MD单片机是EPA中有两种模块,一种是捕获/比较模块,它用于支持一个对应引脚的高速输入/输出功能。所谓“捕获”是指它可以记载某个EPA引脚上电平发生跳变事件的时刻。EPA可以捕获的事件包括下降沿跳变、上升沿跳变、上升或下降沿跳变。在串行通讯中正是利用此功能来“捕获”串行输入时的起始位的。所谓“比较”是将定时器值与一个预先设定值进行比较,如相等,则执行指定的输出功能。输出功能包括输出低电平、输出高电平以及引脚电平翻转等。由于“比较”功能可产生一个准确的定时值,因此在串行输入时可利用这一特性来确定第一个有效数据位的采样时刻,EPA中的另一种模块是“比较”模块。它与“捕获/比较”模块中的比较功能是一致的。串行通讯中利用该模块的比较输出功能来发送数据,并与PTS相互协调工作以使其达到规定的波特率。
196MC/MD的EPA中管理了4个捕获/比较模块和4个比较模块,每个模块在硬件上都有对应的引脚。利用这些EPA管理的引脚可以构成串行通讯的硬件接口。而且,对于每一个引脚都可以进行串行通讯接口。因此,196MC/MD的串行安排比较灵活,同时,丰富的硬件资源也为实现多串口通讯提供了硬件保证。这是其它单片机无法与之相比的。
实现196MC/MD串行通讯另一难点是PTS的使用。PTS是一个微指令的硬件中断处理器,它可提供一种特殊的中断服务。与普通中断不同的是,它不改变堆栈的中断服务。与普通中断不同的是,它不改变堆栈以及PSW,也不打断正常指令流。它将待处理的微指令插入在PTS控制块中可与常指令同步执行。这样,就不需要额外的CPU开销,当产生PTS中断时,它可以按照PTS控制块中规定的操作继续进行,直到PTS控制块中规定的所有工作进行完后才触发一次对应的变通中断来申请一次CPU管理。因此PTS中断可以大大减轻CPU的负担以使代码执行效率更高;同时它还要与普通中断配合使用,是一种特殊的中断方式。196MC/MD的PTS有4种操作方式,分别为单字节传送方式、多字节传送方式、A/D转换方式和串行通讯方式,它们分别对应于5种PTS控制模块。其中串行通讯方式是196MC/MD所独有的,它由两个PTS控制块组成,图1为其结构图。
有关接收和发送的数据存放在由DATA(L)和DATA(H)构成的数据单元中。其数据单元的宽度可达16位。波特率的设定参数放在BAUD(L)和BAUD(H)中。196MC/MD串行通讯的控制参数主要放在PTSCON和PTSCON1寄存器中。对这两个寄存器进行操作可以设定各种串行通讯方式。下面主要介绍这两个寄存器。
PTSCON的操作格式如下:
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
M2 | M1 | M0 | SA | 0 | 0 | SA | MAJ |
其中:M2M1M0=011为发送方式;M2M1M0=001为接收方式;SA=1为同步SIO;SA=0为异步SIO。
MAJ=1为允许多数表决采样;MAJ=0为禁止多数表决采样。
PTSCON1具有异步和同步操作两种模式。异步方式的PTSCON1操作格式为:
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | EPAR | PEN | 0 | 0 | 0 | FE | TPAR |
同步方式的PTSCON1格式为:
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | TRC | 0 |
其中:PRAR为接收奇偶校验控制/状态位;
PEN为奇偶校验选通们,PEN=1时选通;PEN=0时禁止;
FE为出错标志,FE=1说明传输出错;
TPAR为发送奇偶校验控制位;
TRC是发送/接收控制位。
3 实现196MC/MD的串行通讯
在利用196MC/MD实现串行通讯时,首先选择EPA中的一个捕获比较模块作为串行通讯,再选择一个比较模块作为串行通讯发送模块。这样就能构成串行通讯的硬件端口。然后,对所选的EPA模块开辟相应的PTS通道,再根据通讯要求编写串行通讯的发送和接收PTS模块。最后使EPA和PTS两者协同工作便能实现对串行通讯的控制。
接收过程开始后,先由EPA捕获比较模块捕捉起始位,捕获到时产生一次EPA的普通中断。在这个中断处理程序中,将捕获方式转变为比较方式,并根据要求的波特率设定比较时间为个位周期,同时启动PTS功能。在此后的个位周期,即第一个数据位周期的断时刻到来时,第一个PTS周期开始执行,并根据设定对该位数据进行采样(为了提高抗干扰能力,可以采用多数表决方式采样),直到各位数据由PTS中断根据设公平的波特率等参数直到各位数据由PTS中断根据设定的波特率等参数采样完成,系统都不需CPU再干预为止。等到一个数据单元接收完毕后,PTS中断就结束了。这时,程序再次进入一个EPA的普通中断,在这个中断中,可将PTS中接收的数据保存,然后将该EPA模块设为捕获方式,以捕获下一个数据单元的起始位。以此方式反复运行就可以逐一地接收数据单元了。对于串行发送方式,可以在EPA的捕获/比较模块或比较模块中任选一个作为串行发送引脚。然后再根据要求编写PTS控制块,最后利用EPA的普通中断和PTS配合来产生逐位发送的串行发送时序,图3所示是其发送时序。其具体工作过程是:首先将待发送的数据单元与通讯参数一同写入相应的发送PTS控制块中。然后在发送引脚上产生一个下降沿来作为起始位,接着就可以启动PTS中断了。在第一个PTS中断中,先在PTS的控制下在发送引脚上发出一个位信号。然后再在以后的PTS中断中按规定的波特率逐位发送关断,此过程无须CPU干预,直到一个数据单元发送完成后进入一次EPA的普通中断为止。在这个中断处理中,应首先更新有关寄存器的设置,然后放入下一个特发送的数据单元,以构造出新的PTS控制块。之后再产生一个新的发送起始位,以重新启动新一轮的PTS来发送下一个数据单元。这样反复的运行就实现了串行数据的发送。
4 结束语
实验证明,196MC/MD单片机的这种串行通讯方式在实际应用中效果非常好。虽然相对于独立串口来说,该方法略显复杂。但是这种通讯方法的灵活性和实用性是其它独立串口所无法比拟的。而且这种通讯方式充分显示了Intel
16单片机技术中EPA和PTS的技术特点,这也是196MC/MD单片机应用的重要技术之一。
上一篇:NEC单片机的FIP应用
下一篇:用单片机实现通用存贮器IC卡的读写