ORG 0000H
lJMP START ;檢測到按鍵并顯示
ORG 0100H
BIT_COUNT DATA 07FH
TIMER DATA 07EH
TIMER1 DATA 07DH
TEN DATA 07CH
DATA_IN DATA 020H
DATA_OUT DATA 021H
DAT BIT P1.2 ;HD7279A DATA P1.2
KEY BIT P1.3 ;HD7279A KEY P1.3
CS BIT P1.0 ;HD7279A CS P1.4
CLK BIT P1.1 ;HD7279A CLK P1.5
START: MOV SP,#2FH ;
MOV TIMER,#50 ; 25MS
START_DELAY: MOV TIMER1,#255
START_DELAY1:DJNZ TIMER1,START_DELAY1
DJNZ TIMER,START_DELAY
MOV P1,#70H
MOV 29H,#0A4H ; ( )復位
CALL SEND
SETB CS ; CS
MAIN: mov c,p1.4
JC MAIN ;
MOV 29H,#15H ;
CALL SEND
CALL RECEIVE
DISP:MOV 29H,#0C8H
ACALL SEND
MOV 29H,28H
ACALL SEND
SJMP DISP
SEND:CLR P1.7
MOV R3,#08H
ACALL LONG
SEND_LOOP:MOV C,29H.7
MOV P1.6,C
SETB P1.5
ACALL SHORT
CLR P1.5
ACALL SHORT
MOV A,29H
RL A
MOV 29H,A
DJNZ R3,SEND_LOOP
CLR P1.6
RET
;*******************************************
; HD7279
;*******************************************
RECEIVE: MOV BIT_COUNT,#8 ; =8
SETB DAT ; P1.2(DATA)
CALL LONG ;
RECEIVE_LOOP: SETB CLK ; CLK
CALL SHORT ;
MOV A,28H ;
RL A
MOV 28H,A
MOV C,DAT ;
MOV 28H.0,C
CLR CLK ; CLK
CALL SHORT
DJNZ BIT_COUNT,RECEIVE_LOOP; 8
CLR DAT ; DAT ( )
RET
;*******************************************
;*******************************************
LONG: MOV TIMER,#25 ; 50uS
DELAY_LOOP: DJNZ TIMER,DELAY_LOOP
RET
SHORT: MOV TIMER,#4 ; 8uS
SHORT_LP: DJNZ TIMER,SHORT_LP
RET
END
|