如何通过汇编语言写一个能让蜂鸣器响一秒

如何通过汇编语言写一个能让蜂鸣器响一秒,第1张

FM EQU P*.*;定义输出方败启波的哪个管脚

ORG 0000H

SJMP MAIN

ORG 000BH

SJMP T0_INT

MAIN:

MOV R0,#200;200次是1秒。

MOV TMOD, #01H T0定时方式1

MOV TH0, #(65536-50000) / 256 定时50ms@12MHz

MOV TL0, #(65536-50000) MOD 256

SETB TR0 启动T0

MOV IE, #82H 开中断

MOV A,#00H

NEXT:

CJNE A,R0,NEXT;1秒结束后,关闭中断,程序原地踏步。

CLR TR0

CLR EA;关定时器,关全局中断

HERE:

SJMP HERE

T0_INT:;

MOV TL0, #(65536-50000) MOD 256

MOV TH0, #(65536-50000) / 256 定时50ms@12MHz

CPL FM;50ms的方波,蜂察差如鸣器能响了庆指,虽然声音不好听。

RETI

END

如果是桐扰蜂鸣器的话大轮则,那么加一个电平信号就可以发声了。\x0d\x0aFMQ EQU P1.0\滚棚x0d\x0aORG 0000H\x0d\x0aLJMP MAIN\x0d\x0aORG 0030H\x0d\x0aMAIN:\x0d\x0aCPL FMQ\x0d\x0aLCALL DELAY\x0d\x0aSJMP MAIN\x0d\x0aDELAY:\x0d\x0aMOV R2,#200\x0d\x0aDLY:\x0d\x0aMOV R3,#250\x0d\x0aDJNZ R3,$\x0d\x0aDJNZ R2,DLY\x0d\x0aRET\x0d\x0aEND

延时时间是用指令周期和晶振频笑租率计算来的,信号是用CPL BEEP来的,对BEEP去反,高变陪嫌低,低变高,形成方波。

这个时间是个人的想法,我不知道为什么这么做,如果有时间有限制的话,我会选择用定时器做

这个程序的计时是靠晶振频率计算的,用R3做循环49次可能是30ms,要看晶振频率了,然后R2循环10次就是300ms了,方波一个周期包含一个高电平,一个低电平,所以周期是1230,那芦升手半个周期就是615


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12544989.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存