📄 7219interface.asm
字号:
;7219送led_reg开始的4个字节单元数据
DIN BIT P3.5
CLK BIT P3.4
LOAD BIT P3.3
;REN BIT P2.0
RDEN BIT P2.0
LED_REG EQU 30H;在该位置之后放置即将显示的字符,30H放置最高两位
ORG 00
AJMP INT
ORG 0003H
AJMP SERVER
INT: MOV SP,#60H
SETB EA
SETB EX0 ;MOV IE,#81H ;允许外部中断0
CLR IT0 ;低电平触发,IE0为相应标志
CLR RDEN
INIT7219:
MOV A,#0BH
MOV B,#07H
ACALL W_7219
MOV A,#09H
MOV B,#0FFH
ACALL W_7219
MOV A,#0AH
MOV B,#09H
ACALL W_7219
MOV A,#0CH
MOV B,#01H
ACALL W_7219
;---------------------------
MAIN:
ACALL DISPLAY ;显示刷新的时间如何控制??
SJMP MAIN
;--------------该函数显示8个数字-------------
DISPLAY:
MOV R0,#LED_REG
MOV R3,#01H
MOV R2,#04H
C_DISP:
ACALL CAIFEN
MOV A,R4 ;拆分后的高位
MOV B,A
MOV A,R3
ACALL W_7219
INC R3
MOV A,R5 ;拆分后的低位
MOV B,A
MOV A,R3
ACALL W_7219
INC R3
INC R0
DJNZ R2,C_DISP;共显示四个数据
RET
W_7219:
CLR LOAD
ACALL SD_7219
MOV A,B
ACALL SD_7219
SETB LOAD
RET
SD_7219:
MOV R6,#08H
C_SD:
NOP
CLR CLK
RLC A
MOV DIN,C
NOP
SETB CLK
DJNZ R6,C_SD
RET
CAIFEN:
MOV A,@R0
ANL A,#0FH
MOV R5,A
MOV A,@R0
SWAP A
ANL A,#0FH
MOV R4,A
RET
;设置标记来确定是否要更新显示
SERVER:
;读取四个数据,分次读取
SETB RDEN
PUSH PSW
PUSH ACC
MOV A,P0 ;读取数据
MOV 30H,A ;最高两位
CLR RDEN
NOP
NOP
SETB RDEN
NOP
MOV A,P0 ;读取数据
MOV 31H,A ;两位
CLR RDEN
NOP
NOP
SETB RDEN
NOP
MOV A,P0 ;读取数据
MOV 32H,A ;两位
CLR RDEN
NOP
NOP
SETB RDEN
NOP ;等待准备数据
MOV A,P0
MOV 33H,A ;两位
CLR RDEN
POP ACC
POP PSW
;NOP,负责与FPGA进行通信,读取数据
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -