📄 i2cmem1.lst
字号:
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
009D 200B 00205 bit_is_0 call set_sdo_low
009E 289F 00206 goto wbit0
00207
00208
009F 1283 00209 wbit0 bcf STATUS,RP0
00A0 201D 00210 call wait_quarter_bit
00A1 2011 00211 call set_clk_high
00A2 2022 00212 call wait_half_bit
00A3 2017 00213 call set_clk_low
00A4 0008 00214 return
00215
00216 ;-----------------------------------------------------------
00A5 00B2 00217 wr_byte movwf byte
00A6 3080 00218 movlw 0x80
00A7 00B3 00219 movwf bit
00220
00A8 2095 00221 wbyte0 call wr_bit
00A9 1003 00222 bcf STATUS,C
00AA 0CB3 00223 rrf bit,F
00AB 08B3 00224 movf bit,F
00AC 1D03 00225 btfss STATUS,Z
00AD 28A8 00226 goto wbyte0
00227
00AE 201D 00228 call wait_quarter_bit
00AF 2005 00229 call set_sdo_high
00B0 201D 00230 call wait_quarter_bit
00B1 2011 00231 call set_clk_high
00B2 201D 00232 call wait_quarter_bit
00B3 0807 00233 movf PORTC,W
00B4 3980 00234 andlw (1<<SDO)
00B5 3A80 00235 xorlw (1<<SDO)
00B6 00B4 00236 movwf ack
00B7 201D 00237 call wait_quarter_bit
00B8 2017 00238 call set_clk_low
00B9 201D 00239 call wait_quarter_bit
00BA 0008 00240 return
00241
00242 ;-----------------------------------------------------------
00BB 00B2 00243 wr_halfbyte movwf byte
00BC 3008 00244 movlw 0x08
00BD 00B3 00245 movwf bit
00246
00BE 2095 00247 whbyte0 call wr_bit
00BF 1003 00248 bcf STATUS,C
00C0 0CB3 00249 rrf bit,F
00C1 08B3 00250 movf bit,F
00C2 1D03 00251 btfss STATUS,Z
00C3 28BE 00252 goto whbyte0
00253
00C4 201D 00254 call wait_quarter_bit
00C5 2005 00255 call set_sdo_high
00C6 201D 00256 call wait_quarter_bit
00C7 2011 00257 call set_clk_high
MPASM 02.30 Released I2CMEM1.ASM 12-19-2001 11:23:01 PAGE 6
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00C8 201D 00258 call wait_quarter_bit
00C9 0807 00259 movf PORTC,W
00CA 3980 00260 andlw (1<<SDO)
00CB 3A80 00261 xorlw (1<<SDO)
00CC 00B4 00262 movwf ack
00CD 201D 00263 call wait_quarter_bit
00CE 2017 00264 call set_clk_low
00CF 201D 00265 call wait_quarter_bit
00D0 0008 00266 return
00267
00268 ;-----------------------------------------------------------
00D1 1283 00269 rd_bit bcf STATUS,RP0
00D2 2005 00270 call set_sdo_high
00D3 2017 00271 call set_clk_low
00D4 2022 00272 call wait_half_bit
00D5 2011 00273 call set_clk_high
00D6 201D 00274 call wait_quarter_bit
00D7 0807 00275 movf PORTC,W
00D8 3980 00276 andlw (1<<SDO)
00D9 1903 00277 btfsc STATUS,Z
00DA 28DD 00278 goto rd_bit_clear
00DB 0833 00279 movf bit,W
00DC 04B2 00280 iorwf byte,F
00DD 201D 00281 rd_bit_clear call wait_quarter_bit
00DE 2017 00282 call set_clk_low
00DF 0008 00283 return
00284
00285 ;-----------------------------------------------------------
00E0 3000 00286 rd_byte movlw 0x00
00E1 00B2 00287 movwf byte
00E2 3080 00288 movlw 0x80
00E3 00B3 00289 movwf bit
00290
00E4 20D1 00291 rbyte0 call rd_bit
00E5 1003 00292 bcf STATUS,C
00E6 0CB3 00293 rrf bit,F
00E7 08B3 00294 movf bit,F
00E8 1D03 00295 btfss STATUS,Z
00E9 28E4 00296 goto rbyte0
00EA 0832 00297 movf byte,W
00EB 0008 00298 return
00299
00300 ;-----------------------------------------------------------
00301 ; Write W register to PORTD and hang.
00EC 1283 00302 wr_error bcf STATUS,RP0
00ED 0088 00303 movwf PORTD
00EE 1683 00304 bsf STATUS,RP0
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
00EF 0188 00305 clrf TRISD
00F0 1283 00306 bcf STATUS,RP0
00307
00F1 1405 00308 wre_flash bsf PORTA,0
00F2 30FF 00309 movlw 0xFF
MPASM 02.30 Released I2CMEM1.ASM 12-19-2001 11:23:01 PAGE 7
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00F3 2116 00310 call longwait
00F4 30FF 00311 movlw 0xFF
00F5 2116 00312 call longwait
00F6 1005 00313 bcf PORTA,0
00F7 30FF 00314 movlw 0xFF
00F8 2116 00315 call longwait
00F9 30FF 00316 movlw 0xFF
00FA 2116 00317 call longwait
00FB 28F1 00318 goto wre_flash
00FC 0008 00319 return
00320
00321 ;-----------------------------------------------------------
00322 ; Write W register to PORTD and hang.
00FD 1283 00323 wr_result bcf STATUS,RP0
00FE 0088 00324 movwf PORTD
00FF 1683 00325 bsf STATUS,RP0
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0100 0188 00326 clrf TRISD
0101 1283 00327 bcf STATUS,RP0
00328
0102 1405 00329 wrr_flash bsf PORTA,0
0103 3030 00330 movlw 0x30
0104 210A 00331 call vlongwait
0105 1005 00332 bcf PORTA,0
0106 3003 00333 movlw 0x03
0107 210A 00334 call vlongwait
0108 2902 00335 goto wrr_flash
0109 0008 00336 return
00337
00338 ;-----------------------------------------------------------
010A 00B5 00339 vlongwait movwf lc1
010B 30FF 00340 vlw1 movlw 0xFF
010C 00B6 00341 movwf lc2
010D 30FF 00342 vlw2 movlw 0xFF
010E 00B7 00343 movwf lc3
010F 0BB7 00344 vlw3 decfsz lc3,F
0110 290F 00345 goto vlw3
0111 0BB6 00346 decfsz lc2,F
0112 290D 00347 goto vlw2
0113 0BB5 00348 decfsz lc1,F
0114 290B 00349 goto vlw1
0115 0008 00350 return
00351
00352 ;-----------------------------------------------------------
0116 00B5 00353 longwait movwf lc1
0117 30FF 00354 lw1 movlw 0xFF
0118 00B6 00355 movwf lc2
0119 0BB6 00356 lw2 decfsz lc2,F
011A 2919 00357 goto lw2
011B 0BB5 00358 decfsz lc1,F
011C 2917 00359 goto lw1
011D 0008 00360 return
00361
MPASM 02.30 Released I2CMEM1.ASM 12-19-2001 11:23:01 PAGE 8
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00362 ;-----------------------------------------------------------
011E 291E 00363 hang goto hang
00364
00365
00366 ;===========================================================
011F 2027 00367 start call init
0120 2061 00368 call wr_reset
00369
00370
0121 1283 00371 bcf STATUS,RP0
0122 0185 00372 clrf PORTA
0123 0188 00373 clrf PORTD
00374
0124 1683 00375 bsf STATUS,RP0
0125 3006 00376 movlw 0x06
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0126 009F 00377 movwf ADCON1
0127 3020 00378 movlw 0x20
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0128 0085 00379 movwf TRISA
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0129 0188 00380 clrf TRISD
00381
012A 1283 00382 bcf STATUS,RP0
012B 0185 00383 clrf PORTA
012C 01B0 00384 clrf address
012D 01B1 00385 clrf value
00386
00387 ; Test RA5 to see if we do writes:
012E 1E85 00388 btfss PORTA,5
012F 2952 00389 goto reset_addr
00390
00391 ; Do start condition:
0130 202E 00392 main_wr_loop: call wr_start
00393
00394 ; Send write command:
0131 30A6 00395 movlw 0xA6
0132 20A5 00396 call wr_byte
0133 3001 00397 movlw 0x01
0134 08B4 00398 movf ack,F
0135 1903 00399 btfsc STATUS,Z
0136 20EC 00400 call wr_error
00401
00402 ; Send address:
0137 0830 00403 movf address,W
0138 20A5 00404 call wr_byte
0139 3002 00405 movlw 0x02
013A 08B4 00406 movf ack,F
013B 1903 00407 btfsc STATUS,Z
013C 20EC 00408 call wr_error
00409
00410 ; Send value:
013D 0831 00411 movf value,W
MPASM 02.30 Released I2CMEM1.ASM 12-19-2001 11:23:01 PAGE 9
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -