主要是中间的中断部分,要详细,谢谢。回答的满意我会追加分!!!
CPORT EQU 5FFFH ;8259控制端口地址
DPORT EQU 5EFFH ??
DBUF EQU 30H
ORG 0000H
LJMP START ;主程序入口地址
ORG 0013H
LJMP INT1 ;中断处理子程序入口
START: MOV SP,#6FH ; ??
MOV DPTR,#CPORT ;8259控制端口
MOV A,#0DCH ;清除命令字
MOVX @DPTR,A
CLEAN : MOVX A,@DPTR ;读状态字
JB ACC.7,CLEAN ;判断显示RAM是否可操作
MOV A,#00H ;方式命令字
MOVX @DPTR,A
MOV A,#2AH ;分频系数
MOVX @DPTR,A
MOV R7,#6H
MOV R0,#DBUF
MOV A,#10H ;设置显示缓存区内容
===========================================================
以下部分
CDBUF: MOV @R0,A
INC R0
DJNZ R7,CDBUF
LCALL DISP ??
CLR IT1 ;IT1清0,开外中断1
NOP ;空操作
SETB EA
NOP ;空操作
SETB EX1 ;置EX1(外部中断1中断允许位)为1
NOP ;空操作
CLEAN1: LJMP CLEAN1 ;等待中断
INT1: PUSH ACC
PUSH DPH
PUSH DPL
MOV DPTR,#CPORT
MOV A,#40H ;01000000B
MOVX @DPTR,A
MOV DPTR,#DPORT
MOVX A,@DPTR
MOV R7,#6H
MOV R0,#DBUF
MOV @R0,A
LCALL DISP
LCALL L_SHIFT
POP DPL
POP DPH
POP ACC
RETI
L_SHIFT:MOV R7,#6H
MOV R0,#DBUF+4
MOV R1,#DBUF+5
NEXT0: MOV A,@R0
MOV @R1,A
DEC R0
DEC R1
DJNZ R7,NEXT0
RET
以上部分
================================================================
DISP: MOV R7,#006H
MOV DPTR,#CPORT
MOV A,#092H
MOVX @DPTR,A
MOV R0,#DBUF ;R0中存放的是缓冲区的首地址
NEXTC: MOV A,@R0
MOV DPTR,#DCODE
MOVC A,@A+DPTR
MOV DPTR,#DPORT
MOVX @DPTR,A
INC R0
DJNZ R7,NEXTC
RET ;返回
DCODE: DB 0C0H,0F9H,0A4H,0B0H ; 字型编码表
DB 099H,092H,082H,0F8H
DB 080H,090H,088H,083H
DB 0C6H,0A1H,086H,08EH,0FFH
END