| 网站首页 | 技术文章 | 专业论文 | PLC可编程 | 单片机 | 变频器 | 传感器 | 嵌入式系统 | 电源技术 | 运动与伺服 | 
 | 校园招聘 | 留言板 | 
您现在的位置: 自动化学习网 >> 技术文章 >> 单片机 >> 文章正文 用户登录 新用户注册
定时器实例 (1秒报警,200hz输出 200-250变化输出)         ★★★ 【字体:
定时器实例 (1秒报警,200hz输出 200-250变化输出)
作者:佚名    文章来源:本站原创    点击数:    更新时间:2007-3-23    

五、定时器功能实例

5.1 定时1秒报警

程序介绍:定时器1每隔1秒钟将p1.o的输出状态改变1

次,以达到定时报警的目的。实际应用例如:定时报警器。

程序实例(DIN1.ASM):

ORG 0000H

AJMP MAIN

ORG 000BH

AJMP DIN0 ;定时器0入口

MAIN:

TFLA G EQU 34H ;时间秒标志,判是否到50个

0.2秒,即50*0.2=1秒

MOV TMOD,#00000001B;定时器0工作于方式1

MOV TL0,#0AFH

MOV TH0,#3CH ;设定时时间为0.05秒,定时

20次则一秒

SETB EA ;开总中断

SETB ET0 ;开定时器0中断允许

SETB TR0 ;开定时0运行

SETB P1.0

LOOP: AJMP LOOP

DIN0:

;是否到一秒////////////////////////////////////////

INCC: INC TFLAG

MOV A,TFLAG

CJNE A,#20,RE

MOV TFLAG,#00H

CPL P1.0

;//////////////////////////////////////////////////

RE:

MOV TL0,#0AFH

MOV TH0,#3CH ;设定时时间为0.05秒,定时

20次则一秒

RETI

END

5.2 频率输出公式

介绍:f=1/t

s51 使用12M晶振,一个周期是1微秒使用定时器1

工作于方式0,最大值为65535,

以产生200HZ的频率为例:

200=1/t:推出t=0.005 秒,即5000 微秒,即一个高电

平或低电平的时间为2500 微秒。这样,定时值应设为

65535-2500=63035,将它转换为十六进制则为:F63B。

具体程序请看f200.asm

频率递增:

200HZ:63035:F63B

250HZ:63535:F82F

300HZ:63868:F97C

5.3 200HZ频率输出

程序介绍:利用定时器定时,在P1.0 口产生200HZ

的频率输出。实际应用例如:传感器前级推动。

程序实例(F200.ASM):

ORG 0000H

AJMP MAIN

ORG 001BH

AJMP DIN0

MAIN:

CLR P1.0 ;产生一个低电平,实际上

是从p1.0口产生频率

MOV TMOD,#00010000B ;定时器1工作于方式0

MOV TH1,#0F6H

MOV TL1,#3BH ;频率产生的时间,详细请

见频率公式

SETB EA ;开总中断

SETB TR1 ;开定时器1运行

SETB ET1 ;开定时器1允许

LOOP: AJMP LOOP ;无限循环

DIN0: CPL P1.0 ;产生一个高电平,

下次来就是低电平(因为取反),一个高电平和一个低电平

形成一个周期

MOV TH1,#0F6H

MOV TL1,#3BH ;重置频率产生时间

RETI ;返回

END

5.4 200——250HZ变化频率输出

程序介绍:利用定时器定时时间的变化,由P1.0 口

产生200——250HZ变化的频率。实际应用例如:传感器

前级推动、频率发生器。

程序实例(F250.ASM):

ORG 0000H

AJMP MAIN

ORG 001BH

AJMP DIN1

MAIN:

;定义频率200和300//////////////////////////////////

F2H EQU 30H

F2L EQU 31H

F3H EQU 32H

F3L EQU 33H

;//////////////////////////////////////////////////

;定义频率保持初值//////////////////////////////////

MOV R1,#50

MOV R2,#02H

;//////////////////////////////////////////////////

;频率赋初值////////////////////////////////////////

MOV F2H,#0F6H

MOV F2L,#3BH

MOV F3H,#0F8H

MOV F3L,#2FH

;//////////////////////////////////////////////////

CLR P1.0 ;在P1.0口产生一个低

电平,一个脉冲是由一个高电平和一个低电平组成的

MOV TMOD,#00010000B ;定时器工作于方式1

MOV TH1,F2H

MOV TL1,F2L ;200HZ输出

SETB EA ;开总中断

SETB TR1 ;开定时器1运行

SETB ET1 ;开定时器1允许

LOOP: AJMP LOOP

DIN1:

CPL P1.0 ;取反P1.0口,实际

是为了不断的将p1.0的电平关系转换,即产生了频率

;频率保持时间//////////////////////////////////////

DJNZ R1,RE

MOV R1,#50

DJNZ R2,RE

MOV R2,#02H

;//////////////////////////////////////////////////

MOV A,F2H

CJNE A,F3H,XIA ;频率高位到300HZ

的高位了吗?

AJMP JIA ;频率高位没到

300HZ的高位值,直接将低位值加1

XIA: INC F2L

MOV A,F2L

CJNE A,#00H,RE

INC F2H

MOV A,F2H

CJNE A,F3H,RE

;/////////////////////////////////////////////

;频率高位加到300HZ的高位值了,低位加一,到300HZ的低

位值了吗,没到出去,到了关定时器

JIA:

INC F2L ;到了将200HZ频率的低位加1

MOV A,F2L

CJNE A,#F3L,RE

CLR TR1

;/////////////////////////////////////////////

RE:

MOV TH1,F2H

MOV TL1,F2L

RETI

END

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

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      最新热点   最新推荐   相关文章
    基于普通单片机的LIN协议实现…
    提高单片机系统可靠性的设计…
    利用单芯片MCU提高照明系统能…
    基于MCU的风光互补独立电源系…
    单片机控制GSM手机的技术及应…
    用51内核网络单片机构成的远…
    在Bank Switch基础上 实现大…
    用单片机实现DSP在线调试的一…
    利用Flash实现单片机系统的在…
    基于AT89C52单片机的自动存取…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)