| 网站首页 | 电子基础 | 电子应用 | 电子电路图 | 雁过留声 | 软硬件设计 | ET电子商城 | 信息发布 | PDF查询 | 互助社区 | 
您现在的位置: 迷失者电子网 >> 软硬件设计 >> 单片机 >> 文章正文 用户登录 新用户注册
PIC单片机16F84硬件之延时         ★★★ 【字体:

PIC单片机16F84硬件之延时

PIC单片机16F84硬件之延时
作者:佚名    文章来源:网络    点击数:    更新时间:2008-3-10    


 
 

PIC单片机16F84硬件之延时:

7   延时和定时
  在设计单片机应用系统时,经常会遇到需要使某一过程(如加温、加压等)持续一段时间的情况,如连续加压1分钟,通电2分钟等。单片机如何正确确定这段时间呢?这里可通过两种方式,即延时和定时来实现。试看下例。
  在应用系统中要求PIC16F84单片机的RAO端控制一个发光二极管按一定频率闪亮,可通过右图的电路来实现。同时还必须为16F84单片机编制一个程序。由电路图可知,要使发光二极管LED按一定的频率闪亮,只要使RAO端输出一个变化的高→低→高……电平即可。由此设计出如下的源程序(清单1):
  list P=16F84,F=INHX8M
  ;……
     ORG   0
     MOVLW 0 ;主程序开始
     TRIS  5   ;置RA口为输出
     BCF   5,0   ;RA口0位清零
  LOOP:CALL  DELAY;闪动延时
     COMF 5   ;RA口求反,亮—灭交替
     GOTO LOOP   ;循环
  ;……
  DELAY      ;以下为延时子程序
      MOVLW  D′50
      MOVWF   8
  LOOP1:MOVWF   9
  LOOP2:DECFSZ   9,F
      GOTO   LOOP2
     DECFSZ   8,F
     GOTO    LOOP1
  RETLW       0
  由清单1可知,当主程序开始时,首先将工作寄存器W清零,然后将W寄存器的内容送TRISA寄存器,使其清零,以设置RA口为输出。接着又将RA口的第5位清零,使LED开始时处于熄灭状态。随之持续一段时间,即执行延时子程序,再将RA口取反,变为高电平输出,LED发光,再延时,又使RA口取反,LED熄灭……。这样,LED就一暗一亮,持续交替进行。
  在这里,使LED亮、暗持续一段时间是通过单片机执行延时子程序DELAY来实现的。此延时程序的核心就是让单片机的CPU反复执行使寄存器内容减1的指令DECFSZ。即将十进制数50分别装入通用寄存器F8、F9,以进行50×50=2500次的减1操作。如果执行一次DECFSZ指令需1个指令周期(跳转时需2个周期),若设振荡频率为100kHz,即指令周期为40μs,则延时时间为2500×40=100000μs=100ms,即01秒。实际上还略为大些。此延时时间已超过人眼的视觉保留时间。因而能看清LED的明、暗交替变化。
  如果我们需要更长的延时时间,可仿照上例,装入更大的数或引入多重循环。因此,在原则上,延时时间可根据需要任意延长。
  不过,采用延时程序来持续某一过程的方式有缺陷。延时就是使CPU在某几条指令上“转圈”,延时越长,“转圈”数越多,这时,CPU不能再去执行其它操作,如监视温度、湿度等。这在某些实时控制系统中,不允许这样做。为此,在单片机16F84单片机中,专门设置了一个“闹钟”——定时器TMR0。需要某过程延续多长时间,可将其“拨入”TMR0,到时它会发生“中断”,告诉CPU定时时间到。要CPU暂停其它工作,转过来执行“中断子程序”,完成输出开、关信号之类的任务后,再回去执行其中断的工作。这样,就使CPU的工作效率提高。因而,延时的使用有局限性,采用定时器TMR0则可用于各种场合中


文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    PIC16F87X单片机的火灾报警系…
    MPEG-2(嵌入式)远程监控系统…
    PIC单片机数据存储器的特点及…
    PIC单片机数据存储器的特点及…
    PIC单片机数据存储器的特点及…
    PIC单片机芯片引脚符号的功能…
    PIC单片机的结构组成
    PIC单片机的分类
    PIC单片机与51单片机的区别
    PIC单片机的基础知识
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)