FPPA delay 指令使用注意事项 -PLC技术网(www.plcjs.com)-可编程控制器技术门户


FPPA delay 指令使用注意事项 

 (点击题目可以在互联网中搜索该题目的相关内容)
日期:2007-8-7 21:15:01     来源:   作者: 点击:
点击【 大  中  小 】,可以选择字体的大小,以便你阅读.

在FPPA中,首创了一个非常好用的延时指令

这就是delay 指令

其中包括:

   1.     delay   i(一个立即数)         

   2.    delay  m(数据单元的内容数)

   3.    delay  a (累加器中的内容数)

  一般情况(立即数,内容数范围为1~255)延时时间为立即数加一个周期,

        当立即数,内容数为0时,延时周期为257了,很多朋友一开始使用时都没有注意到这一点,结果在除BUG的时间上就会多一些。因为IC的资料上好像也没有特别说明,所以很容易让人误解为delay 0 的功能是延时1个时钟周期了。

       但是,如果我们很细心的查看资料时,会发现在一个指令描述的教材中其实是

有专门的注释的。

      注释是这样的

          在此特别感谢一位姓陈的先生提供了相关的信息,谢谢! 

          感觉还是要举个实际的例子来说明FPPA写延时程序的灵活性:以下例子是一个曼切斯特码的"波特率"常数,1.68ms,我想曼码的解码没有比利用波特率的观念更方便的了.还是那句话,因为有多核心,所以敢利用延时来处理,因为延时解码也不会被任何异常打断. 1.68ms可能用51或PIC,AVR写起来都感觉麻烦,因为一次使用的NOP指令过多,的确不方便见人,呵呵.看看FPPA怎么写吧.

首先我们可以肯定的说,任何数,都是可以拆分成几个数的和的,利用这样的特点,写高精度延时一点也不觉得困难了.  而且FPPA除了查表指令,其他的任何指令都是单周期,不用去考虑,跳转是否又需要2个周期了,呵呵.         
;1.68ms delay, (OSC = 4MHz)&(1/16Fosc,t = 4us)
;1.68ms = (1600 + 80)us = 4*(400 + 20)us = 4*420t
IFbaudDelay:  ;1+1+10*40+17+1
        mov  a, 0x0a                           ;1t
        mov  IFbaudRate0, a              ;1t
IFbaudDelayLoop:
        delay   37                                ;38t
        dzsn    IFbaudRate0                ;1t
        goto    IFbaudDelayLoop         ;1t
        delay   16                                 ;17  
        ret                                            ;1

本新闻共2页,当前在第11 2  

上一篇: PPM编码及最佳PPM解码应用 
下一: 舵机及舵机的精确控制,分辨率2us以下,7路以上