📄 kb.lst
字号:
142 1 }
143
144
145 int getchar(void)
146 {
147 1 int byte;
148 1
149 1 while(buffcnt == 0); // Wait for data
C51 COMPILER V6.12 KB 03/03/2007 18:29:42 PAGE 10
150 1 byte = *outpt; // Get byte
151 1
152 1 outpt++; // Increment pointer
153 1 if (outpt >= kb_buffer + BUFF_SIZE) // Pointer wrapping
154 1 outpt = kb_buffer;
155 1
156 1 buffcnt--; // Decrement buffer count
157 1 return byte;
158 1 }
159
C51 COMPILER V6.12 KB 03/03/2007 18:29:42 PAGE 11
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION init_kb (BEGIN)
; SOURCE LINE # 17
; SOURCE LINE # 18
; SOURCE LINE # 19
0000 750000 R MOV inpt,#00H
0003 750000 R MOV inpt+01H,#HIGH kb_buffer
0006 750000 R MOV inpt+02H,#LOW kb_buffer
; SOURCE LINE # 20
0009 750000 R MOV outpt,#00H
000C 750000 R MOV outpt+01H,#HIGH kb_buffer
000F 750000 R MOV outpt+02H,#LOW kb_buffer
; SOURCE LINE # 21
0012 E4 CLR A
0013 F500 R MOV buffcnt,A
; SOURCE LINE # 25
0015 F500 R MOV edge,A
; SOURCE LINE # 26
0017 75000B R MOV bitcount,#0BH
; SOURCE LINE # 27
001A 22 RET
; FUNCTION init_kb (END)
; FUNCTION INT0_interrupt (BEGIN)
0000 C0E0 PUSH ACC
0002 C0F0 PUSH B
0004 C083 PUSH DPH
0006 C082 PUSH DPL
0008 C0D0 PUSH PSW
000A 75D010 MOV PSW,#010H
; SOURCE LINE # 30
; SOURCE LINE # 34
000D E500 R MOV A,edge
000F 701B JNZ ?C0002
; SOURCE LINE # 35
; SOURCE LINE # 36
0011 E500 R MOV A,bitcount
0013 C3 CLR C
0014 940B SUBB A,#0BH
0016 5011 JNC ?C0003
0018 E500 R MOV A,bitcount
001A 9402 SUBB A,#02H
001C 400B JC ?C0003
; SOURCE LINE # 37
; SOURCE LINE # 38
001E E500 R MOV A,cdata
0020 13 RRC A
0021 F500 R MOV cdata,A
; SOURCE LINE # 39
0023 30A303 JNB P2_3,?C0003
; SOURCE LINE # 40
0026 430080 R ORL cdata,#080H
; SOURCE LINE # 41
0029 ?C0003:
; SOURCE LINE # 44
0029 750001 R MOV edge,#01H
; SOURCE LINE # 46
002C ?C0002:
; SOURCE LINE # 47
002C E500 R MOV A,edge
C51 COMPILER V6.12 KB 03/03/2007 18:29:42 PAGE 12
002E 600D JZ ?C0007
; SOURCE LINE # 49
0030 750000 R MOV edge,#00H
; SOURCE LINE # 51
0033 D50007 R DJNZ bitcount,?C0007
; SOURCE LINE # 52
; SOURCE LINE # 53
0036 AF00 R MOV R7,cdata
0038 1100 R ACALL _decode
; SOURCE LINE # 54
003A 75000B R MOV bitcount,#0BH
; SOURCE LINE # 55
; SOURCE LINE # 56
; SOURCE LINE # 57
003D ?C0007:
003D D0D0 POP PSW
003F D082 POP DPL
0041 D083 POP DPH
0043 D0F0 POP B
0045 D0E0 POP ACC
0047 32 RETI
; FUNCTION INT0_interrupt (END)
; FUNCTION _decode (BEGIN)
0000 8F00 R MOV sc,R7
; SOURCE LINE # 60
; SOURCE LINE # 61
; SOURCE LINE # 65
0002 E500 R MOV A,is_up
0004 6002 JZ $ + 4H
0006 0100 R AJMP ?C0008
; SOURCE LINE # 66
; SOURCE LINE # 67
0008 E500 R MOV A,sc
000A 24FB ADD A,#0FBH
000C 6018 JZ ?C0013
000E 24F3 ADD A,#0F3H
0010 600C JZ ?C0011
0012 24B9 ADD A,#0B9H
0014 600C JZ ?C0012
0016 2469 ADD A,#069H
0018 701F JNZ ?C0016
; SOURCE LINE # 68
; SOURCE LINE # 69
001A ?C0010:
; SOURCE LINE # 70
001A 750001 R MOV is_up,#01H
; SOURCE LINE # 71
001D 22 RET
; SOURCE LINE # 72
001E ?C0011:
; SOURCE LINE # 73
001E 750001 R MOV shift,#01H
; SOURCE LINE # 74
0021 22 RET
; SOURCE LINE # 75
0022 ?C0012:
; SOURCE LINE # 76
0022 750001 R MOV shift,#01H
; SOURCE LINE # 77
0025 22 RET
; SOURCE LINE # 78
C51 COMPILER V6.12 KB 03/03/2007 18:29:42 PAGE 13
0026 ?C0013:
; SOURCE LINE # 79
0026 E500 R MOV A,mode
0028 7003 JNZ ?C0014
; SOURCE LINE # 80
002A 750001 R MOV mode,#01H
002D ?C0014:
; SOURCE LINE # 81
002D E500 R MOV A,mode
002F 6402 XRL A,#02H
0031 6002 JZ $ + 4H
0033 0100 R AJMP ?C0038
; SOURCE LINE # 82
0035 750003 R MOV mode,#03H
; SOURCE LINE # 83
0038 22 RET
; SOURCE LINE # 84
0039 ?C0016:
; SOURCE LINE # 85
0039 E500 R MOV A,mode
003B 6004 JZ ?C0018
003D 6403 XRL A,#03H
003F 706F JNZ ?C0017
0041 ?C0018:
; SOURCE LINE # 86
; SOURCE LINE # 87
0041 E500 R MOV A,shift
0043 7036 JNZ ?C0019
; SOURCE LINE # 88
; SOURCE LINE # 89
0045 F500 R MOV i,A
0047 ?C0020:
0047 E500 R MOV A,i
0049 25E0 ADD A,ACC
004B 2400 R ADD A,#LOW unshifted
004D F582 MOV DPL,A
004F E4 CLR A
0050 3400 R ADDC A,#HIGH unshifted
0052 F583 MOV DPH,A
0054 E4 CLR A
0055 93 MOVC A,@A+DPTR
0056 FF MOV R7,A
0057 6500 R XRL A,sc
0059 6007 JZ ?C0021
005B EF MOV A,R7
005C 6004 JZ ?C0021
005E 0500 R INC i
0060 80E5 SJMP ?C0020
0062 ?C0021:
; SOURCE LINE # 90
0062 EF MOV A,R7
0063 6500 R XRL A,sc
0065 6002 JZ $ + 4H
0067 0100 R AJMP ?C0038
; SOURCE LINE # 91
0069 E500 R MOV A,i
006B 25E0 ADD A,ACC
006D 2400 R ADD A,#LOW unshifted+01H
006F F582 MOV DPL,A
0071 E4 CLR A
0072 3400 R ADDC A,#HIGH unshifted+01H
0074 F583 MOV DPH,A
C51 COMPILER V6.12 KB 03/03/2007 18:29:42 PAGE 14
0076 E4 CLR A
0077 93 MOVC A,@A+DPTR
0078 FF MOV R7,A
0079 0100 R AJMP _put_kbbuff
; SOURCE LINE # 92
; SOURCE LINE # 93
007B ?C0019:
; SOURCE LINE # 94
007B E4 CLR A
007C F500 R MOV i,A
007E ?C0025:
007E E500 R MOV A,i
0080 25E0 ADD A,ACC
0082 2400 R ADD A,#LOW shifted
0084 F582 MOV DPL,A
0086 E4 CLR A
0087 3400 R ADDC A,#HIGH shifted
0089 F583 MOV DPH,A
008B E4 CLR A
008C 93 MOVC A,@A+DPTR
008D FF MOV R7,A
008E 6500 R XRL A,sc
0090 6007 JZ ?C0026
0092 EF MOV A,R7
0093 6004 JZ ?C0026
0095 0500 R INC i
0097 80E5 SJMP ?C0025
0099 ?C0026:
; SOURCE LINE # 95
0099 EF MOV A,R7
009A 6500 R XRL A,sc
009C 704D JNZ ?C0038
; SOURCE LINE # 96
009E E500 R MOV A,i
00A0 25E0 ADD A,ACC
00A2 2400 R ADD A,#LOW shifted+01H
00A4 F582 MOV DPL,A
00A6 E4 CLR A
00A7 3400 R ADDC A,#HIGH shifted+01H
00A9 F583 MOV DPH,A
00AB E4 CLR A
00AC 93 MOVC A,@A+DPTR
00AD FF MOV R7,A
00AE 0100 R AJMP _put_kbbuff
; SOURCE LINE # 97
; SOURCE LINE # 98
; SOURCE LINE # 99
00B0 ?C0017:
; SOURCE LINE # 100
00B0 AF00 R MOV R7,sc
00B2 1100 E ACALL _print_hexbyte
; SOURCE LINE # 101
00B4 7F20 MOV R7,#020H
00B6 1100 R ACALL _put_kbbuff
; SOURCE LINE # 102
00B8 7F20 MOV R7,#020H
00BA 0100 R AJMP _put_kbbuff
; SOURCE LINE # 103
; SOURCE LINE # 104
; SOURCE LINE # 105
; SOURCE LINE # 106
00BC ?C0008:
C51 COMPILER V6.12 KB 03/03/2007 18:29:42 PAGE 15
; SOURCE LINE # 107
00BC E4 CLR A
00BD F500 R MOV is_up,A
; SOURCE LINE # 108
00BF E500 R MOV A,sc
00C1 24FB ADD A,#0FBH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -