⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 doorbell-music.dt

📁 用EM78P153S编写的DoorBell-Music
💻 DT
字号:

;

;------------------------------------------------------
CUP:EM78P153S
;------------------------------------------------------------------
		ORG	0
		ADD	A, @0FFH
		JMP	START

;------------------------------------------------------
		ORG	0X08
		DISI
		RETI
		;---------
		MOV	A_BUF, A
		SWAP	A_BUF
		SWAPA	R3
		MOV	R3_BUF, A
		MOV	A, FSR
		MOV	R4_BUF, A
		
		JBC	RF, _TCIF
		JMP	INT_TCC
		JBC	RF, _ICIF
		JMP	INT_PORT6
		JBC	RF, _EXIF
		JMP	INT_EXT
INT_END:
		MOV	A, R4_BUF
		MOV	FSR, A
		SWAPA	R3_BUF
		MOV	R3, A
		SWAPA	A_BUF
		RETI
		;------------------
INT_TCC:
		MOV	A, RF
		AND	A, @0XFE
		MOV	RF, A
		NOP
		JMP	INT_END
		;----------------
INT_PORT6:
		MOV	A, RF
		AND	A, @0XFD
		MOV	RF, A
		NOP
		JMP	INT_END
		;-----------------
INT_EXT:
		MOV	A, RF
		AND	A, @0XFB
		MOV	RF, A
		NOP
		JMP	INT_END


;-----------------------------------------------------
; 4MZ CLOCK
;-----------------------------------------------------
DELAY100MS:
		MOV	A, @1
		MOV	ABC, A
		JMP	DELAY1SLOOP
DELAY500MS:
		MOV	A, @5
		MOV	ABC, A
		JMP	DELAY1SLOOP
DELAY1S:
		MOV	A, @10
		MOV	ABC, A
DELAY1SLOOP:
		MOV	A, @100		;100MS
		MOV	DEF, A
DELAY100MSLOOP:
		CALL	DELAY1MS
		DJZ	DEF
		JMP	DELAY100MSLOOP
		DJZ	ABC
		JMP	DELAY1SLOOP
		RET
				
;-----------------------------------------------------
DELAY30MS:
		MOV	A, @30
DELAY1XMS:
		MOV	ABC, A
		CALL	DELAY1MS
		DJZ	ABC
		JMP	$-2
		RET
		
;-----------------------------------------------------	
; 4MZ CLOCK
;-----------------------------------------------------						
DELAY1MS:
		MOV	A, @256-100		
DELAYLOOP:
		WDTC
		NOP
		JMP	$+1
		JMP	$+1
		JMP	$+1
		JMP	$+1
		JMP	$+1
		JMP	$+1
		JMP	$+1		
		ADD	A, @1
		JBS	R3, _C
		JMP	DELAYLOOP
		RET


;------------------------------------------------------
DELAY160US:	
		MOV	A, @16		
		JMP	DELAY10US
DELAY290US:
		MOV	A, @29		
		JMP	DELAY10US	
DELAY450US:
		MOV	A, @45		
		JMP	DELAY10US		
DELAY550US:
		MOV	A, @55		
		JMP	DELAY10US
DELAY690US:
		MOV	A, @69		
		JMP	DELAY10US
DELAY700US:
		MOV	A, @70		
		JMP	DELAY10US
DELAY730US:
		MOV	A, @73		
		JMP	DELAY10US		
DELAY800US:
		MOV	A, @80		
		JMP	DELAY10US
DELAY920US:
		MOV	A, @92		
		JMP	DELAY10US		
DELAY1120US:
		MOV	A, @112		
		JMP	DELAY10US			
DELAY1200US:
		MOV	A, @120		
;		JMP	DELAY10US				
DELAY10US:
		MOV	ABC, A
DELAY10USLOOP:
		WDTC
		JMP	$+1		
		JMP	$+1
		JMP	$+1
		JMP	$+1
		JMP	$+1
		JMP	$+1
		JMP	$+1
		JMP	$+1		
		DJZ	ABC
		JMP	DELAY10USLOOP
		RET
			
;------------------------------------------------------

;------------------------------------------------------
DOUBLEDIDO:
		BS	PORT5, _BELL1_CH
		BC	PORT5, _BELL1_MUSIC		
		MOV	A, @100
		CALL	DELAY1XMS
		
		MOV	A, @12
		MOV	BELLCOUNT, A
DOUBLE_DING:		
		IOR	IOC5		
		OR	A, @1
		IOW	IOC5		
		BS	P5, _BELL1_CH
		MOV	A, @32
		MOV	COUNT, A
DOUBLE_DING2:		
		BS	P5, _BELL1_MUSIC
		CALL	DELAY550US
		BC	P5, _BELL1_MUSIC
		CALL	DELAY550US
		DJZ	COUNT
		JMP	DOUBLE_DING2
		
		DJZ	BELLCOUNT
		JMP	DOUBLE_DING3
		JMP	DOUBLE_DONG0
DOUBLE_DING3:
		IOR	IOC5
		AND	A, @0FEH
		IOW	IOC5
		BC	P5, _BELL1_CH
;		CALL	DELAY800US
		CALL	DELAY690US
		JMP	DOUBLE_DING
		;--------------------
