📄 蜂鸣器之报警声.asm
字号:
;蜂鸣器之报警声
;P1.0接蜂鸣器,变频输出报警
CODE_SEG SEGMENT CODE
DATA_SEG SEGMENT DATA
STACK_SEG SEGMENT IDATA
SPK BIT P1.0 ;定义P1.0为蜂鸣器
RSEG DATA_SEG
FRQ:DS 1 ;定义1个程序存储器空间为FRQ
TMP:DS 1 ;定义1个程序存储器空间为TMP
RSEG STACK_SEG
STACK:DS 20 ;定义20个程序存储器空间,起始地址为STACK
CSEG AT 00000H ;程序起始地址
LJMP MAIN ;跳转至MAIN
CSEG AT 0000BH ;定时/计数器T0中断服务子程序入口地址
LJMP TIMER0 ;跳转至定时/计数器T0中断服务子程序
RSEG CODE_SEG
MAIN:MOV SP,#(STACK-1) ;堆栈栈顶地址
MOV TMOD,#01H ;定时/计数器T0采用定时器方式1,16位计数器
CLR A ;A清零
MOV FRQ,A ;FRQ清零
MOV TH0,A ;计数初值为0FFH,即65.281ms
MOV TL0,#0FFH
SETB TR0 ;启动T0
MOV IE,#082H ;CPU开总中断,T0开溢出中断
MAIN_LP:INC FRQ ;FRQ加1
MOV R7,#04 ;R7=4
LCALL DELAYMS ;调用延时子程序
SJMP MAIN_LP
TIMER0:MOV TH0,#0FEH ;重新初始化T0
MOV TL0,FRQ
CPL SPK
RETI
;延时子程序
DELAYMS:MOV A,R7
JZ END_DLYMS
DLY_LP1:MOV R6,#185
DLY_LP2:NOP
NOP
NOP
DJNZ R6,DLY_LP2
DJNZ R7,DLY_LP1
END_DLYMS:RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -