📄 bus.ls1
字号:
A51 MACRO ASSEMBLER BUS 09/10/2004 16:09:02 PAGE 1
MACRO ASSEMBLER A51 V6.23
OBJECT MODULE PLACED IN BUS.OBJ
ASSEMBLER INVOKED BY: d:\Keil\C51\BIN\A51.EXE BUS.src PR(.\BUS.ls1) EP DEBUG
LOC OBJ LINE SOURCE
1 ; .\BUS.SRC generated from: BUS.C
2
3 $nomod51
4
5 NAME BUS
6
0080 7 P0 DATA 080H
0090 8 P1 DATA 090H
00A0 9 P2 DATA 0A0H
00B0 10 P3 DATA 0B0H
00D0 11 PSW DATA 0D0H
00E0 12 ACC DATA 0E0H
00F0 13 B DATA 0F0H
0081 14 SP DATA 081H
0082 15 DPL DATA 082H
0083 16 DPH DATA 083H
0087 17 PCON DATA 087H
0088 18 TCON DATA 088H
0089 19 TMOD DATA 089H
008A 20 TL0 DATA 08AH
008B 21 TL1 DATA 08BH
008C 22 TH0 DATA 08CH
008D 23 TH1 DATA 08DH
00A8 24 IE DATA 0A8H
00B8 25 IP DATA 0B8H
0098 26 SCON DATA 098H
0099 27 SBUF DATA 099H
00D7 28 CY BIT 0D0H.7
00D6 29 AC BIT 0D0H.6
00D5 30 F0 BIT 0D0H.5
00D4 31 RS1 BIT 0D0H.4
00D3 32 RS0 BIT 0D0H.3
00D2 33 OV BIT 0D0H.2
00D0 34 P BIT 0D0H.0
008F 35 TF1 BIT 088H.7
008E 36 TR1 BIT 088H.6
008D 37 TF0 BIT 088H.5
008C 38 TR0 BIT 088H.4
008B 39 IE1 BIT 088H.3
008A 40 IT1 BIT 088H.2
0089 41 IE0 BIT 088H.1
0088 42 IT0 BIT 088H.0
00AF 43 EA BIT 0A8H.7
00AC 44 ES BIT 0A8H.4
00AB 45 ET1 BIT 0A8H.3
00AA 46 EX1 BIT 0A8H.2
00A9 47 ET0 BIT 0A8H.1
00A8 48 EX0 BIT 0A8H.0
00BC 49 PS BIT 0B8H.4
00BB 50 PT1 BIT 0B8H.3
00BA 51 PX1 BIT 0B8H.2
00B9 52 PT0 BIT 0B8H.1
00B8 53 PX0 BIT 0B8H.0
00B7 54 RD BIT 0B0H.7
00B6 55 WR BIT 0B0H.6
00B5 56 T1 BIT 0B0H.5
00B4 57 T0 BIT 0B0H.4
00B3 58 INT1 BIT 0B0H.3
A51 MACRO ASSEMBLER BUS 09/10/2004 16:09:02 PAGE 2
00B2 59 INT0 BIT 0B0H.2
00B1 60 TXD BIT 0B0H.1
00B0 61 RXD BIT 0B0H.0
009F 62 SM0 BIT 098H.7
009E 63 SM1 BIT 098H.6
009D 64 SM2 BIT 098H.5
009C 65 REN BIT 098H.4
009B 66 TB8 BIT 098H.3
009A 67 RB8 BIT 098H.2
0099 68 TI BIT 098H.1
0098 69 RI BIT 098H.0
00A7 70 SDAPin BIT 0A0H.7
00A6 71 SCLPin BIT 0A0H.6
00A4 72 WPPin BIT 0A0H.4
00A0 73 ResetPin BIT 0A0H.0
00B5 74 BrightnessPin BIT 0B0H.5
00A5 75 VGA_CON_PIN BIT 0A0H.5
0080 76 LED_O_Pin BIT 080H.0
0081 77 LED_G_Pin BIT 080H.1
00A2 78 PANEL_VCC_PIN BIT 0A0H.2
00A3 79 PANEL_BKL_PIN BIT 0A0H.3
0084 80 AUDIO_MUTE_PIN BIT 080H.4
0086 81 AUDIO_STBY_PIN BIT 080H.6
0093 82 POWER_BUT_PIN BIT 090H.3
0091 83 LEFT_BUT_PIN BIT 090H.1
0092 84 RIGHT_BUT_PIN BIT 090H.2
0094 85 MENU_BUT_PIN BIT 090H.4
0090 86 AUTO_BUT_PIN BIT 090H.0
00B5 87 SHUTTLE_Pin BIT 0B0H.5
88 ?PR?_GoI2CMaster?BUS SEGMENT CODE
89 ?PR?_SendI2CByte?BUS SEGMENT CODE
90 ?PR?_RcvI2CByte?BUS SEGMENT CODE
91 ?PR?SendI2CStop?BUS SEGMENT CODE
92 EXTRN BIT (NoAck)
93 EXTRN BIT (BusFault)
94 EXTRN BIT (BusBusy)
95 PUBLIC SendI2CStop
96 PUBLIC _RcvI2CByte
97 PUBLIC _SendI2CByte
98 PUBLIC _GoI2CMaster
99 ; /************************************************
100 ; * *
101 ; * BUS.C: BUS control routines. *
102 ; * *
103 ; *************************************************/
104 ; #include <reg51.h>
105 ; #include <intrins.h>
106 ; #include "mascot.h"
107 ; #include "OSD.h"
108 ; #include "global.h"
109 ;
110 ;
111 ;
112 ; #define USE_ASM 1
113 ;
114 ; /*******************************************************************
115 ; * Send SCL pin high and wait for any clock stretching peripherals *
116 ; ********************************************************************/
117 ; #define SCLHigh() { SCLPin = 1; while(!SCLPin); }
118 ; #define SCLHigh2() { SCLPin2 = 1; while(!SCLPin2); }
119 ;
120 ;
121 ;
122 ; /********************************************************
123 ; * Grasp the I2C bus, send slave address and command *
124 ; *********************************************************/
A51 MACRO ASSEMBLER BUS 09/10/2004 16:09:02 PAGE 3
125 ; void GoI2CMaster(unsigned char adr)
126
---- 127 RSEG ?PR?_GoI2CMaster?BUS
0000 128 _GoI2CMaster:
129 USING 0
130 ; SOURCE LINE # 27
131 ;---- Variable 'adr?040' assigned to Register 'R7' ----
132 ; {
133 ; SOURCE LINE # 28
134 ;
135 ; BusBusy = 1;
136 ; SOURCE LINE # 30
0000 D200 F 137 SETB BusBusy
138 ;
139 ; if (!SCLPin) SCLHigh();
140 ; SOURCE LINE # 32
0002 20A605 141 JB SCLPin,?C0001
0005 D2A6 142 SETB SCLPin
0007 143 ?C0002:
0007 30A6FD 144 JNB SCLPin,?C0002
000A 145 ?C0001:
146 ;
147 ; NoAck = 0;
148 ; SOURCE LINE # 34
000A C200 F 149 CLR NoAck
150 ; BusFault = 0;
151 ; SOURCE LINE # 35
000C C200 F 152 CLR BusFault
153 ;
154 ; if (SCLPin & SDAPin) {
155 ; SOURCE LINE # 37
000E A2A7 156 MOV C,SDAPin
0010 82A6 157 ANL C,SCLPin
0012 500A 158 JNC ?C0004
159 ; SDAPin = 0;
160 ; SOURCE LINE # 38
0014 C2A7 161 CLR SDAPin
162 ; _nop_();
163 ; SOURCE LINE # 39
0016 00 164 NOP
165 ; SCLPin = 0;
166 ; SOURCE LINE # 40
0017 C2A6 167 CLR SCLPin
168 ; _nop_();
169 ; SOURCE LINE # 41
0019 00 170 NOP
171 ; SendI2CByte(adr);
172 ; SOURCE LINE # 42
001A 120000 F 173 LCALL _SendI2CByte
174 ; } else
175 ; SOURCE LINE # 43
001D 22 176 RET
001E 177 ?C0004:
178 ; BusFault = 1;
179 ; SOURCE LINE # 44
001E D200 F 180 SETB BusFault
181 ; }
182 ; SOURCE LINE # 45
0020 183 ?C0006:
0020 22 184 RET
185 ; END OF _GoI2CMaster
186
187 ;
188 ;
189 ;
190 ;
A51 MACRO ASSEMBLER BUS 09/10/2004 16:09:02 PAGE 4
191 ; /*********************************************
192 ; * Send one byte of data to an I2C device *
193 ; **********************************************/
194 ; void SendI2CByte(unsigned char val)
195
---- 196 RSEG ?PR?_SendI2CByte?BUS
0000 197 _SendI2CByte:
198 ; SOURCE LINE # 53
199 ;---- Variable 'val?141' assigned to Register 'R7' ----
200 ; {
201 ; SOURCE LINE # 54
202 ;
203 ; #if USE_ASM
204 ;
205 ; ACC = val;
206 ; SOURCE LINE # 58
0000 EF 207 MOV A,R7
208 ; #pragma asm
209 ;
210
211 ; MOV R7,#8
0001 7F08 212 MOV R7,#8
213 ;
214
215 ; SendByte1:
0003 216 SendByte1:
217 ; RLC A
0003 33 218 RLC A
219 ; MOV SDAPin,C
0004 92A7 220 MOV SDAPin,C
221 ; NOP
0006 00 222 NOP
223 ; SETB SCLPin
0007 D2A6 224 SETB SCLPin
225 ; JNB SCLPin,$
0009 30A6FD 226 JNB SCLPin,$
227 ; NOP
000C 00 228 NOP
229 ; CLR SCLPin
000D C2A6 230 CLR SCLPin
231 ; DJNZ R7,SendByte1
000F DFF2 232 DJNZ R7,SendByte1
233 ;
234
235 ; SETB SDAPin
0011 D2A7 236 SETB SDAPin
237 ; NOP
0013 00 238 NOP
239 ; SETB SCLPin
0014 D2A6 240 SETB SCLPin
241 ; JNB SCLPin,$
0016 30A6FD 242 JNB SCLPin,$
243 ; JNB SDAPin,SendByte2
0019 30A702 244 JNB SDAPin,SendByte2
245 ; SETB NoAck
001C D200 F 246 SETB NoAck
247 ;
248
249 ; SendByte2:
001E 250 SendByte2:
251 ; CLR SCLPin
001E C2A6 252 CLR SCLPin
253 ;
254
255 ; #pragma endasm
256 ;
A51 MACRO ASSEMBLER BUS 09/10/2004 16:09:02 PAGE 5
257 ; #else
258 ; unsigned char bmsk = 0x80;
259 ;
260 ; while (bmsk) {
261 ; SDAPin = (val & bmsk) ? 0x01 : 0x00;
262 ; SCLHigh();
263 ; bmsk >>= 1;
264 ; SCLPin = 0;
265 ; }
266 ;
267 ;
268 ; SDAPin = 1;
269 ; SCLHigh();
270 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -