www.pudn.com > 89c52.rar > LAST.ASM
COM EQU 2AH
DAT EQU 2BH
FR_P BIT 07H
F_R BIT 08H
F_P BIT 09H
FGHB BIT 0AH ;°ë×Ö½Ú±êÖ¾£¨0-µÍ°ë×Ö½Ú£¬1-¸ß°ë×Ö½Ú£
LQ BIT 0BH
PVLU EQU 21H ;ǰһADCÊý¾Ý¼Ä´æÆ÷
CVLU EQU 22H ;±¾´ÎADCÊý¾Ý¼Ä´æÆ÷
ADRL EQU 58H ;´æ·ÅADCÊý¾ÝµÄµØÖ·Ö¸Õë(L)
ADRH EQU 57H ;´æ·ÅADCÊý¾ÝµÄµØÖ·Ö¸Õë(H)
DIFD EQU 25H ;²îÖµ¼Ä´æÆ÷
BUFF EQU 26H ;ÔÝ´æÆ÷
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP EXINT0
ORG 000BH
AJMP TINT0
ORG 0013H
AJMP EXINT1
ORG 0030H
MAIN:MOV SP,#60H
MOV TMOD,#02H
MOV TH0,#83H
MOV TL0,#83H
MOV DPTR,#0000H
MOV DDA,#00H
ACALL DAC
SETB EA
SETB ET0
SETB EX0
SETB IT0
SJMP $
TINT0: JB FR_P,PLAY
RECORD: JNB F_R,RECORD_2
CLR F_R
MOV DPTR,#0000H
MOV 57H,#00H
MOV 58H,#00H
RECORD_2: MOV DPTR,#8800H
MOV A,#00H
MOVX @DPTR,A
CLR P1.0
SETB EX1
SETB IT1
RETI
PLAY: JNB F_P,PLAY_2
CLR F_P
MOV DPTR,#0000H
MOV 57H,#00H
MOV 58H,#00H
MOVX A,@DPTR
INC DPTR
MOV 57H,DPH
MOV 58H,DPL
MOV 30H,#00H
MOV 51H,A
ACALL DAC
AJMP PLAY_RT
PLAy_2: MOV DPH,57H
MOV DPL,58H
ACALL JK
MOV 51H,A
ACALL DAC
MOV 57H,DPH
MOV 58H,DPL
MOV A,DPH
CJNE A,#7FH,PLAY_0
PLAY_0:JC PLAY_RT
MOV A,DPL
CJNE A,#00H,PLAY_1
PLAY_1: JC PLAY_RT
CLR TR0
;SETB 00H
;LCALL START
;LCALL DISP3
;LCALL SUBDIS
SETB EX0
PLAY_RT:RETI
;************************************************************
EXINT0:
MOV DPTR,#9801H
MOV A,#00H
MOVX @DPTR,A
MOV R0,#50H
MOV A,#34H
MOVX @DPTR,A
KEYGT: MOVX A,@DPTR
ANL A,#0FH
JNZ KG1
;AJMP KEYGT
KG1: MOV A,#40H
MOVX @DPTR,A
MOV DPTR,#9800H
MOVX A,@DPTR
ANL A,#3FH
MOV DPTR,#TABK
MOVC A,@A+DPTR
RL A
MOV DPTR,#TABJMP
JMP @A+DPTR
TABJMP : AJMP OUT0
AJMP OUT1
AJMP OUT2
RETURN: RETI
OUT0: AJMP RETURN
OUT2: MOV DDA,#00H
ACALL DAC
MOVX @DPTR,A
CLR FR_P
SETB F_R
SETB TR0
AJMP RETURN
OUT1: SETB FR_P
SETB F_P
SETB TR0
AJMP RETURN
;;***************************************************************************************************************
EXINT1:
MOV DPTR,#8800H
MOVX A,@DPTR
SETB P1.0
RECORD_1: LCALL EX1P
RECORD_RT: MOV 57H,DPH
MOV 58H,DPL
MOV A,DPH
CJNE A,#7FH,RECORD_0
RECORD_0: JC RD_RET
MOV A,DPL
CJNE A,#0FFH,RECORD_3
RECORD_3: JC RD_RET
CLR TR0
;SETB 00H
;LCALL START
;LCALL DISP3
;LCALL SUBDIS
SETB EX0
RD_RET:RETI
;**********************************************************
DISP3: PUSH DPH
PUSH DPL
MOV R7,#16 ;FINISH
MOV R6,#00H ;
MOV R0,#30H
PAGE3: MOV A,R6
MOV DPTR,#T_PAGE3
MOVC A,@A+DPTR
MOV @R0,A
INC R0
INC R6
DJNZ R7,PAGE3
POP DPL
POP DPH
RET
;;***********************************************************
;;44780ÏÔʾ×Ó³ÌÐò
;;Èë¿ÚÌõ¼þ£ºÄÚ²¿RAM30H---4FHµÄ32¸öÏÔʾ»º³åµ¥ÔªÖÐÊý¾ÝËÍÏÔʾ
;;³ö¿ÚÌõ¼þ£ºÎÞ
;;Õ¼ÓüĴæÆ÷£ºCOM£¬DAT£¬R7£¬A
;;***********************************************************
SubDis: PUSH Acc
PUSH DPH
PUSH DPL
MOV COM,#01H
ACALL C_W
MOV COM,#06H ;ÊäÈ뷽ʽÉèÖÃ:»Ãæ²»¶¯¹â±êÓÒÒÆ
ACALL C_W
MOV COM,#80H ;ÉèÖÃDDRAMµØÖ·:00H
ACALL C_W
MOV R0,#30H
MOV R7,#16
DIS_1: MOV A,@R0
MOV DAT,A
ACALL D_W
INC R0
DJNZ R7,DIS_1
MOV COM,#0C0H
ACALL C_W
MOV R7,#16
DIS_2: MOV A,@R0
MOV DAT,A
ACALL D_W
INC R0
DJNZ R7,DIS_2
POP DPL
POP DPH
POP Acc
RET
;;************************************************************
;;44780¸´Î»×Ó³ÌÐò
;;Õ¼ÓüĴæÆ÷£ºA£¬R2£¬COM
;;³öÈë¿ÚÌõ¼þ£ºÎÞ
;;************************************************************
START: PUSH DPH
PUSH DPL
ANL P1,#00H
MOV R2,#03H
START1: MOV A,#30H
ANL A,#0F0H
ORL P1,#08H
ORL P1,A
ANL P1,#0F7H
ANL P1,#00H
ACALL DELAY
DJNZ R2,START1
MOV A,#20H
ANL A,#0F0H
ORL P1,#08H
ORL P1,A
ANL P1,#0F7H
ANL P1,#00H
MOV COM,#28H ;ÉèÖù¤×÷·½Ê½(4λ×ÜÏß)
ACALL C_W
MOV COM,#01H ;ÇåÆÁ
ACALL C_W
MOV COM,#06H ;ÉèÖÃÊäÈ뷽ʽ
LCALL C_W
MOV COM,#0DH ;ÉèÖÃÏÔʾ·½Ê½
LCALL C_W
LCALL CG_WRITE ;дÈë×Ô¶¨Òå×ÖÄ£
POP DPL
POP DPH
RET
;;*******************************************************
;;дÈë×Ô¶¨Òå×ÖÄ£×Ó³ÌÐò
;;×ÖÄ£¸öÊý*8·ÅR2ÖУ¬×ÖÄ£µØÖ·±íΪCGTAB
;;Õ¼ÓüĴæÆ÷£ºCOM£¬DAT,R2£¬R3£¬DPTR£¬A
;;********************************************************
CG_WRITE: PUSH DPH
PUSH DPL
MOV COM,#40H
LCALL C_W
MOV R2,#48
MOV R3,#00H
MOV DPTR,#CGTAB
CG1: MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL D_W
INC R3
DJNZ R2,CG1
POP DPL
POP DPH
RET
;;********************************************************
;;Ö¸Áî,Êý¾Ý¶Á¡¢Ð´×Ó³ÌÐò
;;½öÓ°ÏìCOMºÍDATÁ½¸ö¼Ä´æÆ÷
;;********************************************************
C_R: ANL P1,#00H ;¶ÁACºÍBFÖµ×Ó³ÌÐò£¨½á¹û·ÅAÖУ©
ORL P1,#04H
ORL P1,#0F8H
MOV A,P1
ANL P1,#07H
ANL A,#0F0H
MOV R5,A
ORL P1,#0F8H
MOV A,P1
ANL P1,#00H
ANL A,#0F0H
SWAP A
ORL A,R5
RET
;*********************************************************
C_W: PUSH ACC ;дָÁî´úÂë×Ó³ÌÐò£¨Ö¸Áî´úÂë·ÅCOMÖУ©
CW1: ACALL C_R
JB ACC.7,CW1
MOV A,COM
ANL A,#0F0H
ORL P1,#08H
ORL P1,A
ANL P1,#0F7H
ANL P1,#07H
MOV A,COM
SWAP A
CW2: ANL A,#0F0H
ORL P1,#08H
ORL P1,A
ANL P1,#0F7H
ANL P1,#00H
POP ACC
RET
;**********************************************************
D_W: PUSH ACC ;дÏÔʾÊý¾Ý×Ó³ÌÐò£¨ÏÔʾÊý¾Ý·ÅDATÖУ©
DW1: ACALL C_R
JB ACC.7,DW1
ORL P1,#02H
MOV A,DAT
ANL A,#0F0H
ORL P1,#08H
ORL P1,A
ANL P1,#0F7H
ANL P1,#07H
MOV A,DAT
SWAP A
ANL A,#0F0H
ORL P1,#08H
ORL P1,A
ANL P1,#0F7H
ANL P1,#00H
POP ACC
RET
;********************************************************
D_R: PUSH ACC ;¶ÁÏÔʾÊý¾Ý×Ó³ÌÐò£¨½á¹ûDATÖУ©
DR1: ACALL C_R
JB ACC.7,DR1
ORL P1,#02H
ORL P1,#04H
ORL P1,#0F8H
MOV A,P1
ANL P1,#07H
ANL A,#0F0H
MOV R5,A
ORL P1,#0F8H
MOV A,P1
ANL P1,#00H
ANL A,#0F0H
SWAP A
ORL A,R5
MOV DAT,A
POP ACC
RET
;*******************************************************
DELAY: MOV R6,#00H ;ÑÓʱ×Ó³ÌÐò
MOV R7,#00H
DELAY1: NOP
DJNZ R7,DELAY1
DJNZ R6,DELAY1
RET
;********************************************************
T_PAGE1: DB 52H,65H,63H,6FH,72H,64H,69H,6EH,67H,0A5H,0A5H,0A5H,0A5H,0A5H,0A5H,20H;Recording......
DB 52H,65H,63H,6FH,72H,64H,20H,74H,69H,6DH,65H,3AH,30H,2EH,30H,73H;Record time:0.0s
T_PAGE2: DB 50H,6CH,61H,79H,69H,6EH,67H,0A5H,0A5H,0A5H,0A5H,0A5H,0A5H,20H,20H;Playing......
DB 20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H;
T_PAGE3: DB 20H,20H,20H,20H,20H,46H,69H,6EH,69H,73H,68H,20H,20H,20H,20H,20H;Finish
DB 52H,65H,63H,6FH,72H,64H,20H,74H,69H,6DH,65H,3AH,30H,2EH,30H,73H;Record time:0.0s
T_PAGE4: DB 43H,68H,6FH,6FH,73H,65H,20H,6DH,6FH,64H,65H,20H,20H,20H,20H,20H;CHOOSE MODE
DB 20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H
T_PAGE5: DB 50H,72H,65H,73H,73H,20H,74H,68H,65H,20H,6BH,65H,79H,20H,20H,20H;PRESS THE KEY
DB 73H,74H,61H,72H,74H,20H,74H,6FH,20H,73H,74H,61H,72H,74H,20H,20H;START TO START
CGTAB: DB 00H,0EH,11H,11H,0AH,0AH,1BH,00H;"Å·Ä·¡±´úÂë=00H ;;×ÖÄ£±í
DB 18H,18H,07H,08H,08H,08H,07H,00H;¡°'c¡±´úÂë=01H
DB 10H,10H,10H,10H,10H,10H,1FH,00H;¡°L¡±´úÂë=02H
DB 00H,00H,0AH,15H,15H,15H,15H,00H;¡°M¡±¡¡¡¡ 03H
DB 0AH,0EH,04H,04H,04H,04H,0EH,0AH; WIRE =04H
DB 02H,04H,0BH,1CH,1CH,0BH,04H,02H; WIRLESS=05H
;;**********************************************************************
;; ADC ×Ó³ÌÐò¡£
;; Èë¿Ú£ºÎÞ¡£
;; ³ö¿Ú£ºA/Dת»»Öµ·ÅÓÚÄÚ²¿RAM DAD0 µ¥Ôª¡£
;;**********************************************************************
DAD0 EQU 50H
CHAD EQU 00H ;²ÉÑùͨµÀÖµ
ADC0: PUSH DPL
PUSH DPH
PUSH A
MOV DPTR,#8800H
SETB EA
SETB EX1
SETB IT1
MOV A,#CHAD
MOVX @DPTR,A
CLR P1.0
ADC_0: JB P3.3,ADC_0
MOVX A,@DPTR
SETB P1.0
MOV DAD0,A
NOP
MOV A,#CHAD
MOV DPTR,#8800H
MOVX @DPTR,A
POP A
POP DPH
POP DPL
RET
;;****************************************************************
;;D/Aת»»×Ó³ÌÐò
;;Èë¿Ú:Êä³öÊý×ÖÁ¿·ÅÓÚDdaµ¥ÔªÖÐ.
;;³ö¿Ú:ÎÞ.
;;****************************************************************
Dda EQU 51H
DAC: PUSH DPH
PUSH DPL
MOV DPTR,#9000H
MOV A,Dda
MOVX @DPTR,A
NOP
POP DPL
POP DPH
RET
;*****************************************************************
; 52H: ADC_THE LAST VALUE, A: DA VALUE
;*****************************************************************
PSEXT:JB 01H,PSEXTH
PSEXTL: MOVX A,@DPTR
ANL A,#0FH
JB ACC.3,PSEXTL_0
ADD A,52H
MOV 52H,A
AJMP PSEXTL_RT
PSEXTL_0:CLR ACC.3
JZ PSEXTL_1
CLR C
XCH A,52H
SUBB A,52H
MOV 52H,A
AJMP PSEXTL_RT
PSEXTL_1:XCH A,52H
CLR C
SUBB A,#08H
MOV 52H,A
AJMP PSEXTL_RT
PSEXTL_RT:INC DPTR
SETB 01H
RET
PSEXTH:
MOVX A,@DPTR
ANL A,#0F0H
SWAP A
JB ACC.3,PSEXTH_0
ADD A,52H
MOV 52H,A
AJMP PSEXTH_RT
PSEXTH_0:CLR ACC.3
JZ PSEXTH_1
CLR C
XCH A,52H
SUBB A,52H
MOV 52H,A
AJMP PSEXTH_RT
PSEXTH_1:XCH A,52H
CLR C
SUBB A,#08H
MOV 52H,A
AJMP PSEXTH_RT
PSEXTH_RT:CLR 01H
RET
;*****************************************************************
;50H:ADC_UPDATE VALUE, 52H: ADC_THE LAST VALUE
;*****************************************************************
PSTORE: PUSH 50H
MOV R0,#54H
JB 00H,PSTOREH
MOV A,50H
CJNE A,52H,PSTOREL_0
PSTOREL_0:JC PSTOREL_1
CLR C
SUBB A,52H
CJNE A,#08H,PSTOREL_2
PSTOREL_2:JC PSTOREL_3
MOVX A,@DPTR
MOV 54H,#07H
XCHD A,@R0
MOVX @DPTR,A
AJMP RETURNPSL
PSTOREL_3:MOV R2,A
MOVX A,@DPTR
MOV 54H,R2
XCHD A,@R0
MOVX @DPTR,A
AJMP RETURNPSL
PSTOREL_1:MOV R3,52H
XCH A,R3
CLR C
SUBB A,R3
CJNE A,#09H,PSTOREL_4
PSTOREL_4:JC PSTOREL_5
MOVX A,@DPTR
MOV @R0,#08H
XCHD A,@R0
MOVX @DPTR,A
AJMP RETURNPSL
PSTOREL_5:ADD A,#08H
MOV R2,A
MOVX A,@DPTR
MOV 54H,R2
XCHD A,@R0
MOVX @DPTR,A
AJMP RETURNPSL
RETURNPSL:SETB 00H
INC DPTR
POP 52H
RET
PSTOREH: MOV A,50H
CJNE A,52H,PSTOREH_0
PSTOREH_0:JC PSTOREH_1
CLR C
SUBB A,52H
CJNE A,#08H,PSTOREH_2
PSTOREH_2:JC PSTOREH_3
MOVX A,@DPTR
SWAP A
MOV @R0,#07H
XCHD A,@R0
SWAP A
MOVX @DPTR,A
AJMP RETURNPSH
PSTOREH_3:MOV R2,A
MOVX A,@DPTR
SWAP A
MOV 54H,R2
XCHD A,@R0
SWAP A
MOVX @DPTR,A
AJMP RETURNPSH
PSTOREH_1:MOV R3,52H
XCH A,R3
CLR C
SUBB A,R3
CJNE A,#08H,PSTOREH_4
PSTOREH_4:JC PSTOREH_5
MOVX A,@DPTR
SWAP A
MOV @R0,#08H
XCHD A,@R0
SWAP A
MOVX @DPTR,A
AJMP RETURNPSH
PSTOREH_5:ADD A,#08H
MOV R2,A
MOVX A,@DPTR
SWAP A
MOV 54H,R2
XCHD A,@R0
SWAP A
MOVX @DPTR,A
AJMP RETURNPSH
RETURNPSH:CLR 00H
POP 52H
RET
TABK: DB 00H,00H,06H,0BH,00H,00H,00H,00H
DB 01H,02H,07H,0CH,00H,00H,00H,00H
DB 03H,08H,0DH,0EH,00H,00H,00H,00H
DB 04H,09H,0AH,0FH,00H,00H,00H,00H
DB 05H,16H,18H,17H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
;********************************************************************LQLQLQLQLQLQLQLQLQLQQLLQQL
;***************************************************
EX1P:CLR C
MOV CVLU,A
SUBB A,PVLU ;ÏÖÖµ-ǰֵ 14
JC EX12 ;ÏÖÖµ СÓÚ Ç°Öµ
MOV DIFD,A ;ÏÖÖµ ´óÓÚµÈÓÚ Ç°Öµ
SUBB A,#7 ;ÊÇ·ñ´óÓÚµÈÓÚ7 19
JC EX11 ;·Ç´óÓÚµÈÓÚ7
MOV DIFD,#7 ;´óÓÚµÈÓÚ7ÖÃ7
EX11: JNB FGHB,EX14 ;µÍ4λת 24
MOV A,DIFD ;¸ß4λ´¦Àí
ADD A,PVLU
MOV PVLU,A ;ǰֵ´¦Àí **********************!!!!???????????????
MOV A,DIFD
SWAP A
MOV BUFF,A ;ÔÝ´æ
CPL FGHB ;°ë×Ö½Ú±êÖ¾Çó·´£¨×ªµÍ4룩
RET ;33
EX12: CLR C ;ÏÖÖµ СÓÚ Ç°Öµ
MOV A,PVLU
SUBB A,CVLU ;ǰֵ-ÏÖÖµ
MOV DIFD,A
SUBB A,#8 ;ÏÖÖµÊÇ·ñСÓÚǰֵ8
JC EX13 ;ÏÖֵСÓÚǰֵ8ÒÔÄÚת 25
MOV DIFD,#8 ;ÏÖֵСÓÚǰֵ8ÒÔÉÏÖÃ8
EX13: MOV A,PVLU
CLR C
SUBB A,DIFD
MOV PVLU,A ;ǰֵ´¦Àí
MOV A,DIFD
SETB ACC.3 ;±íʾÏÖֵСÓÚǰֵ
MOV DIFD,A ;28
JNB FGHB,EX14 ;µÍ4λת
SWAP A
MOV BUFF,A ;ÔÝ´æ
CPL FGHB ;°ë×Ö½Ú±êÖ¾Çó·´£¨×ªµÍ4룩
RET ;38
EX14: MOV A,DIFD
ORL A,BUFF ;¸ßµÍ4λºÏ³É8λ
MOV DPH,ADRH
MOV DPL,ADRL ;È¡µØÖ·Ö¸Õë
MOVX @DPTR,A ;±£´æ
INC DPTR ;µØÖ·Ö¸ÕëÔö1
MOV ADRH,DPH
MOV ADRL,DPL ;±£´æµØÖ·Ö¸Õë
CPL FGHB ;°ë×Ö½Ú±êÖ¾Çó·´£¨×ª¸ß4룩
RET ;47
;************************************************************************************************
JK:
MOV DPH,57H
MOV DPL,58H
MOVX A,@DPTR
JNB LQ,DD
SWAP A
ANL A,#0FH
CLR C
MOV 32H,A
SUBB A,#08H
JC ZHENG
FUG: MOV 31H,A
MOV A,30H
CLR C
SUBB A,31H
MOV 30H,A
CPL LQ
RET
ZHENG:
MOV A,30H
ADD A,32H
MOV 30H,A
CPL LQ
RET ;GAOWEI
;*********************************
DD: MOV DPH,57H
MOV DPL,58H
MOVX A,@DPTR
INC DPTR
MOV 57H,DPH
MOV 58H,DPL
ANL A,#0FH
CLR C
MOV 32H,A
SUBB A,#08H
JC ZHEND
FUD: MOV 31H,A
MOV A,30H
CLR C
SUBB A,31H
MOV 30H,A
CPL LQ
RET
ZHEND:
MOV A,30H
ADD A,32H
MOV 30H,A
CPL LQ ;DIWEI
RET
;****************************************LQLQLQLQLQLQLQLQLQLQLQLQL