PIC单片机高精度秒脉冲发生器和24小时循环定时器


  这里用P16F84A制作秒计时脉冲发生器,再将秒计时脉冲的源程序作子程序,建立按2进制数的方式以’小时为单位的24小时循环定时的源程序。
  
  1.PIC16F84A高精度秒脉冲发生器
  
  这里秒脉冲发生器的源程序自定义名为PIC05.ASM,其源程序清单如下:

 

  说明:(1)上述源程序只需在MPLAB集成开发软件下汇编生成目标码PIC05.hex,再经PIC编程器或本刊推荐的实验编程器将其目标码固化到PIC16F84A芯片中,再用相关的实验板即可观察该芯片B口的第7位按秒计时闪动。
  
  (2)为了提高秒计时脉冲的精度,该秒计时脉冲是用软件对其秒值进行微调。微调时,笔者所用的校准时标,是电视台传送的时标信号,所以校准后的秒计时脉冲,其精度很高。

  (3)上述硬件中振荡源的XT,笔者选用是2M,若晶振XT用其它,则源程序的延时程序也相应改变。
  
  (4)该秒计时脉冲波形如下图所示,波形中标识的粗调仅为细调作准备。若晶振XT=2M,1S(秒)=10的6次方μs,则秒计时的微调是以2μs为单位的细调。

  2.PIC16F84A 24小时循环定时器
  
  利用上述的秒计时脉冲,很易用汇编程序设计出以小时为单位,按24小时循环的定时器。但小时的计数也是数的。利用小时的计数可以通过当地的调频台或电视台的正点报时(调频台发出“嘟”的汔笛声),修正秒计时脉冲,以保证小时计时的精度。读者将看到,在建立上述要求的源程序时,是把秒计时脉冲作为子程序,再按秒→分→小时→24小时的进制反复调用子程序而完成的。所以设计出的源程序仅60余条指令(今后介绍的十进制的数显、分、小时的程序会很多)。该24小时循环定时器的程序流程如下图所示,其源程序自定义名为PIC06.ASM,源程序清单如下: