Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- T0_COUNT EQU 62500
- SPK EQU P3.7
- TIMES EQU 30H
- H_TMP EQU 31H
- L_TMP EQU 32H
- ;================================
- ORG 0H
- JMP SETTING
- ORG 0BH
- JMP TIMER0_INT
- ORG 1BH
- JMP TIMER1_INT
- ;================================
- 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 DPTR,#TABLE
- MOV R0,#0
- SETB TR0
- ;================================
- MAIN:
- MOV A,R0
- MOVC A,@A+DPTR
- MOV TIMES,A
- CJNE A,#255,SOUND
- MOV R0,#0
- JMP MAIN
- SOUND:
- CALL READ_TONE
- SOUND1:
- MOV A,TIMES
- CJNE A,#0,SOUND1
- CLR TR1
- INC R0
- JMP MAIN
- READ_TONE:
- INC R0
- MOV A,R0
- MOVC A,@A+DPTR
- MOV H_TMP,A
- MOV TH1,H_TMP
- INC R0
- MOV A,R0
- 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 10,251,5
- DB 10,0,0
- DB 255
- ;============================
- END
Add Comment
Please, Sign In to add comment