DOUBLE_DONG0:		
		IOR	IOC5
		AND	A, @0FEH
		IOW	IOC5
		BC	P5, _BELL1_CH	
		BC	P5, _BELL1_MUSIC
		
		BS	PORT5, _BELL2_CH
		BC	PORT5, _BELL2_MUSIC		
		MOV	A, @100
		CALL	DELAY1XMS
		
		MOV	A, @17
		MOV	BELLCOUNT, A			
DOUBLE_DONG:		
		IOR	IOC5		
		OR	A, @4
		IOW	IOC5		
		BS	P5, _BELL2_CH
		MOV	A, @25
		MOV	COUNT, A
DOUBLE_DONG2:		
		BS	P5, _BELL2_MUSIC
		CALL	DELAY690US
		BC	P5, _BELL2_MUSIC
		CALL	DELAY690US
		DJZ	COUNT
		JMP	DOUBLE_DONG2
		
		DJZ	BELLCOUNT
		JMP	DOUBLE_DONG3
		IOR	IOC5
		AND	A, @0FBH
		IOW	IOC5
		BC	P5, _BELL2_CH	
		BC	P5, _BELL2_MUSIC
		RET
					
DOUBLE_DONG3:
		IOR	IOC5
		AND	A, @0FBH
		IOW	IOC5
		BC	P5, _BELL2_CH
;		CALL	DELAY800US
		CALL	DELAY690US
		JMP	DOUBLE_DONG				
			
;------------------------------------------------------
; 25*920*2=46ms
;------------------------------------------------------
SINGLEDIDO:
		BS	PORT5, _BELL1_CH
		BC	PORT5, _BELL1_MUSIC		
		MOV	A, @100
		CALL	DELAY1XMS
		
		MOV	A, @12
		MOV	BELLCOUNT, A
SINGLE_DING:		
		IOR	IOC5		
		OR	A, @1
		IOW	IOC5		
		BS	P5, _BELL1_CH
		MOV	A, @32
		MOV	COUNT, A
SINGLE_DING2:		
		BS	P5, _BELL1_MUSIC
		CALL	DELAY730US
		BC	P5, _BELL1_MUSIC
		CALL	DELAY730US
		DJZ	COUNT
		JMP	SINGLE_DING2
		
		DJZ	BELLCOUNT
		JMP	SINGLE_DING3
		JMP	SINGLE_DONG0
SINGLE_DING3:
		IOR	IOC5
		AND	A, @0FEH
		IOW	IOC5
		BC	P5, _BELL1_CH
;		CALL	DELAY1200US
		CALL	DELAY690US
		JMP	SINGLE_DING
		
		;------------------------
SINGLE_DONG0:		
		IOR	IOC5
		AND	A, @0FEH
		IOW	IOC5
		BC	P5, _BELL1_CH	
		BC	P5, _BELL1_MUSIC
		
		BS	PORT5, _BELL2_CH
		BC	PORT5, _BELL2_MUSIC		
		MOV	A, @30
		CALL	DELAY1XMS
		
		MOV	A, @17
		MOV	BELLCOUNT, A			
SINGLE_DONG:		
		IOR	IOC5		
		OR	A, @4
		IOW	IOC5		
		BS	P5, _BELL2_CH
		MOV	A, @25
		MOV	COUNT, A
SINGLE_DONG2:		
		BS	P5, _BELL2_MUSIC
		CALL	DELAY920US
		BC	P5, _BELL2_MUSIC
		CALL	DELAY920US
		DJZ	COUNT
		JMP	SINGLE_DONG2
		
		DJZ	BELLCOUNT
		JMP	SINGLE_DONG3
		IOR	IOC5
		AND	A, @0FBH
		IOW	IOC5
		BC	P5, _BELL2_CH	
		BC	P5, _BELL2_MUSIC
		RET
					
SINGLE_DONG3:
		IOR	IOC5
		AND	A, @0FBH
		IOW	IOC5
		BC	P5, _BELL2_CH

		CALL	DELAY690US
		JMP	SINGLE_DONG				
			
-----
START:
		WDTC
		MOV	A, @0X00	
		IOW	IOC5
		MOV	A, @0
		MOV	PORT5, A		
;		MOV	A, @0X88	
		MOV	A, @0XFF	
		IOW	IOC6
		MOV	A, @0
		MOV	PORT6, A
		CLR	RF
		MOV	A, @0XFF	
		IOW	IOCB

		MOV	A, @0
		IOW	IOCC
		MOV	A, @0XFF	
		IOW	IOCD		

		MOV	A, @0
		IOW	IOCE	
		WDTC
		CLRA	
		IOW	IOCF

		MOV	A,@0X06
		CONTW			
		CLR	0X01		
		WDTC		

				
		CLR	FLAG
		CLR	ABC
		CLR	DEF
		CLR	TEMP1
		CLR	TEMP2
		CLR	COUNT
		CLR	BELLCOUNT
		CLR	LOOP
		;----------------
MAIN:
		WDTC					
		NOP
		NOP
		CALL	DOUBLEDIDO
		CALL	DELAY1S
		CALL	DOUBLEDIDO		
		CALL	DELAY1S

		NOP
		NOP
;		JMP	$		
		JMP	MAIN
		
					
;-------------------------------------------------------
                END













































⌨️ 快捷键说明

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