📄 复件 8255_2.asm
字号:
;采用延时方式
ORG 0000H
LJMP START
ORG 0030H
START: MOV SCON,#00H ;初始化串行口方式0
LCALL QINGLING
MOV DPTR,#7FFFH ;送控制字
MOV A,#90H ;A口为输入,B口、C口为输出
MOVX @DPTR,A
CLEAR: MOV DPTR,#7FFEH ;写C口,清零
MOV A,#00H
MOVX @DPTR,A
MAIN: MOV R0,#30 ;30S,数码输出
MOV A,#81H ;L1,L8亮,倒计时
MOVX @DPTR,A
LCALL SHOW ;
MOV R1,#05 ;闪5次
SHAN1: MOV DPTR,#7FFEH ;写C口
MOV A,#41H ;L1灯亮,L7灯闪
MOVX @DPTR,A
LCALL D1S ;
MOV A,#01H ;
MOVX @DPTR,A
LCALL D1S ;
DJNZ R1,SHAN1 ;
MOV R1,#05
MOV A,#24H ;L3,L6亮,倒计时
MOVX @DPTR,A
LCALL SHOW ;
;
SHAN2: MOV DPTR,#7FFEH ;写C口
MOV A,#22H ;L6亮,L2闪
MOVX @DPTR,A
LCALL D1S ;
MOV A,#20H ;
MOVX @DPTR,A
LCALL D1S ;
DJNZ R1,SHAN2 ;
MOV R1,#05
LJMP START ;
;
SHOW: MOV A,R0 ;数码分高低位输出
MOV B,#10 ;
DIV AB ;
PUSH A ;
MOV A,B ;
LCALL DISPLAY ;
POP A
LCALL DISPLAY
LCALL D1S ;延时1s
LCALL QINGLING ;清零,R0减一,循环
DJNZ R0,SHOW
MOV R0,#30
RET
QINGLING:MOV R4,#04H ;清零
LOOP: MOV A,#20
LCALL DISPLAY
DJNZ R4,LOOP
RET
;显示
DISPLAY:MOV DPTR,#TABLE ;查表
MOVC A,@A+DPTR ;查表
MOV SBUF,A ;输出
DELAY: JNB TI,DELAY ;八个字节是否发送完
CLR TI ;清标志位
RET
D1S: MOV R7,#010 ;1S延时程序
DS1: MOV R6,#200
DS2: MOV R5,#250
DS3: DJNZ R5,DS3
DJNZ R6,DS2
DJNZ R7,DS1
RET
TABLE: DB 0BBH,09H,0EAH,6BH,59H,73H,0F3H,0BH,0FBH,7BH
DB 0F1H,0B2H,0E9H,0F2H,0D2H
DB 49h,40h,0d9h,51h,60H,00H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -