📄 复件 sn8p2501a.asm
字号:
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
CALL DELAY_200MS
JMP BJBOOT
;*************************************************************************
;****************异常报警处理*********************************************
BJ: ;切换到普通运行模式
B0BCLR FSTPHX ;开启高速时钟
CALL DELAY_100MS ;延时
B0BCLR FCLKMD ;进入普通模式
CALL PWM_START ;启动升压电路
BJ_LP1: CALL PLAY_Voice_L_H
CALL PLAY_Voice_H_L
JMP BJ_LP1
;**********************************************************
;**********************************************************
;******************报警声形成子程序***********************
;--------------停止声音输出--------------------------------
STOP_Voice: B0BCLR FTC0OUT
B0BCLR FALOAD0
B0BCLR FTC0ENB
B0BCLR P5.4
RET
;-----------------------------------------------------------
;----------------播放“低音”到“高音”音阶------------------
PLAY_Voice_L_H: MOV A,#10
B0MOV Voice,A
BJ_LOOP_1: B0BTS0 P5.4
JMP $-1
B0BCLR FTC0ENB ;输出为低电位时,才修改频率
DECMS Voice
NOP
B0MOV A,Voice ;读取音阶数据(低音---高音)
ADD A,#DATAS$L
B0MOV Z,A
MOVC
B0MOV TC0C,A
B0MOV TC0R,A
B0BSET FTC0OUT
B0BSET FALOAD0
B0BSET FTC0ENB
B0BCLR P1.0 ;开LED
CALL DELAY_200MS ;输出延时
MOV A,#0
CMPRS A,Voice
JMP BJ_LOOP_1
RET
;-----------------------------------------------------------------------
;-----------播放“高音”到“低音”音阶----------------------------------
PLAY_Voice_H_L: CLR Voice
BJ_LOOP_2:
B0BTS0 P5.4
JMP $-1
B0BCLR FTC0ENB ;输出为低电位时,才修改频率
B0MOV A,Voice
ADD A,#DATAS$L ;读取音阶数据(高音---低音)
B0MOV Z,A
MOVC
B0MOV TC0C,A
B0MOV TC0R,A
B0BSET FTC0OUT
B0BSET FALOAD0
B0BSET FTC0ENB
B0BSET P1.0 ;关LED
CALL DELAY_200MS ;输出延时
INCMS Voice
NOP
MOV A,#10
CMPRS A,Voice
JMP BJ_LOOP_2
RET
;---------------------------------------------------------------------------
;*************************************************************************
;***************启动升压电路***************************************
;**************升压脉冲频率20KHz设置********************************
PWM_START: B0BCLR FT0IEN ;禁止T0中断
B0BCLR FT0ENB ;停止记数
B0BCLR FT0IRQ ;清中断标志
MOV A,#01110000b
B0MOV T0M,A ;选择内部时钟 1:2
MOV A,#0F0H
B0MOV T0C,A
B0BSET FT0IEN
B0BSET FT0ENB
B0BSET FGIE ;开全局中断
RET
;***********************************************************************
;************关闭升压电路***********************************************
PWM_STOP: B0BCLR FT0ENB ;停止记数
B0BCLR FGIE
B0BCLR FT0IEN ;禁止T0中断
B0BCLR FT0IRQ ;清中断标志
MOV A,#00H
B0MOV T0M,A ;选择内部时钟 1:256
B0BCLR P2.5
RET
;************************************************************************
;******************100ms延时**********************************************
DELAY_LED: MOV A,#20
B0MOV COUNT1,A
DELAY_LED_1: @RST_WDT ;清WDT
DECMS COUNT1
JMP DELAY_100MS_1
RET
;*************************************************************************
;******************100ms延时**********************************************
DELAY_100MS: MOV A,#200
B0MOV COUNT1,A
DELAY_100MS_1: @RST_WDT ;清WDT
DECMS COUNT1
JMP DELAY_100MS_1
RET
;*************************************************************************
;******************200ms延时**********************************************
DELAY_200MS: MOV A,#95
B0MOV COUNT0,A
DELAY_200MS_1: MOV A,#100
B0MOV COUNT1,A
DELAY_200MS_0: @RST_WDT
DECMS COUNT1
JMP DELAY_200MS_0
DECMS COUNT0
JMP DELAY_200MS_1
RET
;*************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -