Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;button set
- COUNT EQU 20000
- SW EQU P2.0
- SEG7 EQU P0
- ;music set
- T0_COUNT EQU 62500
- SPK EQU P3.0
- TIMES EQU 30H
- H_TMP EQU 31H
- L_TMP EQU 32H
- ;================================
- ORG 0H
- SETTING:
- MOV TMOD,#00010001B
- MOV DPTR,#NUM_TABLE
- MOV R0,#1
- MOV A,R0
- MOVC A,@A+DPTR
- MOV SEG7,A
- MUSIC_SETTING:
- SETB EA
- SETB ET0
- SETB ET1
- MOV SP,#70H
- MOV TMOD,#00010001B
- MOV TH0,#(65536-T0_COUNT)/256
- MOV TL0,#(65536-T0_COUNT) MOD 256
- MOV R5,#0;use R5 to save music tone
- SETB TR0
- ;================================
- LOOP:
- SETB SW
- KEYCHK:
- JB SW,MAIN;jump to main if button is not pushed
- CALL DEBOUNCE
- JB SW,KEYCHK
- INC R0
- CJNE R0,#4,ABC
- MOV R0,#0
- ABC:
- MOV A,R0
- MOV DPTR,#NUM_TABLE
- MOVC A,@A+DPTR
- MOV SEG7,A
- KEYCHK2:
- JNB SW,KEYCHK2
- CALL DEBOUNCE
- JNB SW,KEYCHK2
- JMP LOOP
- NUM_TABLE:
- DB 11111100B;0
- DB 01100000B;1
- DB 11011010B;2
- DB 11110010B;3
- DB 01100110B;4
- DB 10110110B;5
- DB 00111110B;6
- DB 11100000B;7
- DB 11111110B;8
- DB 11100110B;9
- ;===================================
- DEBOUNCE:
- MOV TH0,#(65536-COUNT)/256
- MOV TL0,#(65536-COUNT) MOD 256
- SETB TR0
- WAIT:
- JNB TF0,WAIT
- CLR TF0
- RET
- ;==================================
- ;music
- ;================================
- ORG 50H
- JMP MUSIC_SETTING
- ORG 0BH
- JMP TIMER0_INT
- ORG 1BH
- JMP TIMER1_INT
- ;================================
- ;================================
- MAIN:
- MOV A,R5
- MOV DPTR,#TABLE
- MOVC A,@A+DPTR
- MOV TIMES,A
- CJNE A,#255,SOUND
- MOV R5,#0
- JMP KEYCHK;check key evern tone
- JMP MAIN
- SOUND:
- CALL READ_TONE
- SOUND1:
- MOV A,TIMES
- CJNE A,#0,SOUND1
- CLR TR1
- INC R5
- JMP MAIN
- READ_TONE:
- INC R5
- MOV A,R5
- MOVC A,@A+DPTR
- MOV H_TMP,A
- MOV TH1,H_TMP
- INC R5
- MOV A,R5
- MOVC A,@A+DPTR
- MOV L_TMP,A
- MOV TL1,L_TMP
- MOV A,H_TMP
- CJNE A,#0,SPK_WORK
- CLR TR1
- RET
- SPK_WORK:
- SETB TR1
- RET
- ;=========================
- TIMER0_INT:
- PUSH ACC
- PUSH PSW
- DEC TIMES
- MOV TH0,#(65536-T0_COUNT)/256
- MOV TL0,#(65536-T0_COUNT) MOD 256
- SETB TR0
- POP PSW
- POP ACC
- RETI
- ;=================================
- TIMER1_INT:
- PUSH ACC
- PUSH PSW
- CPL SPK
- MOV TH1,H_TMP
- MOV TL1,L_TMP
- SETB TR1
- POP PSW
- POP ACC
- RETI
- ;=================================
- TABLE:
- DB 3,252,68
- DB 1,0,0
- DB 4,252,68
- DB 8,252,173
- DB 8,252,68
- DB 8,253,52
- DB 16,253,10
- DB 3,252,68
- DB 1,0,0
- DB 4,252,68
- DB 8,252,173
- DB 8,252,68
- DB 8,253,131
- DB 16,253,52
- DB 3,252,68
- DB 1,0,0
- DB 4,252,68
- DB 8,254,34
- DB 8,253,200
- DB 8,253,52
- DB 8,253,10
- DB 8,252,173
- DB 3,254,6
- DB 1,0,0
- DB 4,254,6
- DB 8,253,200
- DB 8,253,52
- DB 8,253,131
- DB 16,253,52 ;BirthdaySong
- ;============================
- TABLE2:
- DB 16,253,131
- DB 8,253,131
- DB 8,252,173
- DB 16,253,131
- DB 8,253,93
- DB 8,253,131
- DB 8,252,173
- DB 2,253,131
- DB 2,253,200
- DB 2,254,6
- DB 2,253,131
- DB 16,253,131
- DB 8,253,93
- DB 8,253,131 ;MissingYou
- ;============================
- TABLE3:
- DB 8,254,34
- DB 4,254,6
- DB 4,253,200
- DB 8,253,131
- DB 8,253,131
- DB 8,253,200
- DB 8,254,34
- DB 16,253,131
- DB 8,253,200
- DB 4,253,131
- DB 4,253,10
- DB 8,252,173
- DB 8,253,131
- DB 24,253,10
- DB 8,0,0
- DB 8,254,34
- DB 4,254,6
- DB 4,253,200
- DB 8,253,131
- DB 8,253,131
- DB 8,253,200
- DB 8,254,34
- DB 16,253,131
- DB 8,253,200
- DB 4,253,131
- DB 4,253,10
- DB 8,252,173
- DB 8,253,131
- DB 24,252,68
- DB 8,0,0
- DB 8,252,173
- DB 4,253,10
- DB 4,252,173
- DB 16,253,131
- DB 8,253,200
- DB 4,253,131
- DB 4,253,200
- DB 16,254,34
- DB 8,254,87
- DB 4,254,34
- DB 4,254,6
- DB 8,253,200
- DB 8,254,87
- DB 24,253,131
- DB 8,0,0
- DB 8,253,200
- DB 8,254,34
- DB 8,253,131
- DB 8,254,34
- DB 8,253,10
- DB 4,253,131
- DB 4,253,200
- DB 8,253,131
- DB 8,253,10
- DB 8,252,173
- DB 4,253,10
- DB 4,253,131
- DB 8,253,10
- DB 8,252,173
- DB 24,252,68
- DB 8,0,0 ;TheRiverInFrontOfMyHouse
- ;============================
- END
Add Comment
Please, Sign In to add comment