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

📄 ddisp.sdi

📁 多个仿真例子
💻 SDI
字号:
,,,;该程序实现在六个数码管上显示123456,显示停留5秒钟
,,,;然后以0.5秒为间隔闪动5次,不断循环。
,,,;显示方式为动态显示
,,,LED1    EQU     8000H   ;数码管段驱动器的地址
,,,LED2    EQU     9000H   ;数码管位驱动器的地址
,,,BUFFER  EQU     30H     ;显示缓冲区首地址
,,,FLASH   BIT     00H     ;闪烁标志
,,,        ORG     0
0000,02 00 30,,        LJMP    START
,,,        ORG     0BH
000B,02 00 5F,,        LJMP    DISP
,,,        ORG     30H
0030,75 81 60,START,START:  MOV     SP,#60H
0033,75 89 01,,        MOV     TMOD,#01H       ;设T0为方式1
0036,75 8C D8,,        MOV     TH0,#0D8H       ;10ms定时初值
0039,75 8A F0,,        MOV     TL0,#0F0H
003C,D2 A9,,        SETB    ET0             ;允许T0中断
003E,D2 AF,,        SETB    EA              ;开CPU总中断
0040,D2 8C,,        SETB    TR0             ;启动T0计数
0042,D2 00,,        SETB    FLASH           ;使显示常亮
0044,78 30,,        MOV     R0,#BUFFER
0046,7A 06,,        MOV     R2,#6           ;显示缓冲区单元数
0048,74 01,,        MOV     A,#1
004A,F6,LOOP1,LOOP1:  MOV     @R0,A           ;给显示缓冲区赋值
004B,04,,        INC     A
004C,08,,        INC     R0
004D,DA FB,,        DJNZ    R2,LOOP1
004F,12 00 DC,LOOP,LOOP:   LCALL   DELAY5S         ;延时5秒钟
0052,7B 0A,,        MOV     R3,#10          ;闪烁10次
0054,12 00 CD,LL1,LL1:    LCALL   DELAY           ;延时0.5秒
0057,B2 00,,        CPL     FLASH           ;闪烁标志取反实现显示的闪烁
0059,DB F9,,        DJNZ    R3,LL1
005B,D2 00,,        SETB    FLASH           ;闪烁标志置1,实现显示常亮
005D,80 F0,,        SJMP    LOOP
,,,;T0中断服务程序,实现每10ms一次的定时动态显示功能
,,,;当FLASH标志为1时,将显示缓冲区的16进制数显示出来
,,,;当FLASH标志为0时,熄灭所有显示器
,,,;使用寄存器为A、R0-R6和DPTR
005F,C0 D0,DISP,DISP:   PUSH    PSW
0061,C0 E0,,        PUSH    ACC
0063,C0 83,,        PUSH    DPH
0065,C0 82,,        PUSH    DPL
0067,D2 D3,,        SETB    RS0             ;选择1区工作寄存器
0069,C2 D4,,        CLR     RS1
006B,C2 8C,,        CLR     TR0             ;停止T0计数
006D,75 8C D8,,        MOV     TH0,#0D8H       ;10ms定时初值
0070,75 8A F0,,        MOV     TL0,#0F0H
0073,D2 8C,,        SETB    TR0             ;启动T0计数
0075,78 30,,        MOV     R0,#BUFFER
0077,79 FE,,        MOV     R1,#0FEH        ;位码初值
0079,7A 06,,        MOV     R2,#6           ;一共有6个数码管
007B,90 80 00,,        MOV     DPTR,#LED1      ;送数码管段驱动器地址
007E,AB 83,,        MOV     R3,DPH          ;存段驱动器地址
0080,AC 82,,        MOV     R4,DPL
0082,90 90 00,,        MOV     DPTR,#LED2      ;送数码管位驱动器地址
0085,AD 83,,        MOV     R5,DPH          ;存位驱动器地址
0087,AE 82,,        MOV     R6,DPL
0089,30 00 21,,        JNB     FLASH,DISP2     ;若闪烁标志为0,则转移
008C,E6,DISP1,DISP1:  MOV     A,@R0           ;取要显示数据
008D,90 00 B6,,        MOV     DPTR,#TAB       ;指向显示段码的码表
0090,93,,        MOVC    A,@A+DPTR       ;查表将需要显示的数据变换为显示段码
0091,8B 83,,        MOV     DPH,R3          ;恢复段驱动器地址
0093,8C 82,,        MOV     DPL,R4
0095,F0,,        MOVX    @DPTR,A         ;段码送数码管段驱动器
0096,E9,,        MOV     A,R1            ;取显示位码
0097,8D 83,,        MOV     DPH,R5          ;恢复位驱动器地址
0099,8E 82,,        MOV     DPL,R6
009B,F0,,        MOVX    @DPTR,A         ;点亮一个数码管
009C,23,,        RL      A               ;指向下一位数码管
009D,F9,,        MOV     R1,A            ;存位码
009E,08,,        INC     R0              ;指向下一个要显示的数据
009F,12 00 C6,,        LCALL   D1MS            ;点亮数码管1ms
00A2,DA E8,,        DJNZ    R2,DISP1        ;没有显示完则继续
00A4,D0 82,DISP3,DISP3:  POP     DPL
00A6,D0 83,,        POP     DPH
00A8,D0 E0,,        POP     ACC
00AA,D0 D0,,        POP     PSW
00AC,32,,        RETI
00AD,8D 83,DISP2,DISP2:  MOV     DPH,R5          ;恢复位驱动器地址
00AF,8E 82,,        MOV     DPL,R6
00B1,74 FF,,        MOV     A,#0FFH
00B3,F0,,        MOVX    @DPTR,A         ;熄灭数码管
00B4,80 EE,,        SJMP    DISP3
00B6,3F 06 5B 4F,TAB,TAB:    DB      3FH,06H,5BH,4FH,66H,6DH,7DH,07H
00BE,7F 6F 77 7C,,        DB      7FH,6FH,77H,7CH,39H,5EH,79H,71H
,,,;延时1ms子程序
,,,;使用寄存器R7
00C6,7F FA,D1MS,D1MS:   MOV     R7,#250
00C8,00,D1MS1,D1MS1:  NOP
00C9,00,,        NOP
00CA,DF FC,,        DJNZ    R7,D1MS1
00CC,22,,        RET
,,,;延时0.5秒子程序
,,,;使用寄存器:R5、R6和R7
00CD,7D 02,DELAY,DELAY:  MOV     R5,#2           ;延时0.5秒子程序
00CF,7E FA,D1,D1:     MOV     R6,#250
00D1,7F FA,D2,D2:     MOV     R7,#250
00D3,00,D3,D3:     NOP
00D4,00,,        NOP
00D5,DF FC,,        DJNZ    R7,D3
00D7,DE F8,,        DJNZ    R6,D2
00D9,DD F4,,        DJNZ    R5,D1
00DB,22,,        RET
,,,;延时5秒子程序
,,,;使用寄存器:R4
00DC,7C 0A,DELAY5S,DELAY5S:MOV     R4,#10          ;延时5秒子程序
00DE,12 00 CD,DD1,DD1:    LCALL   DELAY
00E1,DC FB,,        DJNZ    R4,DD1
00E3,22,,        RET
000E,,,        END
,,,
,,,
,,,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -