?? 4x4key.lst
字號:
C51 COMPILER V7.06 4X4KEY 03/03/2006 15:27:36 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 4X4KEY
OBJECT MODULE PLACED IN 4X4Key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 4X4Key.c BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS
stmt level source
1 //--------------------------------------------------------
2 #include <at89x51.h>
3 #include "4X4Key.h"
4 //--------------------------------------------------------
5 #define KEYPORT P1
6 #define HLINES 4
7 #define VLINES 4
8 //--------------------------------------------------------
9 unsigned char GetKey(void);
10 //--------------------------------------------------------
11 static unsigned char oldkey=0;
12 //--------------------------------------------------------
13 unsigned char GetKey(){
14 1 unsigned char i,j,tmp;
15 1
16 1 KEYPORT=0xf0;
17 1 tmp=~(KEYPORT|0x0f);
18 1 if(!tmp){oldkey=NOKEY;return NOKEY;}
19 1 if(oldkey!=NOKEY)return NOKEY;
20 1
21 1 for(i=0;i<HLINES;i++){
22 2 KEYPORT=~(1<<i);
23 2 tmp=~(KEYPORT|0x0f);
24 2 for(j=0;j<VLINES;j++)if(tmp==(0x10<<j)){
25 3 oldkey=i*4+j;
26 3 return oldkey;
27 3 }
28 2 }
29 1 return NOKEY;
30 1 }
31 //--------------------------------------------------------
C51 COMPILER V7.06 4X4KEY 03/03/2006 15:27:36 PAGE 2
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION GetKey (BEGIN)
; SOURCE LINE # 13
; SOURCE LINE # 16
0000 7590F0 MOV P1,#0F0H
; SOURCE LINE # 17
0003 E590 MOV A,P1
0005 440F ORL A,#0FH
0007 F4 CPL A
;---- Variable 'tmp' assigned to Register 'R1' ----
0008 F9 MOV R1,A
; SOURCE LINE # 18
0009 7006 JNZ ?C0001
000B 7500FF R MOV oldkey,#0FFH
000E 7FFF MOV R7,#0FFH
0010 22 RET
0011 ?C0001:
; SOURCE LINE # 19
0011 E500 R MOV A,oldkey
0013 F4 CPL A
0014 6003 JZ ?C0003
0016 7FFF MOV R7,#0FFH
0018 22 RET
0019 ?C0003:
; SOURCE LINE # 21
;---- Variable 'i' assigned to Register 'R5' ----
0019 E4 CLR A
001A FD MOV R5,A
001B ?C0004:
; SOURCE LINE # 22
001B 7401 MOV A,#01H
001D A805 MOV R0,AR5
001F 08 INC R0
0020 8002 SJMP ?C0012
0022 ?C0011:
0022 C3 CLR C
0023 33 RLC A
0024 ?C0012:
0024 D8FC DJNZ R0,?C0011
0026 F4 CPL A
0027 F590 MOV P1,A
; SOURCE LINE # 23
0029 E590 MOV A,P1
002B 440F ORL A,#0FH
002D F4 CPL A
002E F9 MOV R1,A
; SOURCE LINE # 24
;---- Variable 'j' assigned to Register 'R4' ----
002F E4 CLR A
0030 FC MOV R4,A
0031 ?C0007:
0031 7410 MOV A,#010H
0033 7E00 MOV R6,#00H
0035 A804 MOV R0,AR4
0037 08 INC R0
0038 8005 SJMP ?C0014
003A ?C0013:
003A C3 CLR C
003B 33 RLC A
003C CE XCH A,R6
C51 COMPILER V7.06 4X4KEY 03/03/2006 15:27:36 PAGE 3
003D 33 RLC A
003E CE XCH A,R6
003F ?C0014:
003F D8F9 DJNZ R0,?C0013
0041 FF MOV R7,A
0042 E9 MOV A,R1
0043 7A00 MOV R2,#00H
0045 B5070E CJNE A,AR7,?C0009
0048 EA MOV A,R2
0049 B5060A CJNE A,AR6,?C0009
; SOURCE LINE # 25
004C ED MOV A,R5
004D 25E0 ADD A,ACC
004F 25E0 ADD A,ACC
0051 2C ADD A,R4
0052 F500 R MOV oldkey,A
; SOURCE LINE # 26
0054 FF MOV R7,A
0055 22 RET
; SOURCE LINE # 27
0056 ?C0009:
0056 0C INC R4
0057 BC04D7 CJNE R4,#04H,?C0007
; SOURCE LINE # 28
005A ?C0006:
005A 0D INC R5
005B BD04BD CJNE R5,#04H,?C0004
005E ?C0005:
; SOURCE LINE # 29
005E 7FFF MOV R7,#0FFH
; SOURCE LINE # 30
0060 ?C0002:
0060 22 RET
; FUNCTION GetKey (END)
C51 COMPILER V7.06 4X4KEY 03/03/2006 15:27:36 PAGE 4
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
oldkey . . . . . . . . . . . . . . . . STATIC DATA U_CHAR 0000H 1
GetKey . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
j. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0004H 1
tmp. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0001H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 97 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -