单片机89c2051程序0!

到永远
CS_W EQU P3.3 ; CS/W_G,X25045
SOUT EQU P3.4 ; X25045 TO CPU
SCLK EQU P3.0 ; X25045 CLK
SIN EQU P3.1 ; CPU TO X25045
CLK8 EQU P3.2 ; 8583 CLK
SDA8 EQU P3.7 ; 8583 DAT
CLK_I EQU P3.2 ; 8583 INIT
DISP_DAT EQU P1.0 ; S_DATA
DISP_CLK EQU P1.1 ; S_CLK
DISP_LOAD EQU P1.2 ; S_DATA_LOAD
KEY_1 EQU P1.3 ; SET
KEY_2 EQU P1.4 ; RIGHT
KEY_3 EQU P1.5 ; +
KEY_4 EQU P1.6 ; -
SPK_OUT EQU P1.7
CLK_RAM EQU 1FH ; 18H -- 1FH IS T0_INIT
; 18H M/W
; 19H DATE/Y, 1AH H, 1BH M
; 1CH 1S, 1DH_0.1S, 1EH_0.5S
; 1FH 2MS ; 1FH IS 2MS
BIT_05S BIT 00H
FLASH BIT 01H
S_FLASH BIT 02H
F_END BIT 03H
M_BIT BIT 04H
T_DISP BIT 07H
K_DISP BIT 08H
JD_BYTE EQU 24H ; BIT_36_ON
; BIT_37
LAMP BIT 37H
RING BIT 37H
S_BUF EQU 25H
RING_NUMB EQU 26H
KEY_IN_BUF EQU 28H
KEY_BUF EQU 2CH ; KEY_1 2CH
; KEY_2 2DH
LS_BYTE EQU 2EH
LING EQU 2FH
DISP_BUF EQU 30H ; 30H -- L1
; 31H -- L2
; 32H -- DP
; 33H -- L3
; 34H -- L4
; 35H -- L1 NC
; 36H -- L2 NC ; 52H -- DP
; 37H -- DP NC
; 38H -- L3 NC
; 39H -- L4 NC
V_BYTEH EQU 3AH
V_BYTEL EQU 3BH
FX_BUF EQU 40H
SSPP EQU 6FH
F_1 EQU 02
F_2 EQU 12H
F_MAX EQU 1EH
W_TIME EQU 20
S_NUMB EQU 30H ; RING ON TIME'S
ORG 0000H
LJMP MAIN_IN
; ********************************************************************
ORG 000BH
PUSH ACC
PUSH PSW
CLR C
MOV A,#0D8H ; 2 ms
ADD A,TL0
MOV TL0,A
MOV A,#0F8H ; 1.667 ms
ADDC A,TH0
MOV TH0,A
MOV PSW,#08H
INC CLK_RAM ; 1FH=CLK_RAM IS 2 ms_BYTE
INC CLK_RAM-1
MOV A,CLK_RAM-1
CLR C
SUBB A,#150
JC T0_02
MOV CLK_RAM-1,#00H
SETB SPK_OUT ; OFF SPK
T0_02: MOV A,CLK_RAM
CJNE A,#50,T0_50 ; 100 ms
MOV CLK_RAM,#00H
INC CLK_RAM-2 ; CLK_RAM-2 0.1 s_BYTE
MOV A,CLK_RAM-2
CLR C
CJNE A,#05H,T0_03
SETB BIT_05S
JB S_FLASH,T0_50
MOV DISP_BUF+2,#80H
SJMP T0_50
T0_03: CJNE A,#10,T0_50 ; no 1s goto t0_50
CLR BIT_05S
MOV DISP_BUF+2,#00H
MOV CLK_RAM-2,#00 ; 0.1S
MOV A,CLK_RAM-3 ; 1CH S_BYTE
ADD A,#01H
DA A
MOV CLK_RAM-3,A
INC S_BUF
INC RING_NUMB
CJNE A,#60H,T0_30 ; T0_20
SETB M_BIT
MOV CLK_RAM-3,#00H
MOV A,CLK_RAM-4 ; 1BH M
ADD A,#01H
DA A
MOV CLK_RAM-4,A
CJNE A,#60H,T0_30 ; T0_20
MOV CLK_RAM-4,#00H
MOV A,CLK_RAM-5 ; 1AH H
ADD A,#01H
DA A
MOV CLK_RAM-5,A
CJNE A,#24H,T0_30 ; T0_20
MOV CLK_RAM-5,#00H
T0_30: JNB T_DISP,T0_50
MOV R1,#CLK_RAM-5 ;
ACALL F_DISP
MOV A,DISP_BUF+1
CJNE A,#3FH,T0_33
MOV DISP_BUF+1,#00H
T0_33: MOV A,DISP_BUF+4
CJNE A,#3FH,T0_50
MOV DISP_BUF+4,#00H
T0_50: MOV A,R2
ORL A,JD_BYTE
ACALL DISP
MOV A,R3
MOV R0,A
JNB FLASH,T0_55
JB BIT_05S,T0_55
ADD A,#05H
MOV R0,A
T0_55: MOV A,@R0
INC R3
ACALL DISP
CLR DISP_LOAD ; 92H
NOP
NOP
SETB DISP_LOAD ; 92H
MOV A,R2
CJNE A,#10H,T0_66
MOV R2,#01H ; 0AH
MOV R3,#DISP_BUF ; 0BH
SJMP T0_99
T0_66: RL A
MOV R2,A
T0_99: POP PSW
POP ACC
RETI
DISP: MOV R7,#08H
DISP_LP: CLR DISP_CLK ; 91H
MOV C,ACC.7
MOV DISP_DAT,C ; 90H
NOP
SETB DISP_CLK ; 91H
RL A
DJNZ R7,DISP_LP
RET
; ********************************************************************
;*********************************************************************
MAIN_IN: MOV R0,#7FH
MAIN_CLR: MOV @R0,#00H
DJNZ R0,MAIN_CLR
MOV SP,#SSPP ; 67H
ACALL S_WRSR ; X25045 RESET TIME IS 1.4S
; ACALL READ_8583
SETB T_DISP
MOV CLK_RAM-5,#12H ;
MOV CLK_RAM-4,#34H ;
MOV R1,#CLK_RAM-5
ACALL M_INIT
MAIN_LP: CPL CS_W
JBC M_BIT,MAIN_FX ; FEN BH GOTO MAIN_LP
MOV A,RING_NUMB
CLR C
SUBB A,#S_NUMB
JC MAIN_LPB
SETB RING ; OFF RING
MAIN_LPB: JNB FLASH,MAIN_LPK
MOV A,S_BUF
CLR C
SUBB A,#W_TIME ; WAIT 8S
JC MAIN_LPK
CLR S_FLASH
SETB T_DISP
CLR FLASH
CLR F_END
MAIN_LPK: ACALL IN_KEY ; 有键 GOTO 键处理
JZ MAIN_LP
ACALL CL_KEY
AJMP MAIN_LP
; *******************************************************************
MAIN_FX: MOV PSW,#10H
MOV V_BYTEH,CLK_RAM-5 ; H
MOV V_BYTEL,CLK_RAM-4 ; L
MOV R5,#00H ; EEPROM ADDRS
MOV LING,#10H ; DATA_LENGTH
MOV R0,#FX_BUF ; RAM ADDRS
ACALL READ_SEROM
MOV R7,#04 ; ON_OFF NUMB
MOV R0,#FX_BUF ; DATA ADDRS
FX_ON_OFF: MOV A,@R0
INC R0
CJNE A,V_BYTEH,FX_P1
MOV A,@R0
CJNE A,V_BYTEL,FX_P1
CLR LAMP ; ON LAMP
SJMP FX_RING
FX_P1: INC R0
MOV A,@R0
INC R0
CJNE A,V_BYTEH,FX_P5
MOV A,@R0
CJNE A,V_BYTEL,FX_P5
SETB LAMP ; OFF LAMP
SJMP FX_RING
FX_P5: INC R0
DJNZ R7,FX_ON_OFF
FX_RING: MOV R5,#10H ; EEPROM ADDRS
MOV R1,#02H
FX_RINGA: MOV LING,#10H
MOV R0,#FX_BUF
ACALL READ_SEROM
MOV R7,#08H
MOV R0,#FX_BUF
FX_RING1: MOV A,@R0
INC R0
CJNE A,V_BYTEH,FX_PR1
MOV A,@R0
CJNE A,V_BYTEL,FX_P1
CLR RING ; ON RING
MOV RING_NUMB,#00H
SJMP FX_END
FX_PR1: INC R0
DJNZ R7,FX_RING1
MOV A,R5
ADD A,#10H ; EEPROM ADDRS
MOV R5,A
DJNZ R1,FX_RINGA
FX_END: MOV PSW,#00H
AJMP MAIN_LP
; ********************************************************************

今番良晤,豪兴非浅,他日网络相逢,再当把酒言欢.咱们就此别过!