📄 iobeep_a1.asm
字号:
; =================================================================
; 深圳思瑞科技 SRI Technology Studio.
; http://www.sri.cn, http://www.sricn.com
; mail: support@sri.cn, xjb@sri.cn
;
; 转载请注明该出处
;
; -----------------------------------------------------------------
; 源文件名: IOBeep_A1.ASM
; 程序名称: 使用IO口输出控制嗡鸣器
; 实现方法: 使嗡鸣器发出2000Hz的频率的声音
; (制造噪音的程序,仅供学习)
; 学习目的: 1、学习如何实现I/O口输出控制,并使用延时输出方波
; 2、程序延时
; =================================================================
; -----------------------------------------------------------------
; 与实际功能无直接相关的常数设置
; -----------------------------------------------------------------
MCU_FREQUENCY EQU 33000 ; MCU主频,用于计算延时,为
; 了常量计算准确,用KHz表示
MCU_TIMES EQU 12 ; 每指令周期所需的时钟周期
; 标准51核MCU为12
; -----------------------------------------------------------------
; 代码段
org 0000h
jmp Main
org 0030h
Main:
call Delay50us
mov R0, #1
mov R1, #0
MainLoop:
clr T0
mov A, R0
call Delay100usIn12M
setb T0
mov A, R0
call Delay100usIn12M
inc R1
cjne R1, #100, MainLoop
mov R1, #0
inc R0
cjne R0, #20, MainLoop
mov R0, #0
jmp MainLoop
; -----------------------------------------------------------------
; 延时50微秒单位
; A = 50微秒单位倍数
Delay50us:
mov R7, A
Delay50us_Loop:
mov R6, #(MCU_FREQUENCY/MCU_TIMES-3)/2
djnz R6, $
djnz R7, Delay50us_Loop
ret
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -