微型机与应用
MICROCOMPUTER & ITS APPLICATIONS
1999年 第18卷 第4期 Vol.18 No.4 1999



80C196KC单片机PTS功能在数据采集中的应用
吕治安
　　摘　要：结合开发一种电力仪表中的应用，介绍了在数据采集中 利用80C196KC单片机的PTS功能的具体方法。
　　关键词：80C196KC单片机　数据采集　PTS功能
　　在计算机应用系统中，通常是通过定时中断的方式来实现 定时采样的，但采用普通的中断工作 方式时，CPU要执行保护断点转入中断服务、保护现场、恢复现场、返回等一系列操作，CPU 开销较大，在CPU任务较重和采样数据较多的情况下显得更为突出。为此，INTEL公司在80C1 96KC单片机中提供了一种外部事件服务器(Peripheral Transaction Server简称PTS)功能。 PTS是通过其内部提供的微代码，而不是用中断服务程序来实现对外设的管理的，故具有速 度快、CPU开销小等特点。下面结合我们在开发一种电力仪表中的应用对其作一介绍。
1　PTS功能
　　PTS是一种利用其内部的微代码执行的操作，CPU进入PTS周期后，其操作像DMA一样插入到正 常的指令流中，不需要额外的软件开销。80C196KC的15个中断源都可以映射到PTS。
　　与中断类似，PTS也有1个PTS向量表，共15个字位于2040H～205CH。它的排列顺序和 80C196中的15种外设中断一一对应，且优先级也相同。若某一外设的PTS功能被打开，在该外设产 生中断后，CPU便不会进入中断服务程序（不论该中断是否打开）而直接进入PTS工作周期。 在PTS结束时，也可产生1个END－OF－PTS中断，如果需要，可进入该外设的中断服务程序。 与中断向量不同的是，每个PTS向量不是指向1段程序，而是指向1个PTS控制块（PTSCB）， 每个控制块包含8B，它们必须驻留于内部RAM中，其首地址必须能被8除尽。80C196KC提供了 5种PTS模式，即1次传送模式、块传送模式、A/D模式、HSI模式和HSO模式。其PTSCB的格式 如图1。在控制块中PTSCON用于控制PTS的工作方式，不同的模式其PTSCON稍有不同。单元根 据其模式的不同，分别为其源、目的地址、中间结果暂存单元指针等。在进入PTS之前，PTS CB必须初始化。


　　为控制PTS的工作，80C196KC内部设有2个1 6位的寄存器PTSSEL/PTSSRV，其作用分别和中断屏蔽寄存器/中断挂号寄存器相仿，二者格 式也完全相同，如图2。要打开某一外设的PTS功能 ，只需将PTSSEL中相应位置为“1”即可。综上所述，当把某外设的PTS功能打开，并设置好 其PTSCB后，该外设产生中断申请后，便不会进入其相应的中断服务程序，而进入PTS周期。 CPU内微代码按PTSCB中设置的工作模式及要求的次数执行操作，PTS操作完成后，便将PTSSR V中相应位置“1”，PTSSEL中相应位清“0”，引发EDN－OF－PTS中断。该中断即映射到这 一外设的中断。进入END－OF－PTS中断后，PTSSRV中相应位被自动清“0”，但PTSSEL中的 位却不能被自动置“1”，故也禁止了该外设再次进入PTS服务。要想再次进入PTS，必须在 适当的地方，比如在END－OF－PTS中，通过软件将PTSSEL中该位再次置为“1”。

　
　　　　　　　　　　　
2　PTS的A/D模式及其工作原理
　　在我们研制的仪表中，要求每周波16次，每次进行6个数据的A/D采样。这里采用了每周期执 行16次PTS服务，每进入1次PTS周期，CPU自动进行6次A/D采样。
　　8096系列片的A/D转换有一命令寄存器，用来选择A/D通道和A/D启动方式。A/D启动方式有立 即启动和HSO时间到启动2种。
　　所谓立即启动是在将命令字写入命令寄存器后A/D就立即开始工作，而HSO时间到是在写入命 令字后在HSO预定时间到时才开始启动A/D转换。这里每个采样点的第1次采样命令是在后台 程序写入命令寄存器的，并用HSO时间到启动的方式启动A/D转换。第1次A/D转换结束后便引 发A/D结束中断，进入PTS周期，转换结果的读取和此后的5次转换由PTS以立即启动A/D的方 式完成。PTS服务周期完成后引发END－OF－PTS中断，在该中断里进行后续处理，如收集采 样数据、再次设置PTSSEL和PTSCB等。这里PTSSEL的设置只须在适当的地方将PTSSEL.1置为 “1”即可。PTSCB中PTSCON的格式如见图3。


　　PTSCB中的UPDT用来控制S/D的修改与否，若UPDT＝1，则每次A/D转换结束后，S/D会经过修 正后指向表格中下一位置；若UPDT＝0，则S/D不会修改而仍然指向原来位置。而M2、M1、M0 等3位用来控制PTS模式。因此，这里可设PTSCON＝0AH。
　　PTSCB中的S/D是1个指针，它指向1个表格，该表可位于内部RAM，也可位于外部RAM，用来存 放启动A/D的命令和A/D转换后的结果。PTSCB中的REG也是1个指针，它指向1个固定的存储单 元，该单元用来暂存A/D的命令字，在PTS执行过程中，CPU先把表格中的A/D命令暂存于此， 然后再将命令从这个单元写入A/D的命令寄存器中。
　　硬件纵 横(单片机开发专题) 在本仪表里，我们在每1个采样点里分别对A/D的0～5通道进行共6次采样，由于第1 次A/D采 样的启动必须在其它程序里进行，故表格中的第1个命令是A/D通道1的启动命令。这里设定P TSCB位于内部RAM中的20H处，表格位于外部RAM中的4000H处，共占24B，如图4。


3　软件设计
　　如前所述，80C196KC单片机在每周波进行16次采样，每半个周波采样8次，即进入8次PTS方式，各采样点的时刻分布如图5。因此与此有关的 软件设计有以下2点：


　　1．在交流电的过零点处产生一中断，这里是利用HSI0跳变中断，在这个中断里设定HSO的8 个定时事件，同时初始化第1次PTS服务所需的PTSCB，并设PTSSEL＝0002H。当事件发生时启 动A/D转换，第1次A/D转换结束后引发A/D结束中断，进入PTS服务。
　　2．在END－OF－PTS中断里读取6次A/D转换的结果，并重置PTSCB和PTSSEL，为下1次进入PTS 做好准备。待下1次HSO事件发生后启动A/D转换，从而再次进入PTS服务。
　　综上所述，80C196KC单片机的PTS功能为实现高速多次采样提供了一种有力的手段，运用PTS 服务可有效地减少CPU的额外开销、提高了CPU的利用率、为CPU进行更为复杂的运算提供了 有力的支持。 
作者单位；湖北省襄樊市东街50号(441021)
参考文献
　1　孙涵芳.INTEL16位单片机.北京：北京航空航天大学出版社，1995
收稿日期：1998-12-13
