找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6621|回复: 0
打印 上一主题 下一主题
收起左侧

非常好的一个控制蜂鸣器的程序-定时器中断方式

[复制链接]
跳转到指定楼层
楼主
ID:104835 发表于 2016-2-3 23:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;目的:掌握蜂鸣器的控制程序
;程序名字:蜂鸣器
;这是一个非常好的一个控制蜂鸣器的程序,用到了定时器中断方式来定时,且弄能够用程序状态字中的CY标志位来进行运算,
;并且用到了CJNE中的比的不够CY为1,比大的话,为0来进行运算,使程序更加丰富

INTR_CNT        EQU  30H ;作为定时器中断的计数值使用

MS10               EQU  9217 ;  对于11.0592的晶振来说,相当于10ms的计数
       BUZZER           EQU  P1.0
;
                       ORG  0000H
                       JMP  START
                       ORG  0003H
                       RETI
                       ORG  000BH
                      JMP  T0_ISR ;只设置了定时器timer0方式一中断

                ORG  0013H
                       RETI
                       ORG  001BH
                       RETI
                       ORG  0023H
                       RETI

;
                     ORG  0030H
START:        MOV  R0,#00H  ;初始化程序
                     DJNZ R0,$
                    MOV  SP,#60H
                    MOV  P1,#0FFH
                    MOV  INTR_CNT,#00H
                   CLR  BUZZER
                   ACALL SET_TMR0
LOOP:        SJMP LOOP

;
;定时器中断处理函数
T0_ISR:      MOV  TH0,#HIGH(65536-MS10)
                  MOV  TL0,#LOW(65536-MS10)
                  PUSH PSW
                  PUSH ACC  
   
                  MOV  A,INTR_CNT
                  CJNE A,#10,L1
L1:             NC  L2  ;标志位CY为0则转移指令  ,如果上面A的值没10大的话,cy为1,即不执行这条跳转程序
                  SETB BUZZER  ;意思是如果没到10ms的时候,蜂鸣器不响
                  SJMP L3
L2:             CLR  BUZZER  ;到100ms(10*10ms)了,蜂鸣器响,可是响的有时间限制
L3:             MOV  A,INTR_CNT
                  INC    A
                  MOV  INTR_CNT,A
                  CJNE A,#100,T0_END   ;从100ms响到100*10ms,也就是1s,从这看出1s中响了0.9s,不响0.1s
                  MOV  INTR_CNT,#00H

T0_END: POP  ACC
                      POP  PSW
                       RETI
;启动定时器中断
SET_TMR0:
            MOV  TMOD,#01H
            MOV  TH0,#HIGH(65536-MS10)
             MOV  TL0,#LOW(65536-MS10)
            CLR  TF0
            SETB TR0
            SETB ET0
            SETB EA
            RET

     END




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表