📄 7279a_p1.a51
字号:
;********************************************************
; RAM 定义
;********************************************************
VAR1 SEGMENT DATA
RSEG VAR1
BIT_COUNT: DS 1
TIMER: DS 1
TIMER1: DS 1
TEN: DS 1
DATA_IN: DS 1
DATA_OUT: DS 1
;********************************************************
; I/O 口定义
;********************************************************
DAT BIT P1.0
KEY BIT P1.1
CS BIT P1.2
CLK BIT P1.3
; FUNCTION HD7279_init (BEGIN)
PUBLIC HD7279_init
HD7279_initP SEGMENT CODE
RSEG HD7279_initP
HD7279_init: MOV P1,#10111111B
MOV TIMER,#50
START_DELAY: MOV TIMER1,#255
START_DELAY1: DJNZ TIMER1,START_DELAY1
DJNZ TIMER,START_DELAY
MOV DATA_OUT,#10100100B
CALL SEND
SETB CS
SETB KEY ;!!!!!*****P1,P2,P3口读前先置1
RET
; FUNCTION HD7279_init (END)
; FUNCTION _HD7279_disp (BEGIN)
PUBLIC _HD7279_disp
HD7279_dispP SEGMENT CODE
RSEG HD7279_dispP
_HD7279_disp: SETB CS
MOV ACC,#8
MOV B,#10000111B ;!!!!!下载数据且按方式0译码
HD7279_D_LOOP: PUSH ACC
MOV DATA_OUT,B
CALL SEND
MOV DATA_OUT,@R1
CALL SEND
DEC B
INC R1
POP ACC
DJNZ ACC,HD7279_D_LOOP
SETB CS
RET
; FUNCTION _HD7279_disp (END)
; FUNCTION _HD7279_DK (BEGIN)
PUBLIC _HD7279_DK
HD7279_DKP SEGMENT CODE
RSEG HD7279_DKP
_HD7279_DK: SETB CS
MOV DATA_OUT,#10001000B
CALL SEND
MOV DATA_OUT,R7
CALL SEND
SETB CS
RET
; FUNCTION _HD7279_DK (END)
; FUNCTION HD7279_GETKEY (BEGIN)
PUBLIC HD7279_GETKEY
HD7279_GETKEYP SEGMENT CODE
RSEG HD7279_GETKEYP
HD7279_GETKEY: SETB CS
MOV DATA_OUT,#00010101B
CALL SEND
CALL RECEIVE
SETB CS
MOV R7,DATA_IN
RET
; FUNCTION HD7279_getkey (END)
HD7279_FUNCTIONP SEGMENT CODE
RSEG HD7279_FUNCTIONP
;*****************************************************
; 发送一个字节到HD7279,高位在前
;*****************************************************
SEND: MOV BIT_COUNT,#8
CLR CS
CALL LONG_DELAY
SEND_LOOP: MOV ACC,DATA_OUT
MOV C,ACC.7
;MOV C,DATA_OUT.7
MOV DAT,C
SETB CLK
MOV A,DATA_OUT
RL A
MOV DATA_OUT,A
CALL SHORT_DELAY
CLR CLK
CALL SHORT_DELAY
DJNZ BIT_COUNT,SEND_LOOP
CLR DAT
RET
;******************************************************
; 从HD7279接收一个字节,高位在前
;******************************************************
RECEIVE: MOV BIT_COUNT,#8
SETB DAT
CALL LONG_DELAY
RECEIVE_LOOP: SETB CLK
CALL SHORT_DELAY
MOV A,DATA_IN
RL A
MOV DATA_IN,A
MOV C,DAT
MOV ACC.0,C
MOV DATA_IN,ACC
;MOV DATA_IN.0,C
CLR CLK
CALL SHORT_DELAY
DJNZ BIT_COUNT,RECEIVE_LOOP
CLR DAT
RET
;*******************************************************
; 延时子程序
;*******************************************************
LONG_DELAY: MOV TIMER,#25
DELAY_LOOP: DJNZ TIMER,DELAY_LOOP
RET
SHORT_DELAY: MOV TIMER,#4
SHORT_LOOP: DJNZ TIMER,SHORT_LOOP
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -