您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机针对PIC微控制器的设计窍门 正文
针对PIC微控制器的设计窍门

针对PIC微控制器的设计窍门

点击数:7844 次   录入时间:03-04 11:38:25   整理:http://www.55dianzi.com   PIC单片机

  Add();

如同Add() 函数一样,Multiply()函数先从参数堆栈中弹出两个参数,将它们相乘,然后再将结果推入堆栈中。

除了支持通常的算术运算,Forth语言还有几种操作堆栈中的值的方法。Dup()函数复制推入栈顶(TOS)的最后值;Over() 函数复制栈顶以下的第二个值;Swap() 函数交换两个栈顶值;Drop() 函数将值推入栈顶。Pick(n) 函数复制栈顶以下第N个值。图6显示Over() 函数如何将两个值保持在栈上并对它们求和。

图7:内部IBF与OBF信号。

当将数字堆砌到堆栈上时,只需调用少数几个函数即可进行复杂运算,而无需参数或返回值。

笔者用这些从Forth及RPN借用来的概念开发出一个精度扩展数学库。有了PIC,函数调用常常编译为单个操作码,可以从ftp://ftp.embedded.com/pub/2005/04rowe下载PicMath.c ,该版本适用于CCS PCM编译器,其配置最小为:

1.将StackDataSize栈数据大小定义为以字节来表示的数据大小(例如32位为4个字节等);


2.分配栈存储空间并将MathPtr初始化为栈的最低地址;


3.MathCarry数据位存储计算后的PIC进位标志;


4.MathDouble配置位在非零时可进行双精度乘、除操作。

PicMath还提供用于无栈运算的函数,该函数利用指针指示源及目的参数,并用计算结果覆盖目的参数。

并行从端口

以往,快速数据传输总是以并行来进行。现在有了每秒数百万位的串行数据速率,串行传输可能是一种更好选择,但除各种串行端口外,很多较大的PIC还提供一个并行从端口(PSP)。当在所有串行端口都用于其它事情后还需要另一个通信通道时,PSP可能相当有用。虽有几条用于片选及读/写8位数据的控制线,但没有标准方法来知道数据何时能读或者PIC是否已处理完写入的最后值,等等。

PIC在内部拥有输入缓冲器满(IBF)及输出缓冲器满(OBF)状态位。IBF表示有人对并行端口进行写操作,而OBF则表示PIC输出的最后值仍在等待被读取。图7显示这些过程是如何进行的。

列表1:CCPR1中断程序。

尽管可以只用现有功能、某些固件以及非常严格的协议来进行通信,但设计工程师可能还需要额外的握手线以再造内部IBF和OBF状态位的等效值。这通常至少需要一个额外的输出管脚与一个额外的输入管脚来监视信号。可用快脉冲来指示发送方与接收方准备就绪。可直接将一个握手输出连接至一个边沿触发中断管脚。一些管脚可根据变化来产生一次中断,但如果它是快脉冲,则读该端口管脚将正好显示当前逻辑电平。

电平激励握手存在使两边失去同步的危险。发送方可能会看到接收方“READY”握手线,发送一个字节,并在接收方响应前再检查“READY”信号。而接收方可能会看到发送方的“READY”握手线,读一个字节,并在发送方响应前再检查“READY”信号,并再一次读同一数据。

PLD或其它外部逻辑器件可产生模仿内部IBF及OBF状态位的外部握手信号。发送方的/WR信号可设置XIBF(外部IBF),并可由接收方的输出握手管脚来清除。发送方通过监视XIBF来确定接收方何时准备就绪。发送方的握手管脚可将XOBF(外部OBF)设置为数据已做好读准备的信号。接收方的/RD信号清除XOBF。发送方不需要监视XOBF,因其内部OBF会复制该信号并产生中断。

处理器能提供满足所有需要的内置硬件支持当然最好,但如果不能,且设计不得不尽快完成,则上述技巧中的一项可能就够用。这些技巧可用于各种处理器,包括16Cxx、16Fxx及18Fxx PIC等。只要了解其潜在优势与局限,它们就能成为您工具箱中的有用选项。

作者:Don Rowe


Microchip特约顾问


Email: eng@CANzona.com


Canzona科技公司总裁



上一页  [1] [2] 


本文关键字:控制器  PIC单片机单片机-工控设备 - PIC单片机

《针对PIC微控制器的设计窍门》相关文章>>>