📄 sdisp.sdi
字号:
,,,;该程序实现在三个数码管上显示123,显示停留5秒钟
,,,;然后以0.5秒为间隔闪动5次,不断循环。
,,,;采用静态显示方式
,,,LED EQU 8000H ;左边第1个数码管的地址
,,,BUFFER EQU 30H ;显示缓冲区首地址
,,,FLASH BIT 00H ;闪烁标志
,,, ORG 0
0000,02 00 30,, LJMP START
,,, ORG 30H
0030,75 81 60,START,START: MOV SP,#60H
0033,D2 00,, SETB FLASH ;使显示常亮
0035,78 30,, MOV R0,#BUFFER
0037,7A 03,, MOV R2,#3 ;给显示缓冲区的单元数
0039,74 01,, MOV A,#1
003B,F6,LOOP1,LOOP1: MOV @R0,A ;给显示缓冲区赋值
003C,04,, INC A
003D,08,, INC R0
003E,DA FB,, DJNZ R2,LOOP1
0040,12 00 56,LOOP,LOOP: LCALL DISP ;显示数据
0043,12 00 A2,, LCALL DELAY5S ;延时5秒钟
0046,7B 0A,, MOV R3,#10 ;闪烁10次
0048,12 00 56,LL1,LL1: LCALL DISP
004B,12 00 93,, LCALL DELAY ;延时0.5秒
004E,B2 00,, CPL FLASH ;闪烁标志取反实现显示的闪烁
0050,DB F6,, DJNZ R3,LL1
0052,D2 00,, SETB FLASH ;闪烁标志置1,实现显示常亮
0054,80 EA,, SJMP LOOP
,,,;显示子程序
,,,;当FLASH标志为1时,将显示缓冲区的16进制数显示出来
,,,;当FLASH标志为0时,熄灭所有显示器
,,,;使用寄存器为A、R0、R2和DPTR
0056,78 30,DISP,DISP: MOV R0,#BUFFER
0058,7A 03,, MOV R2,#3 ;一共有3个数码管
005A,90 80 00,, MOV DPTR,#LED ;送数码管地址
005D,30 00 18,, JNB FLASH,DISP2 ;若闪烁标志为0,则转移
0060,C0 83,DISP1,DISP1: PUSH DPH ;保护数码管地址
0062,C0 82,, PUSH DPL
0064,E6,, MOV A,@R0
0065,90 00 83,, MOV DPTR,#TAB ;指向显示段码的码表
0068,93,, MOVC A,@A+DPTR ;查表将需要显示的数据变换为显示段码
0069,D0 82,, POP DPL
006B,D0 83,, POP DPH
006D,F0,, MOVX @DPTR,A ;段码送数码管显示
006E,08,, INC R0 ;指向下一个要显示的数据
006F,E5 83,, MOV A,DPH
0071,24 10,, ADD A,#10H
0073,F5 83,, MOV DPH,A ;指向下一个数码管
0075,DA E9,, DJNZ R2,DISP1 ;没有显示完则继续
0077,22,, RET
0078,E4,DISP2,DISP2: CLR A
0079,F0,, MOVX @DPTR,A ;熄灭数码管
007A,E5 83,, MOV A,DPH
007C,24 10,, ADD A,#10H
007E,F5 83,, MOV DPH,A ;指向下一个数码管
0080,DA F6,, DJNZ R2,DISP2
0082,22,, RET
0083,3F 06 5B 4F,TAB,TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
008B,7F 6F 77 7C,, DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
,,,;延时0.5秒子程序
,,,;使用寄存器:R5、R6和R7
0093,7D 02,DELAY,DELAY: MOV R5,#2 ;延时0.5秒子程序
0095,7E FA,D1,D1: MOV R6,#250
0097,7F FA,D2,D2: MOV R7,#250
0099,00,D3,D3: NOP
009A,00,, NOP
009B,DF FC,, DJNZ R7,D3
009D,DE F8,, DJNZ R6,D2
009F,DD F4,, DJNZ R5,D1
00A1,22,, RET
,,,;延时5秒子程序
,,,;使用寄存器:R4
00A2,7C 0A,DELAY5S,DELAY5S:MOV R4,#10 ;延时5秒子程序
00A4,12 00 93,DD1,DD1: LCALL DELAY
00A7,DC FB,, DJNZ R4,DD1
00A9,22,, RET
000E,,, END
,,,
,,,
,,,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -