?? number input.lst
字號:
A51 MACRO ASSEMBLER NUMBER_INPUT 08/05/2006 09:15:51 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN Number Input.OBJ
ASSEMBLER INVOKED BY: e:\Program Files\Keil\C51\BIN\A51.EXE Number Input.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;**************************************
2 ;以下8個存儲單元分別存放8位數碼管的段碼
0030 3 LED_BIT_1 EQU 30H
0031 4 LED_BIT_2 EQU 31H
0032 5 LED_BIT_3 EQU 32H
0033 6 LED_BIT_4 EQU 33H
0034 7 LED_BIT_5 EQU 34H
0035 8 LED_BIT_6 EQU 35H
0036 9 LED_BIT_7 EQU 36H
0037 10 LED_BIT_8 EQU 37H
0038 11 T_COUNT EQU 38H
0039 12 KEY_CNT EQU 39H
003A 13 LINE EQU 3AH
003B 14 ROW EQU 3BH
003C 15 VAL EQU 3CH
16 ;**************************************
0000 17 ORG 00H
0000 800C 18 SJMP START
000B 19 ORG 0BH
000B 020114 20 LJMP INT_T0
000E 753800 21 START: MOV T_COUNT,#00H ;初始化
0011 753900 22 MOV KEY_CNT,#00H
0014 753A00 23 MOV LINE,#00H
0017 753B00 24 MOV ROW,#00H
001A 753C00 25 MOV VAL,#00H
001D 753000 26 MOV LED_BIT_1,#00H
0020 753100 27 MOV LED_BIT_2,#00H
0023 753200 28 MOV LED_BIT_3,#00H
0026 753300 29 MOV LED_BIT_4,#00H
0029 753400 30 MOV LED_BIT_5,#00H
002C 753500 31 MOV LED_BIT_6,#00H
002F 753600 32 MOV LED_BIT_7,#00H
0032 75373F 33 MOV LED_BIT_8,#3FH
0035 90018F 34 MOV DPTR,#TABLE
0038 120135 35 A0: LCALL DISP
36 ;**************************************
37 ;按鍵掃描
003B 75B0F0 38 LSCAN: MOV P3,#0F0H ;行碼掃描
003E 30B00C 39 L1: JNB P3.0,L2
0041 120186 40 LCALL DELAY
0044 30B006 41 JNB P3.0,L2
0047 753A00 42 MOV LINE,#00H
004A 020077 43 LJMP RSCAN
004D 30B10C 44 L2: JNB P3.1,L3
0050 120186 45 LCALL DELAY
0053 30B106 46 JNB P3.1,L3
0056 753A01 47 MOV LINE,#01H
0059 020077 48 LJMP RSCAN
005C 30B20C 49 L3: JNB P3.2,L4
005F 120186 50 LCALL DELAY
0062 30B206 51 JNB P3.2,L4
0065 753A02 52 MOV LINE,#02H
0068 020077 53 LJMP RSCAN
006B 30B3CA 54 L4: JNB P3.3,A0
006E 120186 55 LCALL DELAY
0071 30B3C4 56 JNB P3.3,A0
0074 753A03 57 MOV LINE,#03H
58
A51 MACRO ASSEMBLER NUMBER_INPUT 08/05/2006 09:15:51 PAGE 2
0077 75B00F 59 RSCAN: MOV P3,#0FH ;列碼掃描
007A 30B406 60 C1: JNB P3.4,C2
007D 753B00 61 MOV ROW,#00H
0080 02009B 62 LJMP CALCU
0083 30B506 63 C2: JNB P3.5,C3
0086 753B01 64 MOV ROW,#01H
0089 02009B 65 LJMP CALCU
008C 30B606 66 C3: JNB P3.6,C4
008F 753B02 67 MOV ROW,#02H
0092 02009B 68 LJMP CALCU
0095 30B7E2 69 C4: JNB P3.7,C1
0098 753B03 70 MOV ROW,#03H
71 ;***********************************************
009B 0539 72 CALCU: INC KEY_CNT ;統計按鍵次數
009D E539 73 MOV A,KEY_CNT
74
75
009F B4092A 76 CJNE A,#9,K1 ;如果按鍵9次,發聲提示
00A2 758901 77 MOV TMOD,#01H
00A5 758CFD 78 MOV TH0,#(65536-700)/256
00A8 758A44 79 MOV TL0,#(65536-700)MOD 256
00AB 75A882 80 MOV IE,#82H
00AE D28C 81 SETB TR0
82
00B0 E5B0 83 W10:MOV A,P3 ;等待按鍵抬起
00B2 B40F08 84 CJNE A,#0FH,W11
00B5 758000 85 MOV P0,#00H
00B8 C28C 86 CLR TR0
00BA 02000E 87 LJMP START
00BD E5B0 88 W11:MOV A,P3
00BF B4F008 89 CJNE A,#0F0H,W12
00C2 758000 90 MOV P0,#00H
00C5 C28C 91 CLR TR0
00C7 02000E 92 LJMP START
00CA 80E4 93 W12:SJMP W10
94
95 ;**************************************************
96 ;第1次按鍵,清除已顯示的0,顯示按下的數字
00CC B40122 97 K1: CJNE A,#1,K2
00CF E53A 98 MOV A,LINE
00D1 75F004 99 MOV B,#04H
00D4 A4 100 MUL AB
00D5 253B 101 ADD A,ROW
00D7 F53C 102 MOV VAL,A
00D9 93 103 MOVC A,@A+DPTR
00DA F537 104 MOV LED_BIT_8,A
00DC 120135 105 DISP1: LCALL DISP
106
00DF E5B0 107 W20:MOV A,P3 ;等待按鍵抬起
00E1 B40F03 108 CJNE A,#0FH,W21
00E4 020038 109 LJMP A0
00E7 E5B0 110 W21:MOV A,P3
00E9 B4F003 111 CJNE A,#0F0H,W22
00EC 020038 112 LJMP A0
00EF 80EB 113 W22:SJMP DISP1
114 ;***************************************************
115 ;第2到8次按鍵,移位顯示按下的數字
00F1 E53A 116 K2: MOV A,LINE
00F3 75F004 117 MOV B,#04H
00F6 A4 118 MUL AB
00F7 253B 119 ADD A,ROW
00F9 F53C 120 MOV VAL,A
00FB 93 121 MOVC A,@A+DPTR
00FC 12011D 122 LCALL SHIFT ;調用段碼移位
00FF 120135 123 DISP2: LCALL DISP
124
A51 MACRO ASSEMBLER NUMBER_INPUT 08/05/2006 09:15:51 PAGE 3
0102 E5B0 125 W30:MOV A,P3 ;等待按鍵抬起
0104 B40F03 126 CJNE A,#0FH,W31
0107 020038 127 LJMP A0
010A E5B0 128 W31:MOV A,P3
010C B4F003 129 CJNE A,#0F0H,W32
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -