⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdisp.sdi

📁 多个仿真例子
💻 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 + -