📄 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 + -