📄 i2cmem1.lst
字号:
MPASM 02.30 Released I2CMEM1.ASM 12-19-2001 11:23:01 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00001 LIST p=16F877
00002 #include "P16F877.INC"
00001 LIST
00002 ; P16F877.INC Standard Header File, Version 1.00 Microchip Technology, Inc.
00373 LIST
00003
00000007 00004 SDO EQU 7
00000006 00005 CLK EQU 6
00006
0000 00007 ORG 0
0000 291F 00008 entrypoint goto start
00009
0004 00010 ORG 4
0004 2804 00011 intvector goto intvector
00012
00013 CBLOCK 0x30
00000030 00014 address, value, byte, bit, ack
00000035 00015 lc1, lc2, lc3
00016 ENDC
00017
00018
0005 1283 00019 set_sdo_high bcf STATUS,RP0
0006 1387 00020 bcf PORTC,SDO
0007 1683 00021 bsf STATUS,RP0
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0008 1787 00022 bsf TRISC,SDO
0009 1283 00023 bcf STATUS,RP0
000A 0008 00024 return
00025
000B 1283 00026 set_sdo_low bcf STATUS,RP0
000C 1387 00027 bcf PORTC,SDO
000D 1683 00028 bsf STATUS,RP0
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
000E 1387 00029 bcf TRISC,SDO
000F 1283 00030 bcf STATUS,RP0
0010 0008 00031 return
00032
00033 ;-----------------------------------------------------------
0011 1283 00034 set_clk_high bcf STATUS,RP0
0012 1707 00035 bsf PORTC,CLK
0013 1683 00036 bsf STATUS,RP0
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0014 1307 00037 bcf TRISC,CLK
0015 1283 00038 bcf STATUS,RP0
0016 0008 00039 return
00040
00041 ;-----------------------------------------------------------
0017 1283 00042 set_clk_low bcf STATUS,RP0
0018 1307 00043 bcf PORTC,CLK
0019 1683 00044 bsf STATUS,RP0
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
001A 1307 00045 bcf TRISC,CLK
001B 1283 00046 bcf STATUS,RP0
MPASM 02.30 Released I2CMEM1.ASM 12-19-2001 11:23:01 PAGE 2
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
001C 0008 00047 return
00048
00049 ;-----------------------------------------------------------
001D 3006 00050 wait_quarter_bit movlw 0x06
001E 00B5 00051 movwf lc1
001F 0BB5 00052 wqb0: decfsz lc1,F
0020 281F 00053 goto wqb0
0021 0008 00054 return
00055
00056 ;-----------------------------------------------------------
0022 3010 00057 wait_half_bit movlw 0x10
0023 00B5 00058 movwf lc1
0024 0BB5 00059 whb0: decfsz lc1,F
0025 281F 00060 goto wqb0
0026 0008 00061 return
00062
00063 ;-----------------------------------------------------------
0027 30FF 00064 init movlw 0xFF
0028 0087 00065 movwf PORTC
0029 3000 00066 movlw 0x00
002A 1683 00067 bsf STATUS,RP0
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
002B 0087 00068 movwf TRISC
002C 1283 00069 bcf STATUS,RP0
002D 0008 00070 return
00071
00072 ;-----------------------------------------------------------
002E 2011 00073 wr_start call set_clk_high
002F 2022 00074 call wait_half_bit
0030 200B 00075 call set_sdo_low
0031 2022 00076 call wait_half_bit
0032 2017 00077 call set_clk_low
0033 2022 00078 call wait_half_bit
0034 2022 00079 call wait_half_bit
0035 2022 00080 call wait_half_bit
0036 0008 00081 return
00082 ;-----------------------------------------------------------
0037 2022 00083 wr_stop call wait_half_bit
0038 2017 00084 call set_clk_low
0039 2022 00085 call wait_half_bit
003A 200B 00086 call set_sdo_low
003B 2022 00087 call wait_half_bit
003C 2011 00088 call set_clk_high
003D 2022 00089 call wait_half_bit
003E 2005 00090 call set_sdo_high
003F 2022 00091 call wait_half_bit
0040 0008 00092 return
00093
00094 ;-----------------------------------------------------------
0041 2017 00095 wr_restart call set_clk_low
0042 2022 00096 call wait_half_bit
0043 2005 00097 call set_sdo_high
0044 2022 00098 call wait_half_bit
MPASM 02.30 Released I2CMEM1.ASM 12-19-2001 11:23:01 PAGE 3
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0045 2011 00099 call set_clk_high
0046 2022 00100 call wait_half_bit
0047 200B 00101 call set_sdo_low
0048 2022 00102 call wait_half_bit
0049 2017 00103 call set_clk_low
004A 2022 00104 call wait_half_bit
004B 0008 00105 return
00106
00107 ;-----------------------------------------------------------
004C 2017 00108 wr_ack call set_clk_low
004D 2022 00109 call wait_half_bit
004E 200B 00110 call set_sdo_low
004F 2022 00111 call wait_half_bit
0050 2011 00112 call set_clk_high
0051 2022 00113 call wait_half_bit
0052 2017 00114 call set_clk_low
0053 2022 00115 call wait_half_bit
0054 2005 00116 call set_sdo_high
0055 2022 00117 call wait_half_bit
0056 0008 00118 return
00119
00120 ;-----------------------------------------------------------
0057 2017 00121 wr_no_ack call set_clk_low
0058 2022 00122 call wait_half_bit
0059 2005 00123 call set_sdo_high
005A 2022 00124 call wait_half_bit
005B 2011 00125 call set_clk_high
005C 2022 00126 call wait_half_bit
005D 2017 00127 call set_clk_low
005E 2022 00128 call wait_half_bit
005F 2022 00129 call wait_half_bit
0060 0008 00130 return
00131
00132 ;-----------------------------------------------------------
00133 ; Generate a reset by generating a stop followed by at least
00134 ; eight clock pulses.
0061 2022 00135 wr_reset call wait_half_bit
0062 2017 00136 call set_clk_low
0063 2022 00137 call wait_half_bit
0064 200B 00138 call set_sdo_low
0065 2022 00139 call wait_half_bit
0066 2011 00140 call set_clk_high
00141
0067 3040 00142 movlw 0x40
0068 00B5 00143 movwf lc1
0069 0BB5 00144 wrr0: decfsz lc1,F
006A 2869 00145 goto wrr0
00146
006B 2005 00147 call set_sdo_high
00148
006C 3040 00149 movlw 0x40
006D 00B5 00150 movwf lc1
006E 0BB5 00151 wrr1: decfsz lc1,F
MPASM 02.30 Released I2CMEM1.ASM 12-19-2001 11:23:01 PAGE 4
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
006F 286E 00152 goto wrr1
00153
0070 2017 00154 call set_clk_low ; clk 0
0071 2022 00155 call wait_half_bit
0072 2011 00156 call set_clk_high
0073 2022 00157 call wait_half_bit
0074 2017 00158 call set_clk_low ; clk 1
0075 2022 00159 call wait_half_bit
0076 2011 00160 call set_clk_high
0077 2022 00161 call wait_half_bit
0078 2017 00162 call set_clk_low ; clk 2
0079 2022 00163 call wait_half_bit
007A 2011 00164 call set_clk_high
007B 2022 00165 call wait_half_bit
007C 2017 00166 call set_clk_low ; clk 3
007D 2022 00167 call wait_half_bit
007E 2011 00168 call set_clk_high
007F 2022 00169 call wait_half_bit
0080 2017 00170 call set_clk_low ; clk 4
0081 2022 00171 call wait_half_bit
0082 2011 00172 call set_clk_high
0083 2022 00173 call wait_half_bit
0084 2017 00174 call set_clk_low ; clk 5
0085 2022 00175 call wait_half_bit
0086 2011 00176 call set_clk_high
0087 2022 00177 call wait_half_bit
0088 2017 00178 call set_clk_low ; clk 6
0089 2022 00179 call wait_half_bit
008A 2011 00180 call set_clk_high
008B 2022 00181 call wait_half_bit
008C 2017 00182 call set_clk_low ; clk 7
008D 2022 00183 call wait_half_bit
008E 2011 00184 call set_clk_high
008F 2022 00185 call wait_half_bit
0090 2017 00186 call set_clk_low ; clk 8
0091 2022 00187 call wait_half_bit
0092 2011 00188 call set_clk_high
0093 2022 00189 call wait_half_bit
00190
0094 0008 00191 return
00192
00193
00194 ;-----------------------------------------------------------
0095 1283 00195 wr_bit bcf STATUS,RP0
0096 201D 00196 call wait_quarter_bit
0097 0833 00197 movf bit,w
0098 0532 00198 andwf byte,w
0099 1903 00199 btfsc STATUS,Z
009A 289D 00200 goto bit_is_0
00201
009B 2005 00202 bit_is_1 call set_sdo_high
009C 289F 00203 goto wbit0
00204
MPASM 02.30 Released I2CMEM1.ASM 12-19-2001 11:23:01 PAGE 5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -