📄 t0_leddrv.lst
字号:
A51 MACRO ASSEMBLER T0_LEDDRV 11/15/2005 13:59:28 PAGE 1
MACRO ASSEMBLER A51 V7.00a
OBJECT MODULE PLACED IN T0_LEDdrv.OBJ
ASSEMBLER INVOKED BY: D:\Program Files\Keil\C51\BIN\A51.EXE T0_LEDdrv.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 PUBLIC InitT0
2 PUBLIC DispBuf
3 PUBLIC KeyCode
4
5
6 T0Data SEGMENT DATA
---- 7 RSEG T0Data
0000 8 pBuf: DS 1
0001 9 DispBuf:DS 6
0007 10 KeyLast:DS 4
000B 11 KeyTmp: DS 1
000C 12 KeyCode:DS 1
13
---- 14 CSEG AT 1*8+3
000B 020000 F 15 LJMP T0_ISR
16
17 T0Code SEGMENT CODE
---- 18 RSEG T0Code
19 ;--------------------------------------------------------
20 ; T0 Initial
21 ;--------------------------------------------------------
0000 22 InitT0:
0000 750000 F 23 MOV pBuf,#0
0003 7800 F 24 MOV R0,#KeyLast
0005 75F004 25 MOV B,#4
0008 26 KeyLastValue:
0008 760F 27 MOV @R0,#0Fh
000A D5F0FB 28 DJNZ B,KeyLastValue
000D 850000 F 29 MOV KeyCode,0
30
0010 E589 31 MOV A,TMOD
0012 54F0 32 ANL A,#0F0h
0014 4401 33 ORL A,#00000001B
0016 F589 34 MOV TMOD,A
0018 758CFE 35 MOV TH0,#0FEh
001B 758A00 36 MOV TL0,#0
001E D28C 37 SETB TR0
0020 D2A9 38 SETB ET0
0022 D2AF 39 SETB EA
0024 22 40 RET
41 ;--------------------------------------------------------
42 ; T0 ISR
43 ;--------------------------------------------------------
0025 758CFE 44 T0_ISR: MOV TH0,#0FEh
0028 758A00 45 MOV TL0,#0
002B 7580FF 46 MOV P0,#0FFh ; Close all seg
002E 75A00F 47 MOV P2,#0Fh
0031 C0E0 48 PUSH ACC
0033 C0D0 49 PUSH PSW
0035 C082 50 PUSH DPL
0037 C083 51 PUSH DPH
0039 C0F0 52 PUSH B
003B 53 DispLay:
003B 88F0 54 MOV B,R0
003D E500 F 55 MOV A,pBuf ; Fetch pointer
003F 2400 F 56 ADD A,#DispBuf ; Add Buffer Base Addr
0041 F8 57 MOV R0,A
0042 E6 58 MOV A,@R0 ; Fetch Data to be displayed
A51 MACRO ASSEMBLER T0_LEDDRV 11/15/2005 13:59:28 PAGE 2
0043 900000 F 59 MOV DPTR,#CharTab ; Char. Table address
0046 93 60 MOVC A,@A+DPTR ; Get Char Segs of the data
0047 F580 61 MOV P0,A ; to display
0049 E500 F 62 MOV A,pBuf ; Fetch pointer again
004B 900000 F 63 MOV DPTR,#LedSel ; Select. Table address
004E 93 64 MOVC A,@A+DPTR
004F F5A0 65 MOV P2,A
0051 66 Key_Check:
0051 E500 F 67 MOV A,pBuf
0053 54FC 68 ANL A,#0FCh
0055 704A 69 JNZ Pointer_Adapt ; if pBuf >= 4 No Keys
0057 E500 F 70 MOV A,pBuf
0059 2400 F 71 ADD A,#KeyLast
005B F8 72 MOV R0,A
005C E6 73 MOV A,@R0 ; fetch Last Key
005D 85A000 F 74 MOV KeyTmp,P2
0060 53000F F 75 ANL KeyTmp,#0Fh ; fetch current key state
0063 6500 F 76 XRL A,KeyTmp
0065 603A 77 JZ Pointer_Adapt
0067 A600 F 78 MOV @R0,KeyTmp ; newer state saved for next fetch
0069 B40105 79 Try1: CJNE A,#01,Try2
006C 750000 F 80 MOV KeyTmp,#0
006F 8018 81 SJMP LineCode
0071 B40205 82 Try2: CJNE A,#02,Try4
0074 750001 F 83 MOV KeyTmp,#1
0077 8010 84 SJMP LineCode
0079 B40405 85 Try4: CJNE A,#04,Try8
007C 750002 F 86 MOV KeyTmp,#2
007F 8008 87 SJMP LineCode
0081 B4081D 88 Try8: CJNE A,#08,Pointer_Adapt
0084 750003 F 89 MOV KeyTmp,#3
0087 8000 90 SJMP LineCode
0089 91 LineCode:
0089 E500 F 92 MOV A,pBuf
008B 23 93 RL A
008C 23 94 RL A
008D 2500 F 95 ADD A,KeyTmp
008F D2E7 96 SETB ACC.7
0091 F500 F 97 MOV KeyTmp,A
0093 E5A0 98 MOV A,P2
0095 540F 99 ANL A,#0Fh
0097 640F 100 XRL A,#0Fh
0099 6002 101 JZ ReleaseKey
009B 7440 102 MOV A,#40h
009D 103 ReleaseKey:
009D 2500 F 104 ADD A,KeyTmp
009F F500 F 105 MOV KeyCode,A
00A1 106 Pointer_Adapt:
00A1 0500 F 107 INC pBuf
00A3 C3 108 CLR C
00A4 7405 109 MOV A,#5
00A6 9500 F 110 SUBB A,pBuf
00A8 5003 111 JNC Exit_T0
00AA E4 112 CLR A
00AB F500 F 113 MOV pBuf,A
00AD 114 Exit_T0:
00AD A8F0 115 MOV R0,B
00AF D0F0 116 POP B
00B1 D083 117 POP DPH
00B3 D082 118 POP DPL
00B5 D0D0 119 POP PSW
00B7 D0E0 120 POP ACC
00B9 32 121 RETI
122 ;CharTab:DB 0c0h,0f9h,0a4h,0b0h,099h,092h,082h,0f8h,080h,090h,088h,083h,0C6h,0A1h,086h,08Eh
,0FFh
00BA 039F250D 123 CharTab:DB 003h,09fh,025h,00dh,099h,049h,041h,01fh,001h,009h,011h,0c1h,063h,085h,061h,071h,
A51 MACRO ASSEMBLER T0_LEDDRV 11/15/2005 13:59:28 PAGE 3
0FFh
00BE 9949411F
00C2 010911C1
00C6 63856171
00CA FF
00CB 1F3F5F7F 124 LedSel: DB 1Fh,3Fh,5Fh,7Fh,9Fh,0BFh
00CF 9FBF
125 END
A51 MACRO ASSEMBLER T0_LEDDRV 11/15/2005 13:59:28 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
B. . . . . . . . . D ADDR 00F0H A
CHARTAB. . . . . . C ADDR 00BAH R SEG=T0CODE
DISPBUF. . . . . . D ADDR 0001H R SEG=T0DATA
DISPLAY. . . . . . C ADDR 003BH R SEG=T0CODE
DPH. . . . . . . . D ADDR 0083H A
DPL. . . . . . . . D ADDR 0082H A
EA . . . . . . . . B ADDR 00A8H.7 A
ET0. . . . . . . . B ADDR 00A8H.1 A
EXIT_T0. . . . . . C ADDR 00ADH R SEG=T0CODE
INITT0 . . . . . . C ADDR 0000H R SEG=T0CODE
KEYCODE. . . . . . D ADDR 000CH R SEG=T0DATA
KEYLAST. . . . . . D ADDR 0007H R SEG=T0DATA
KEYLASTVALUE . . . C ADDR 0008H R SEG=T0CODE
KEYTMP . . . . . . D ADDR 000BH R SEG=T0DATA
KEY_CHECK. . . . . C ADDR 0051H R SEG=T0CODE
LEDSEL . . . . . . C ADDR 00CBH R SEG=T0CODE
LINECODE . . . . . C ADDR 0089H R SEG=T0CODE
P0 . . . . . . . . D ADDR 0080H A
P2 . . . . . . . . D ADDR 00A0H A
PBUF . . . . . . . D ADDR 0000H R SEG=T0DATA
POINTER_ADAPT. . . C ADDR 00A1H R SEG=T0CODE
PSW. . . . . . . . D ADDR 00D0H A
RELEASEKEY . . . . C ADDR 009DH R SEG=T0CODE
T0CODE . . . . . . C SEG 00D1H REL=UNIT
T0DATA . . . . . . D SEG 000DH REL=UNIT
T0_ISR . . . . . . C ADDR 0025H R SEG=T0CODE
TH0. . . . . . . . D ADDR 008CH A
TL0. . . . . . . . D ADDR 008AH A
TMOD . . . . . . . D ADDR 0089H A
TR0. . . . . . . . B ADDR 0088H.4 A
TRY1 . . . . . . . C ADDR 0069H R SEG=T0CODE
TRY2 . . . . . . . C ADDR 0071H R SEG=T0CODE
TRY4 . . . . . . . C ADDR 0079H R SEG=T0CODE
TRY8 . . . . . . . C ADDR 0081H R SEG=T0CODE
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -