📄 6.sdi
字号:
,,, ORG 0H
0000,02 00 30,, LJMP START
,,, ORG 30H
0030,75 80 FF,START,START: MOV P0,#0FFH
0033,75 A0 00,, MOV P2,#0H
0036,75 30 00,, MOV 30H,#0
0039,75 31 00,, MOV 31H,#0
003C,75 32 00,, MOV 32H,#0
003F,75 33 00,, MOV 33H,#0
0042,90 00 E9,, MOV DPTR,#TABLE ;将数据表TABLE的首地址赋给DPTR
0045,,DISAGAIN,DISAGAIN:
0045,7C 04,, MOV R4,#4
0047,79 30,, MOV R1,#30H
0049,7A 10,, MOV R2,#00010000B
,,,
004B,75 90 FF,DISLOOP,DISLOOP:MOV P1,#0FFH
004E,C2 92,, CLR P1.2 ;P1.2清0,扫描第1行
0050,E5 90,, MOV A,P1 ;读键盘至A
0052,54 03,, ANL A,#00000011B
0054,64 03,, XRL A,#00000011B;判断A的低二位是否为1
0056,60 30,, JZ SCANL2 ;如果低二位为1,则无按键,转第二行扫描
0058,12 00 D7,, LCALL DELAY10MS;延时10ms(去抖延时)
005B,E5 90,, MOV A,P1 ;读键盘至A
005D,54 03,, ANL A,#00000011B
005F,64 03,, XRL A,#00000011B;判断A的低二位是否为1
0061,60 25,, JZ SCANL2 ;如果低二位为1,则无按键,转第二行扫描
0063,E5 90,, MOV A,P1 ;读键盘至A
0065,54 03,, ANL A,#00000011B;保留低二位的结果
0067,B4 02 0F,, CJNE A,#00000010B,NOK0;不是K0键,转NOK0
006A,75 30 02,, MOV 30H,#2 ;是K0键将30H地址赋值为2
006D,75 31 03,, MOV 31H,#3 ;将31H地址赋值为3
0070,75 32 02,, MOV 32H,#2 ;是将32H地址赋值为2
0073,75 33 03,, MOV 33H,#3 ;将33H地址赋值为3
0076,02 00 C2,, LJMP DISPLAY ;转显示子程序
0079,75 30 08,NOK0,NOK0: MOV 30H,#8 ;不是K0键,则一定是K1。将30H地址赋值为8
007C,75 31 09,, MOV 31H,#9 ;将31H地址赋值为9
007F,75 32 08,, MOV 32H,#8 ;将32H地址赋值为2
0082,75 33 09,, MOV 33H,#9 ;将33H地址赋值为3
0085,02 00 C2,, LJMP DISPLAY ;转显示子程序
0088,75 90 FF,,SCANL2 :MOV P1,#0FFH
008B,C2 93,, CLR P1.3 ;P1.3清0,扫描第2行
008D,E5 90,, MOV A,P1 ;读键盘至A
008F,54 03,, ANL A,#00000011B
0091,64 03,, XRL A,#00000011B;判断A的低二位是否为1
0093,60 2D,, JZ DISPLAY ;如果低二位为1,则无按键,转DISPLAY
0095,12 00 D7,, LCALL DELAY10MS;延时10ms(去抖延时)
0098,E5 90,, MOV A,P1 ;读键盘至A
009A,54 03,, ANL A,#00000011B
009C,64 03,, XRL A,#00000011B;判断A的低二位是否为1
009E,60 22,, JZ DISPLAY ;如果低二位为1,则无按键,转DISPLAY
00A0,E5 90,, MOV A,P1 ;读键盘至A
00A2,54 03,, ANL A,#00000011B;保留低二位的结果
00A4,B4 02 0F,, CJNE A,#00000010B,NOK2;不是K2键,转NOK2
00A7,75 30 06,, MOV 30H,#6 ;是K2键将30H地址赋值为6
00AA,75 31 08,, MOV 31H,#8 ; 将31H地址赋值为8
00AD,75 32 06,, MOV 32H,#6 ;将32H地址赋值为6
00B0,75 33 08,, MOV 33H,#8 ; 将33H地址赋值为8
00B3,02 00 C2,, LJMP DISPLAY ;转显示子程序
00B6,75 30 07,NOK2,NOK2: MOV 30H,#7 ;不是K2,则一定是K3。将30H地址赋值为7
00B9,75 31 07,, MOV 31H,#7 ;将31H地址赋值为7
00BC,75 32 01,, MOV 32H,#1 ;将32H地址赋值为1
00BF,75 33 01,, MOV 33H,#1 ; 将33H地址赋值为1
00C2,,DISPLAY,DISPLAY:
00C2,E7,, MOV A,@R1 ;
00C3,93,, MOVC A,@A+DPTR ;将(A+DPTR)地址中的值赋给A
00C4,8A A0,, MOV P2,R2 ;选择数码管
00C6,F5 80,, MOV P0,A ;送到P0口数码管显示
00C8,12 00 E0,, LCALL DELAY ;显示延时
00CB,EA,, MOV A,R2 ;R2的值移位
00CC,23,, RL A
00CD,FA,, MOV R2,A
00CE,09,, INC R1
00CF,DC 03,, DJNZ R4,DD
00D1,02 00 45,, LJMP DISAGAIN ;重新开始扫描
00D4,02 00 4B,DD,DD: LJMP DISLOOP
00D7,,DELAY10MS,DELAY10MS:
00D7,7E 14,, MOV R6,#20
00D9,7F C8,D1,D1: MOV R7,#200
00DB,DF FE,D2,D2: DJNZ R7,D2
00DD,DE FA,, DJNZ R6,D1
00DF,22,, RET
00E0,,DELAY,DELAY:
00E0,7E 14,, MOV R6,#20
00E2,7F 64,D3,D3: MOV R7,#100
00E4,DF FE,D4,D4: DJNZ R7,D4
00E6,DE FA,, DJNZ R6,D3
00E8,22,, RET
00E9,C0 F9 A4 B0,TABLE,TABLE: DB 0C0H,0F9H,0A4H,0B0H ;0,1,2,3
00ED,99 92 82 F8,, DB 99H,92H,82H,0F8H,80H,90H ;4,5,6,7,8,9
000E,,, END
,,,
,,,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -