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

📄 key.sdi

📁 多个仿真例子
💻 SDI
字号:
,,,KEYBUF  EQU     30H
,,,        ORG     0
0000,02 00 30,,        LJMP    START
,,,        ORG     3
0003,02 00 6F,,        LJMP    KEYSCAN
,,,        ORG     30H
0030,75 81 60,START,START:  MOV     SP,#60H
0033,D2 88,,        SETB    IT0
0035,D2 A8,,        SETB    EX0
0037,75 90 0F,,        MOV     P1,#0FH
003A,D2 AF,,        SETB    EA
003C,75 30 47,,        MOV     KEYBUF,#47H     ;将“G”送显示缓冲区,以便熄灭显示器
003F,12 00 44,LOOP,LOOP:   LCALL   DISP
0042,80 FB,,        SJMP    LOOP
,,,;显示程序
,,,;将KEYBUF单元的ASCII码送数码管显示
,,,;可以显示的ASCII码数据0-9,A-F。若ASCII码为“G”(47H)则显示熄灭
0044,E5 30,DISP,DISP:   MOV     A,KEYBUF
0046,C3,,        CLR     C
0047,94 3A,,        SUBB    A,#3AH
0049,40 06,,        JC      DISP1
004B,E5 30,,        MOV     A,KEYBUF
004D,94 37,,        SUBB    A,#37H
004F,80 04,,        SJMP    DISP2
0051,E5 30,DISP1,DISP1:  MOV     A,KEYBUF
0053,54 0F,,        ANL     A,#0FH
0055,90 00 5E,DISP2,DISP2:  MOV     DPTR,#DISP_TAB
0058,93,,        MOVC    A,@A+DPTR
0059,54 7F,,        ANL     A,#7FH
005B,F5 80,,        MOV     P0,A
005D,22,,        RET
005E,C0 F9 A4 B0,DISP_TAB,DISP_TAB:DB     0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
0066,80 90 88 83,,        DB      80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH
,,,;键盘扫描程序
,,,;键码存在KEYBUF单元,格式为ASCII码
006F,C0 D0,KEYSCAN,KEYSCAN:PUSH    PSW
0071,C0 E0,,        PUSH    ACC
0073,C0 83,,        PUSH    DPH
0075,C0 82,,        PUSH    DPL
0077,C2 D4,,        CLR     RS1
0079,D2 D3,,        SETB    RS0     ;选择1区工作寄存器
007B,12 01 00,,        LCALL   DELAY
007E,E5 90,,        MOV     A,P1
0080,F4,,        CPL     A
0081,54 0F,,        ANL     A,#0FH
0083,60 4B,,        JZ      FINISH
0085,90 00 DC,,        MOV     DPTR,#TAB
0088,75 90 EF,,        MOV     P1,#0EFH        ;扫描第一行
008B,75 90 EF,,        MOV     P1,#0EFH
008E,E5 90,,        MOV     A,P1
0090,F4,,        CPL     A
0091,54 0F,,        ANL     A,#0FH
0093,60 02,,        JZ      K1      ;第一行没键按下,则扫描第二行
0095,80 31,,        SJMP    KEND
0097,75 90 DF,K1,K1:     MOV     P1,#0DFH        ;扫描第二行
009A,75 90 DF,,        MOV     P1,#0DFH
009D,E5 90,,        MOV     A,P1
009F,F4,,        CPL     A
00A0,54 0F,,        ANL     A,#0FH
00A2,60 04,,        JZ      K2      ;第二行没键按下,则扫描第三行
00A4,24 09,,        ADD     A,#9
00A6,80 20,,        SJMP    KEND
00A8,75 90 BF,K2,K2:     MOV     P1,#0BFH        ;扫描第三行
00AB,75 90 BF,,        MOV     P1,#0BFH
00AE,E5 90,,        MOV     A,P1
00B0,F4,,        CPL     A
00B1,54 0F,,        ANL     A,#0FH
00B3,60 04,,        JZ      K3
00B5,24 12,,        ADD     A,#18
00B7,80 0F,,        SJMP    KEND
00B9,75 90 7F,K3,K3:     MOV     P1,#7FH
00BC,75 90 7F,,        MOV     P1,#7FH
00BF,E5 90,,        MOV     A,P1
00C1,F4,,        CPL     A
00C2,54 0F,,        ANL     A,#0FH
00C4,60 07,,        JZ      K4
00C6,24 1B,,        ADD     A,#27
00C8,93,KEND,KEND:   MOVC    A,@A+DPTR
00C9,F5 30,,        MOV     KEYBUF,A
00CB,80 03,,        SJMP    FINISH
00CD,75 30 47,K4,K4:     MOV     KEYBUF,#47H     ;'G'送键盘缓冲区,以便将显示器熄灭
00D0,75 90 0F,FINISH,FINISH: MOV     P1,#0FH ;为下一次扫描作准备
00D3,D0 82,,        POP     DPL
00D5,D0 83,,        POP     DPH
00D7,D0 E0,,        POP     ACC
00D9,D0 D0,,        POP     PSW
00DB,32,,        RETI
00DC,00 30 31 00,TAB,TAB:    DB      00H,30H,31H,00H,32H,00H,00H,00H,33H
00E5,00 34 35 00,,        DB      00H,34H,35H,00H,36H,00H,00H,00H,37H
00EE,00 38 39 00,,        DB      00H,38H,39H,00H,41H,00H,00H,00H,42H
00F7,00 43 44 00,,        DB      00H,43H,44H,00H,45H,00H,00H,00H,46H
0100,7E 14,DELAY,DELAY:  MOV     R6,#20
0102,7F FA,L1,L1:     MOV     R7,#250
0104,00,L2,L2:     NOP
0105,00,,        NOP
0106,DF FC,,        DJNZ    R7,L2
0108,DE F8,,        DJNZ    R6,L1
010A,22,,        RET
000E,,,        END
,,,

⌨️ 快捷键说明

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