📄 hd7279.asm
字号:
;;;;;;;;;;;;;;;;;;;;;;;
;; HD7279.ASM ;;
;;;;;;;;;;;;;;;;;;;;;;;
PROC HDWRITE,HD_WRITE,HD_READ,HD_RESET
HDWRITE:
NOP
MOV A,LED_CAL
ANL A,#03H
JNZ HDWRITE1
MOV A,LED_CAL
RR A
RR A
ANL A,#0FH
CJNE A,#0FH,HDWRITE0
LCALL HD_CLRFLASH
SJMP HDWRITE1
HDWRITE0:
ADD A,#LED_SBUF1
MOV R0,A
MOV A,LED_CAL
RR A
RR A
MOV C,ACC.3
ANL A,#07H
ORL A,#90H
MOV HD_CS1,C
CPL C
MOV HD_CS2,C
CALL HD_BWRITE
;CALL HD_SEND
;MOV A,@R0
;CALL HD_SEND
SETB HD_CS1
SETB HD_CS2
HDWRITE1:
INC LED_CAL
HDWRITE_END:
RET
HD_WRITE:
NOP
MOV R0,#LED_SBUF1
MOV R1,#00H
MOV R2,#08H
HD_WRITE_LOOP1:
MOV A,R1
ORL A,#90H
CLR HD_CS1
CALL HD_SEND
MOV A,@R0
CALL HD_SEND
INC R0
INC R1
DJNZ R2,HD_WRITE_LOOP1
SETB HD_CS1
MOV R0,#LED_SBUF9
MOV R1,#00H
MOV R2,#08H
HD_WRITE_LOOP2:
MOV A,R1
ORL A,#90H
CLR HD_CS2
CALL HD_SEND
MOV A,@R0
CALL HD_SEND
INC R0
INC R1
DJNZ R2,HD_WRITE_LOOP2
SETB HD_CS2
RET
HD_READ:
NOP
MOV A,#15H
CLR HD_CS2
CALL HD_SEND
CALL HD_RECEIVE
SETB HD_CS2
RET
HD_RESET:
NOP
MOV A,#0A4H
CLR HD_CS1
CALL HD_SEND
SETB HD_CS1
MOV A,#0A4H
CLR HD_CS2
CALL HD_SEND
SETB HD_CS2
RET
;HD_TEST:
; NOP
; MOV A,#0BFH
; CALL HD_SEND
; SETB HD_CS1
; RET
;HD_LEFT:
; NOP
; MOV A,#0A3H
; CALL HD_SEND
; SETB HD_CS1
; RET
;HD_RIGHT:
; NOP
; MOV A,#0A2H
; CALL HD_SEND
; SETB HD_CS1
; RET
;HD_HIDE: ;;INPUT: A (HIDE BIT)
; NOP
; PUSH A
; MOV A,#98H
; CALL HD_SEND
; POP A
; CALL HD_SEND
; SETB HD_CS1
; RET
;HD_FLASH: ;;INPUT: A (FLASH BIT)
; NOP
; PUSH A
; MOV A,#88H
; CALL HD_SEND
; POP A
; CALL HD_SEND
; SETB HD_CS1
; RET
HD_CLRFLASH:
NOP
CLR HD_CS1
MOV A,#88H
CALL HD_SEND
MOV A,#0FFH
CALL HD_SEND
SETB HD_CS1
CLR HD_CS2
MOV A,#88H
CALL HD_SEND
MOV A,#0FFH
CALL HD_SEND
SETB HD_CS2
RET
HD_BWRITE:
NOP
PUSH 01H
MOV R1,#08H
CALL DELAY_50US
CLR C
HD_BWRITE_LOOP1:
RLC A
MOV HD_DATA,C
SETB HD_CLK
CALL DELAY_8US
CLR HD_CLK
CALL DELAY_8US
DJNZ R1,HD_BWRITE_LOOP1
CLR HD_DATA
MOV A,@R0
MOV R1,#08H
;CALL DELAY_50US
CLR C
HD_BWRITE_LOOP2:
RLC A
MOV HD_DATA,C
SETB HD_CLK
CALL DELAY_8US
CLR HD_CLK
CALL DELAY_8US
DJNZ R1,HD_BWRITE_LOOP2
CLR HD_DATA
POP 01H
RET
HD_SEND: ;;INPUT: A
NOP
XCH A,R0
PUSH A
MOV A,R0
MOV R0,#08H
; CLR HD_CS1
CALL DELAY_50US
CLR C
HD_SEND_LOOP:
RLC A
MOV HD_DATA,C
SETB HD_CLK
CALL DELAY_8US
CLR HD_CLK
CALL DELAY_8US
DJNZ R0,HD_SEND_LOOP
CLR HD_DATA
POP A
MOV R0,A
RET
HD_RECEIVE: ;;OUTPUT: A
NOP
MOV A,R0
PUSH A
MOV R0,#08H
SETB HD_DATA
CALL DELAY_50US
HD_RECEIVE_LOOP:
SETB HD_CLK
CALL DELAY_8US
MOV C,HD_DATA
RLC A
CLR HD_CLK
CALL DELAY_8US
DJNZ R0,HD_RECEIVE_LOOP
CLR HD_DATA
XCH A,R0
POP A
XCH A,R0
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY_50US: ;50US
NOP
PUSH B
MOV B,#32H
DELAY_50US1:
NOP
DJNZ B,DELAY_50US1
POP B
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY_8US:
NOP
PUSH B
MOV B,#06H
DELAY_8US1:
NOP
DJNZ B,DELAY_8US1
POP B
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -