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

📄 4.sdi

📁 我的大学单片机课程案例和ppt
💻 SDI
字号:
,,,        ORG     0h
0000,01 30,,        AJMP    START
,,,        ORG     30h
0030,75 90 BF,START,START:  MOV     P1,#10111111B
0033,75 A0 FF,SCANK,SCANK:  MOV     P2,#0FFH
0036,C2 A3,,        CLR     P2.3    ;P2.3清0,扫描第1行
0038,E5 A0,,        MOV     A,P2    ;读键盘至A
003A,54 07,,        ANL     A,#00000111B
003C,64 07,,        XRL     A,#00000111B;判断A的低三位是否为1
003E,60 21,,        JZ      SCANL2  ;如果低三位为1,则无按键,转第二行扫描  LCALL   DELAY10MS;延时10ms(去抖延时)
0040,E5 A0,,        MOV     A,P2    ;读键盘至A
0042,54 07,,        ANL     A,#00000111B
0044,64 07,,        XRL     A,#00000111B;判断A的低三位是否为1
0046,60 19,,        JZ      SCANL2  ;如果低三位为1,则无按键,转第二行扫描
0048,E5 A0,,        MOV     A,P2    ;读键盘至A
004A,54 07,,        ANL     A,#00000111B;保留低三位的结果
004C,B4 06 05,,        CJNE    A,#00000110B,NOK0;不是K0键,转NOK0
004F,74 00,,        MOV     A,#0    ;是K0键将A赋值为0
0051,02 00 CC,,        LJMP    DISPLAY ;转显示子程序
0054,B4 05 05,NOK0,NOK0:   CJNE    A,#00000101B,NOK1;不是K1键,转NOK1
0057,74 01,,        MOV     A,#1    ;是K1键将A赋值为1
0059,02 00 CC,,        LJMP    DISPLAY ;转显示子程序
005C,74 02,NOK1,NOK1:   MOV     A,#2    ; 不是K0、K1,则一定是K2。将A赋值为2
005E,02 00 CC,,        LJMP    DISPLAY
0061,75 A0 FF,,SCANL2 :MOV     P2,#0FFH
0064,C2 A4,,        CLR     P2.4    ;P2.4清0,扫描第2行
0066,E5 A0,,        MOV     A,P2    ;读键盘至A
0068,54 07,,        ANL     A,#00000111B
006A,64 07,,        XRL     A,#00000111B;判断A的低三位是否为1
006C,60 21,,        JZ      SCANL3  ;如果低三位为1,则无按键,转第三行扫描  LCALL   DELAY10MS;延时10ms(去抖延时)
006E,E5 A0,,        MOV     A,P2    ;读键盘至A
0070,54 07,,        ANL     A,#00000111B
0072,64 07,,        XRL     A,#00000111B;判断A的低三位是否为1
0074,60 19,,        JZ      SCANL3  ;如果低三位为1,则无按键,转第三行扫描
0076,E5 A0,,        MOV     A,P2    ;读键盘至A
0078,54 07,,        ANL     A,#00000111B;保留低三位的结果
007A,B4 06 05,,        CJNE    A,#00000110B,NOK3;不是K3键,转NOK3
007D,74 03,,        MOV     A,#3    ;是K3键将A赋值为3
007F,02 00 CC,,        LJMP    DISPLAY ;转显示子程序
0082,B4 05 05,NOK3,NOK3:   CJNE    A,#00000101B,NOK4;不是K4键,转NOK4
0085,74 04,,        MOV     A,#4    ;是K4键将A赋值为4
0087,02 00 CC,,        LJMP    DISPLAY ;转显示子程序
008A,74 05,NOK4,NOK4:   MOV     A,#5    ; 不是K3、K4,则一定是K5。将A赋值为5
008C,02 00 CC,,        LJMP    DISPLAY
008F,75 A0 FF,,SCANL3 :        MOV     P2,#0FFH
0092,C2 A5,,        CLR     P2.5    ;P2.5清0,扫描第3行
0094,E5 A0,,        MOV     A,P2    ;读键盘至A
0096,54 07,,        ANL     A,#00000111B
0098,64 07,,        XRL     A,#00000111B;判断A的低三位是否为1
009A,60 24,,        JZ      SCANLOOP;如果低三位为1,则无按键,转SCANLOOP
009C,12 00 C3,,        LCALL   DELAY10MS;延时10ms(去抖延时)
009F,E5 A0,,        MOV     A,P2    ;读键盘至A
00A1,54 07,,        ANL     A,#00000111B
00A3,64 07,,        XRL     A,#00000111B;判断A的低三位是否为1
00A5,60 19,,        JZ      SCANLOOP;如果低三位为1,则无按键,转SCANLOOP
00A7,E5 A0,,        MOV     A,P2    ;读键盘至A
00A9,54 07,,        ANL     A,#00000111B;保留低三位的结果
00AB,B4 06 05,,        CJNE    A,#00000110B,NOK6;不是K6键,转NOK6
00AE,74 06,,        MOV     A,#6    ;是K6键将A赋值为6
00B0,02 00 CC,,        LJMP    DISPLAY ;转显示子程序
00B3,B4 05 05,NOK6,NOK6:   CJNE    A,#00000101B,NOK7;不是K7键,转NOK7
00B6,74 07,,        MOV     A,#7    ;是K7键将A赋值为7
00B8,02 00 CC,,        LJMP    DISPLAY ;转显示子程序
00BB,74 08,NOK7,NOK7:   MOV     A,#8    ; 不是K6、K7,则一定是K8。将A赋值为8
00BD,02 00 CC,,        LJMP    DISPLAY
00C0,,SCANLOOP,SCANLOOP:
00C0,02 00 33,,        LJMP    SCANK
00C3,,DELAY10MS,DELAY10MS:
00C3,7E 0A,,        MOV     R6,#10
00C5,7F FA,D1,D1:     MOV     R7,#250
00C7,DF FE,D2,D2:     DJNZ    R7,D2
00C9,DE FA,,        DJNZ    R6,D1
00CB,22,,        RET
00CC,,DISPLAY,DISPLAY:
00CC,90 00 D5,,        MOV     DPTR,#TABLE     ;将数据表TABLE的首地址赋给DPTR
00CF,93,,        MOVC    A,@A+DPTR       ;将(A+DPTR)地址中的值赋给A
00D0,F5 90,,        MOV     P1,A    ;送到P1口数码管显示
00D2,02 00 33,,        LJMP    SCANK   ;跳到SCANK,重新开始扫描
00D5,C0 F9 A4 B0,TABLE,TABLE:  DB      0C0H,0F9H,0A4H,0B0H
00D9,99 92 82 F8,,        DB      99H,92H,82H,0F8H,80H
000E,,,        END

⌨️ 快捷键说明

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