?? henhao.lst
字號:
A51 MACRO ASSEMBLER HENHAO 09/25/2008 16:42:26 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN henhao.OBJ
ASSEMBLER INVOKED BY: C:\Keil51\C51\BIN\A51.EXE henhao.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1
00B0 2 bitACK BIT P3.0
00B1 3 bitDAT BIT P3.1
00B3 4 bitOVERFLOW BIT P3.3
00B4 5 bitDECODE BIT P3.4
00B5 6 bitD74 BIT P3.5
00B7 7 bitCLK74 BIT P3.7
8
9
10
0000 11 bitStrollLockKey BIT 00H
0008 12 bitParityBak BIT 08H
0001 13 blnNumLockKey BIT 01H
0002 14 blnCapsLockKey BIT 02H
0003 15 blnShiftKeyDown BIT 03H
0004 16 blnHaveKey BIT 04H
0005 17 blnDataValid BIT 05H
0006 18 blnTimer0Overflow BIT 06H
0009 19 blnChoose BIT 09H
000A 20 blnFifoFull BIT 0AH
000B 21 blnFifoNull BIT 0BH
000C 22 blnOddByte BIT 0CH
23
24
25
26
27
0030 28 gBitCounter DATA 30H
0031 29 gByteCounter DATA 31H
0032 30 CodeReg_1 DATA 32H
0033 31 CodeReg_2 DATA 33H
0034 32 FifoBufferBegin EQU 34H
0035 33 FifoBufferEnd EQU 35H
0036 34 TmpOddByte DATA 36H
0060 35 FifoBuffer EQU 60H
0020 36 FifoBufferLength EQU 20H
0040 37 ReceiveBuffer EQU 40H
0050 38 RestoreBuffer EQU 50H
0048 39 Init_TL0 EQU 48H
00F4 40 Init_TH0 EQU 0F4H
41
42
0000 43 ORG 0
0000 020057 44 LJMP START
0003 45 ORG 03H
0003 020021 46 LJMP INT0_SERVE
000B 47 ORG 0BH
000B 48 T0_SERVE:
000B C28C 49 CLR TR0 ;Counter stop
000D D2B4 50 SETB bitDECODE ;Illume the yellow light
000F D206 51 SETB blnTimer0Overflow ;Setting the timer overflow symbol
0011 300404 52 JNB blnHaveKey,T0_SERVE1 ;Have key?
0014 D205 53 SETB blnDataValid ;Seting the data valid symbol
0016 C204 54 CLR blnHaveKey ;Clean the have key symbol
0018 55 T0_SERVE1:
0018 758A48 56 MOV TL0,#Init_TL0 ;Setting the timer
001B 758CF4 57 MOV TH0,#Init_TH0
001E D28C 58 SETB TR0 ;Startup the timer
A51 MACRO ASSEMBLER HENHAO 09/25/2008 16:42:26 PAGE 2
0020 32 59 RETI
60 ;*********************************************
0021 61 INT0_SERVE:
0021 C28C 62 CLR TR0 ;Stop count
0023 200528 63 JB blnDataValid,EXIT1 ;data valid?
0026 C0E0 64 PUSH ACC ;Protect the spot
0028 C0D0 65 PUSH PSW
002A C007 66 PUSH 07H
002C C2B4 67 CLR bitDECODE ;Put out the yellow light
002E 300605 68 JNB blnTimer0Overflow,NOT_NEWRECEIVE ;New receive?
0031 D204 69 SETB blnHaveKey
0033 753000 70 MOV gBitCounter,#0
0036 71 NOT_NEWRECEIVE: ;new receive
0036 0530 72 INC gBitCounter
0038 A2B1 73 MOV C,bitDAT
003A 120227 74 LCALL RLC_STORE ;Store a bit
003D C206 75 CLR blnTimer0Overflow ;Clean the timer overflow symbol
003F 758A48 76 MOV TL0,#Init_TL0 ;Setting the timer
0042 758CF4 77 MOV TH0,#Init_TH0
0045 D007 78 POP 07H ;Resume the spot
0047 D0D0 79 POP PSW
0049 D0E0 80 POP ACC
004B D28C 81 SETB TR0 ;Startup the timer
004D 32 82 RETI
004E 83 EXIT1:
004E 758A48 84 MOV TL0,#Init_TL0 ;Setting the timer
0051 758CF4 85 MOV TH0,#Init_TH0
0054 D28C 86 SETB TR0 ;Startup the timer
0056 32 87 RETI
88 ;Main progress begin
0057 89 START:
0057 74FF 90 MOV A,#0FFH ;Ke
yboard replacement
0059 12046F 91 LCALL COMMAND
005C 7DFF 92 MOV R5,#0FFH
005E 93 DELAY:
005E 7EFF 94 MOV R6,#0FFH
0060 DEFE 95 DJNZ R6,$
0062 DDFA 96 DJNZ R5,DELAY
0064 753000 97 MOV gBitCounter,#0 ;Clean the bit count symbol
0067 758901 98 MOV TMOD,#01H ;Setting the counter
006A 758A48 99 MOV TL0,#Init_TL0
006D 758CF4 100 MOV TH0,#Init_TH0
0070 7940 101 MOV R1,#ReceiveBuffer
0072 120232 102 LCALL CLR_BUFFER ;Clean the receive
buffer
0075 C20A 103 CLR blnFifoFull ;Clean the
FIFO full symbol
0077 D20B 104 SETB blnFifoNull ;CLean the FIFO empty symbol
0079 C205 105 CLR blnDataValid ;Clean the data valid symbol
007B C203 106 CLR blnShiftKeyDown ;Place the special key symbol
007D C202 107 CLR blnCapsLockKey
007F C200 108 CLR bitStrollLockKey
0081 C20C 109 CLR blnOddByte
0083 D201 110 SETB blnNumLockKey
0085 D209 111 SETB blnChoose ;Choose the kind of
key code
0087 C2B5 112 CLR bitD74 ;put out th
e green light
0089 C2B7 113 CLR bitCLK74
008B D2B7 114 SETB bitCLK74
008D 753460 115 MOV FifoBufferBegin,#FifoBuffer ;initialize FIFO
0090 753560 116 MOV FifoBufferEnd,#FifoBuffer
0093 D28C 117 SETB TR0 ;Startup the counter
A51 MACRO ASSEMBLER HENHAO 09/25/2008 16:42:26 PAGE 3
0095 D288 118 SETB IT0 ;Place to symbol bit
0097 D2A8 119 SETB EX0
0099 D2A9 120 SETB ET0
009B D2AF 121 SETB EA
009D 1204A5 122 LCALL LEDCTRL ;lighten th
e NumLock key light
123 ;***************************************
00A0 124 MAINLOOP:
00A0 300530 125 JNB blnDataValid,ASKFORSEND ;Is the data valid?
00A3 1201D7 126 LCALL RESUME ;Yes,restor
e the data
00A6 C205 127 CLR blnDataValid ;Clean the datavali
d symbol
00A8 64FF 128 XRL A,#0FFH ;Is the data 0FFH?
00AA 60F4 129 JZ MAINLOOP ;Yes,return
00AC 20090C 130 JB blnChoose,CODE_1 ;The kind of key code
00AF 1204BE 131 LCALL FINDVIKEYCODE ;Find the virtual k
ey code
00B2 F533 132 MOV CodeReg_2,A ;store the
virtual key code
00B4 64FF 133 XRL A,#0FFH ;Is the code 0FFH?
00B6 60E8 134 JZ MAINLOOP ;Yes,return
00B8 0200CD 135 LJMP FIFO ;No,send the code to FIFO
00BB 136 CODE_1:
00BB 1200DC 137 LCALL FINDSCAN ;Find the s
can code
00BE F5F0 138 MOV B,A
00C0 64FF 139 XRL A,#0FFH ;Is the data 0FFH in ACC?
00C2 60DC 140 JZ MAINLOOP ;
Yes,return
00C4 E5F0 141 MOV A,B
00C6 64FE 142 XRL A,#0FEH ;Is
the data 0FEH in ACC?
00C8 6003 143 JZ FIFO ;Ye
s,send the code to FIFO
00CA 1202CE 144 LCALL ChangeASCII ;Find the ASCII code
00CD 145 FIFO:
00CD 1203F4 146 LCALL FIFO_STORE ;Store the
code in FIFO
00D0 1204A5 147 LCALL LEDCTRL ;Setting the pilot lamp on keyboard
00D3 148 ASKFORSEND:
00D3 30B003 149 JNB bitACK,RETURN ;Get ready incept ?
00D6 120425 150 LCALL READFIFO ;Break out
the code from FIFO and send
00D9 151 RETURN:
00D9 0200A0 152 LJMP MAINLOOP ;Return
153 ;**********************************************************
00DC 154 FINDSCAN:
00DC E531 155 MOV A,gByteCounter
00DE B40106 156 CJNE A,#01H,JUDGE_1 ;One byte?
00E1 12011A 157 LCALL PROCESS_ONEBYTE ;Yes,FInd the scan code
00E4 020119 158 LJMP JUDGE_7
00E7 159 JUDGE_1:
00E7 E531 160 MOV A,gByteCounter
00E9 6402 161 XRL A,#02H ;Tw
o byte?
00EB 7006 162 JNZ JUDGE_2
00ED 120151 163 LCALL PROCESS_TWOBYTE ;Yes,return
164
00F0 020119 165 LJMP JUDGE_7
00F3 166 JUDGE_2:
00F3 E531 167 MOV A,gByteCounter
00F5 6403 168 XRL A,#03H ;Th
ree byte?
00F7 601E 169 JZ JUDGE_6 ;Ye
s,return
A51 MACRO ASSEMBLER HENHAO 09/25/2008 16:42:26 PAGE 4
00F9 170 JUDGE_3:
00F9 E531 171 MOV A,gByteCounter
00FB 6404 172 XRL A,#04H ;Fo
ur byte?
00FD 7006 173 JNZ JUDGE_4
00FF 120177 174 LCALL PROCESS_FOURBYTE ;Yes,find the scan code
0102 020119 175 LJMP JUDGE_7
0105 176 JUDGE_4:
0105 E531 177 MOV A,gByteCounter
0107 6406 178 XRL A,#06H ;Si
x byte?
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -