?? keyboardscan.lst
字號:
A51 MACRO ASSEMBLER KEYBOARDSCAN 02/13/2006 15:22:41 PAGE 1
MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN keyboardscan.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE keyboardscan.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;********************************************************************************
2
3 ;********************************************************************************
4 ;* 描述: *
5 ;* 矩陣鍵盤數碼管顯示鍵值 *
6 ;* *
7 ;* 矩陣鍵盤定義: *
8 ;* P1.0-P1.3為列線,P1.4-P1.7為行線 *
9 ;* *
10 ;* *
11
12 ;********************************************************************************
13
14
0093 15 RELAY EQU P1.3
00B3 16 BEEP EQU P3.3
17 ;------------------------------------------------------
0000 18 ORG 0000H
0000 8000 19 JMP MAIN
20 ;------------------------------------------------------
0002 758160 21 MAIN: MOV SP,#60H
0005 753000 22 MOV 30H,#00H
0008 23 LOOP1:
0008 110E 24 CALL KEY_IN
000A 116A 25 CALL KEY_PLAER
000C 80FA 26 JMP LOOP1
27 ;-----------------------------------------------------
000E 7590F0 28 KEY_IN: MOV P1,#0F0H ;置列線為0,行線為1
0011 E590 29 MOV A,P1
0013 54F0 30 ANL A,#0F0H
0015 F5F0 31 MOV B,A
0017 75900F 32 MOV P1,#0FH ;置列線為1,行線為0
001A E590 33 MOV A,P1
001C 540F 34 ANL A,#0FH
001E 45F0 35 ORL A,B ;高四位與低四位重新組合
0020 B4FF01 36 CJNE A,#0FFH,KEY_IN1 ;0FFH為末按鍵
0023 22 37 RET
0024 F5F0 38 KEY_IN1: MOV B,A
0026 900059 39 MOV DPTR,#KEYTABLE
0029 7BFF 40 MOV R3,#0FFH ;
002B 0B 41 KEY_IN2: INC R3
002C EB 42 MOV A,R3
002D 93 43 MOVC A,@A+DPTR
002E B5F006 44 CJNE A,B,KEY_IN3
0031 EB 45 MOV A,R3 ;找到,取順序碼
0032 F530 46 MOV 30H,A
0034 113B 47 CALL BEEP_BL
0036 22 48 RET
0037 B4FFF1 49 KEY_IN3: CJNE A,#0FFH,KEY_IN2 ;末完,繼續查
003A 22 50 RET ;0FFH為結束碼
51 ;----------------------------------------------
52 ;蜂鳴器響一聲子程序
53 ;----------------------------------------------
003B 54 BEEP_BL:
003B 7E64 55 MOV R6,#100
003D 1148 56 BL1: CALL DEX1
003F B2B3 57 CPL BEEP
0041 DEFA 58 DJNZ R6,BL1
A51 MACRO ASSEMBLER KEYBOARDSCAN 02/13/2006 15:22:41 PAGE 2
0043 7D19 59 MOV R5,#25
0045 114E 60 CALL DELAY
0047 22 61 RET
0048 7FB4 62 DEX1: MOV R7,#180
004A 00 63 DEX2: NOP
004B DFFD 64 DJNZ R7,DEX2
004D 22 65 RET
004E 66 DELAY: ;延時R5×10MS
004E 7E32 67 MOV R6,#50
0050 7F64 68 DELAY1: MOV R7,#100
0052 DFFE 69 DJNZ R7,$
0054 DEFA 70 DJNZ R6,DELAY1
0056 DDF6 71 DJNZ R5,DELAY
0058 22 72 RET
73 ;-----------------------------------------------------
0059 74 KEYTABLE:
0059 EEEDEBE7 75 DB 0EEH,0EDH,0EBH,0E7H,0DEH ;0,1,2,3,4, 順序碼
005D DE
005E DDDBD7BE 76 DB 0DDH,0DBH,0D7H,0BEH,0BDH ;5,6,7,8,9,
0062 BD
0063 BBB77E7D 77 DB 0BBH,0B7H,07EH,07DH,07BH ;A,B,C,D,E,
0067 7B
0068 77FF 78 DB 077H,0FFH ;F 0FF為結束碼
79 ;-----------------------------------------------------
80 ;鍵值顯示子程序
81 ;使用一個數碼管顯示
82 ;-----------------------------------------------------
006A 83 KEY_PLAER:
84
006A E530 85 MOV A,30H
006C 900075 86 MOV DPTR,#TAB ;取段碼表地址
006F 93 87 MOVC A,@A+DPTR ;查顯示數據對應段碼
0070 F580 88 MOV P0,A ;段碼放入P0口
0072 C2A7 89 CLR P2.7 ;第一個數碼管亮
0074 22 90 RET
91 ;-----------------------------------------------------
0075 92 TAB:
0075 C0F9A4B0 93 DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
0079 999282F8
007D 80908883 94 DB 80H,90H,88h,83h,0c6h,0a1h,86h,8eh
0081 C6A1868E
95 ;-----------------------------------------------------
96
97 END
A51 MACRO ASSEMBLER KEYBOARDSCAN 02/13/2006 15:22:41 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
B. . . . . . . . . D ADDR 00F0H A
BEEP . . . . . . . B ADDR 00B0H.3 A
BEEP_BL. . . . . . C ADDR 003BH A
BL1. . . . . . . . C ADDR 003DH A
DELAY. . . . . . . C ADDR 004EH A
DELAY1 . . . . . . C ADDR 0050H A
DEX1 . . . . . . . C ADDR 0048H A
DEX2 . . . . . . . C ADDR 004AH A
KEYTABLE . . . . . C ADDR 0059H A
KEY_IN . . . . . . C ADDR 000EH A
KEY_IN1. . . . . . C ADDR 0024H A
KEY_IN2. . . . . . C ADDR 002BH A
KEY_IN3. . . . . . C ADDR 0037H A
KEY_PLAER. . . . . C ADDR 006AH A
LOOP1. . . . . . . C ADDR 0008H A
MAIN . . . . . . . C ADDR 0002H A
P0 . . . . . . . . D ADDR 0080H A
P1 . . . . . . . . D ADDR 0090H A
P2 . . . . . . . . D ADDR 00A0H A
P3 . . . . . . . . D ADDR 00B0H A
RELAY. . . . . . . B ADDR 0090H.3 A
SP . . . . . . . . D ADDR 0081H A
TAB. . . . . . . . C ADDR 0075H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -