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

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

假设P2.5控制蜂鸣器,低电平响。

启动入口

ORG 0000H 复位启动

LJMP START

ORG 000BH T0中断

LJMP T0INT

ORG 0100H

LJMP START

主控程序

START: MOV SP,#80H 初始堆栈值

MOV TMOD,#01H 定时器0工作于方式1

MOV TH0,#03CH 定时器0定时时间=50mS

MOV TL0,#0B0H

CLR P2.5 蜂鸣器响

MOV YSJS,#200 200*50mS=10000mS

SETB TR0 定时器0启动,开始定时

JMP $ 死循环

定时器0中断服务程序

T0INT: DJNZ YSJS,QT0 不到1秒跳转

SETB P2.5 关闭蜂鸣器

CLR TR0

QT0: MOV TH0,#03CH 定时器0定时时间=50mS

MOV TL0,#0B0H

RETI

YSJS EQU 30H

END

ORG 0000H

STAR:

JB P1.0,$ p1.0作为开关 打开程序才能继续下去

CALL DI 发音200ms

CALL NO_DI 静音200ms

CALL DI

CALL NO_DI

CALL DI

CALL NO_DI

SJMP STAR继续从头执行程序

-------------------

DI:

MOV R1,#100 发音200ms

D2:

CLR P1.7

LCALL DEL 约1ms

SETB P1.7

LCALL DEL设置蜂鸣声音的频率高低

DJNZ R1, D2

RET

-------------------

NO_DI:

MOV R1,#100 静音200ms

ND2:

CLR P1.7

LCALL DEL 约1ms

SETB P1.7

LCALL DEL设置蜂鸣声音的频率高低

DJNZ R1, ND2

RET

-------------------

DEL: 约1ms

MOV R7,#5

DLY1:

MOV R6,#100

DJNZ R6,$

DJNZ R7,DLY1

RET

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


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存