alarm music.asm

来自「一个很好的闹铃音乐程序」· 汇编 代码 · 共 183 行

ASM
183
字号
		MOV	A, @2
		MOV	LOOP1, A
		CLR	FLAG
		BS	FLAG, _STEP1
ALARM_STEP1_10:
		CLR	HL		
ALARM_STEP1_1:
		MOV	A, @0X00	;0X00,P50 AS INPUT
		IOW	IOC5
		MOV	A, @1
		MOV	PORT5, A
		CALL	DELAY3MS	
		JBC	FLAG, _STOP
		JMP	MUSIC_ALARM_EXIT
		MOV	A, @3
		IOW	IOC5			
		
		MOV	A, @156
		JBC	FLAG, _STEP1
		MOV	A, @22			; 50MS/2250US=22.2
		JBC	FLAG, _STEP2
		MOV	A, @36
		JBC	FLAG, _STEP3
		MOV	A, @56
		JBC	FLAG, _STEP4
		MOV	A, @86
		MOV	COUNT, A			
ALARM_STEP1_2:
		CALL	MUSIC_ALARM_OUT
		JBC	FLAG, _STOP
		JMP	MUSIC_ALARM_EXIT
		
		MOV	A, @15
		CALL	DELAY100XMS
		JBC	FLAG, _STOP
		JMP	MUSIC_ALARM_EXIT
		INC	HL
		BC	R3, _C		
		RLC	FLAG
		JBS	FLAG, 5
		JMP	ALARM_STEP1_1
		CLR	FLAG	
		BS	FLAG, _STEP1
		DJZ	LOOP1
		JMP	ALARM_STEP1_10
					
		IOR	IOC5
		AND	A, @0EH
		IOW	IOC5
		BS	PORT5, _BELL1_CH
		CALL	DELAY3MS		
		JBC	FLAG, _STOP
		JMP	MUSIC_ALARM_EXIT
												
		MOV	A, @3
		IOW	IOC5				
		MOV	A, @8
		MOV	LOOP1, A
ALARM_STEP20:		
		MOV	A, @5
		MOV	HL, A		
ALARM_STEP2:
		MOV	A, @156
		JBC	FLAG, _STEP1
		MOV	A, @22			; 50MS/2250US=22.2
		JBC	FLAG, _STEP2
		MOV	A, @86
		JBC	FLAG, _STEP3
		MOV	A, @56
		MOV	COUNT, A
ALARM_STEP2_2:
		CALL	MUSIC_ALARM_OUT
		JBC	FLAG, _STOP
		JMP	MUSIC_ALARM_EXIT
		
		INC	HL
		BC	R3, _C
		RLC	FLAG
		JBS	FLAG, 4
		JMP	ALARM_STEP2		
		CLR	FLAG
		BS	FLAG, _STEP1	
		MOV	A, @15
		CALL	DELAY100XMS
		JBC	FLAG, _STOP
		JMP	MUSIC_ALARM_EXIT
		
		MOV	A, @5
		SUB	A, LOOP1
		JBS	R3, _C	
		JMP	ALARM_STEP2_3
		IOR	IOC5			;LOOP>=5
		AND	A, @0EH
		IOW	IOC5
		BS	PORT5, _BELL1_CH
		CALL	DELAY3MS
		JBC	FLAG, _STOP
		JMP	MUSIC_ALARM_EXIT		
		MOV	A, @3
		IOW	IOC5							
ALARM_STEP2_3:
		MOV	A, @156
		JBC	FLAG, _STEP1
		MOV	A, @22			; 50MS/2250US=22.2
		JBC	FLAG, _STEP2
		MOV	A, @56
		JBC	FLAG, _STEP3
		MOV	A, @36
		JBC	FLAG, _STEP4
		MOV	A, @86
		MOV	COUNT, A
ALARM_STEP2_5:
		CALL	MUSIC_ALARM_OUT
		JBC	FLAG, _STOP
		JMP	MUSIC_ALARM_EXIT
		
		INC	HL
		BC	R3, _C
		RLC	FLAG
		JBS	FLAG, 5
		JMP	ALARM_STEP2_3								
		CLR	FLAG
		BS	FLAG, _STEP1		
		MOV	A, @15
		CALL	DELAY100XMS
		JBC	FLAG, _STOP
		JMP	MUSIC_ALARM_EXIT		
		
		MOV	A, @5
		SUB	A, LOOP1
		JBS	R3, _C
		JMP	ALARM_STEP2_7
		JBS	R3, _Z
		JMP	ALARM_STEP2_6
		MOV	A, @0X00		;PORT5.0 AS OUTPUT PIN		
		IOW	IOC5
		BS	PORT5, _BELL1_CH
		JMP	ALARM_STEP2_7		
ALARM_STEP2_6:
		IOR	IOC5
		AND	A, @0EH
		IOW	IOC5
		BS	PORT5, _BELL1_CH
		CALL	DELAY3MS
		JBC	FLAG, _STOP
		JMP	MUSIC_ALARM_EXIT		
		MOV	A, @3
		IOW	IOC5				
ALARM_STEP2_7:			
		DJZ	LOOP1
		JMP	ALARM_STEP20
	
ALARM_STEP30:	
		MOV	A, @14
		MOV	HL, A		
ALARM_STEP3:
		MOV	A, @172			;100MS/580US=172.4
		JBC	FLAG, _STEP1
		MOV	A, @44			; 100MS/2250US=44.4
		JBC	FLAG, _STEP2
		MOV	A, @255			;313, ; 100MS/320US=312.5
		JBC	FLAG, _STEP3
		MOV	A, @71			; 100MS/1400US=71.4
		JBC	FLAG, _STEP4
		MOV	A, @111			; 100MS/900US=111
		MOV	COUNT, A
ALARM_STEP3_2:
		CALL	MUSIC_ALARM_OUT
		JBC	FLAG, _STOP
		JMP	MUSIC_ALARM_EXIT		
		MOV	A, @30					
		CALL	DELAY1XMS
		JBC	FLAG, _STOP
		JMP	MUSIC_ALARM_EXIT
		INC	HL				
		BC	R3, _C
		RLC	FLAG
		JBS	FLAG, 5
		JMP	ALARM_STEP3
		CLR	FLAG
		BS	FLAG, _STEP1			
		JMP	ALARM_STEP30		
MUSIC_ALARM_EXIT:		

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?