⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i2c.lst

📁 PIC串口程序  可以帮助你编写串口程序  里面还有我自己做的协议 很方便
💻 LST
📖 第 1 页 / 共 2 页
字号:


HI-TECH Software PICC Macro Assembler V8.05PL1
Serial number: HCPIC-88888                            Tue Feb 10 14:15:16 2009

Licensed to: ONE TWO
     1                           	processor	16F688
     2                           	opt	pw 79
     3                           	psect	__Z88888RS_,global,delta=1
     4                           	psect	text0,local,class=CODE,delta=2
     5                           	psect	text9,local,class=CODE,delta=2
     6                           	psect	rbit_0,global,bit,class=BANK0,space=1,de
      +                          lta=1
     7  0000                     
     8  0000                     
     9  0000                     
    10  0000                     
    11  0000                     
    12  0000                     
    13  0000                     
    14  0000                     
    15  0000                     
    16  0000                     
    17                           
    18                           	psect	__Z88888RS_
    19  0120                     
    20  0120                     
    21                           
    22                           	psect	text0
    23  029E                     _busDelay
    24  029E  0000               	nop	; ;#
    25  029F  0000               	nop	; ;#
    26  02A0  0000               	nop	; ;#
    27  02A1  0000               	nop	; ;#
    28  02A2  0000               	nop	; ;#
    29                           ;i2c.c: 19:     }
    30  02A3  0183               	clrf	3	;select bank 0
    31  02A4  0008               	return
    32  02A5                     _IICStart
    33                           ;i2c.c: 23: RC2=0;
    34  02A5  0183               	clrf	3	;select bank 0
    35  02A6  1107               	bcf	7,2
    36                           ;i2c.c: 24: RC1=1;
    37  02A7  1487               	bsf	7,1
    38                           ;i2c.c: 25: busDelay();
    39  02A8  229E               	fcall	_busDelay
    40                           ;i2c.c: 26: RC2=1;
    41  02A9  1507               	bsf	7,2
    42                           ;i2c.c: 27: busDelay();
    43  02AA  229E               	fcall	_busDelay
    44                           ;i2c.c: 28: RC1=0;
    45  02AB  1087               	bcf	7,1
    46                           ;i2c.c: 29: busDelay();
    47  02AC  229E               	fcall	_busDelay
    48                           ;i2c.c: 30: RC2=0;
    49  02AD  1107               	bcf	7,2
    50                           ;i2c.c: 31: RC1=1;
    51  02AE  1487               	bsf	7,1
    52                           ;i2c.c: 32: }
    53  02AF  0008               	return
    54  02B0                     _IICStop
    55                           ;i2c.c: 37: RC2=0;
    56  02B0  0183               	clrf	3	;select bank 0
    57  02B1  1107               	bcf	7,2
    58                           ;i2c.c: 38: RC1=0;
    59  02B2  1087               	bcf	7,1
    60                           ;i2c.c: 39: busDelay();
    61  02B3  229E               	fcall	_busDelay
    62                           ;i2c.c: 40: RC2=1;
    63  02B4  1507               	bsf	7,2
    64                           ;i2c.c: 41: busDelay();
    65  02B5  229E               	fcall	_busDelay
    66                           ;i2c.c: 42: RC1=1;
    67  02B6  1487               	bsf	7,1
    68                           ;i2c.c: 43: busDelay();
    69  02B7  229E               	fcall	_busDelay
    70                           ;i2c.c: 44: RC2=0;
    71  02B8  1107               	bcf	7,2
    72                           ;i2c.c: 45: }
    73  02B9  0008               	return
    74  02BA                     _IICACK
    75                           ;i2c.c: 62: RC1=0;
    76  02BA  0183               	clrf	3	;select bank 0
    77  02BB  1087               	bcf	7,1
    78                           ;i2c.c: 63: RC2=1;
    79  02BC  1507               	bsf	7,2
    80                           ;i2c.c: 64: busDelay();
    81  02BD  229E               	fcall	_busDelay
    82                           ;i2c.c: 65: RC2=0;
    83  02BE  1107               	bcf	7,2
    84                           ;i2c.c: 66: RC1=1;
    85  02BF  1487               	bsf	7,1
    86                           ;i2c.c: 67: }
    87  02C0  0008               	return
    88  02C1                     _IICNoAck
    89                           ;i2c.c: 71: RC1=1;
    90  02C1  0183               	clrf	3	;select bank 0
    91  02C2  1487               	bsf	7,1
    92                           ;i2c.c: 72: RC2=1;
    93  02C3  1507               	bsf	7,2
    94                           ;i2c.c: 73: busDelay();
    95  02C4  229E               	fcall	_busDelay
    96                           ;i2c.c: 74: RC2=0;
    97  02C5  1107               	bcf	7,2
    98                           ;i2c.c: 75: }
    99  02C6  0008               	return
   100  02C7                     _IICSendByte
   101                           ;	_sendbyte assigned to ?a_IICSendByte+0
   102  0000                     _IICSendByte$sendbyte	set	?a_IICSendByte
   103                           ;	_j assigned to ?a_IICSendByte+1
   104  0000                     _IICSendByte$j	set	?a_IICSendByte+1
   105                           ;_sendbyte stored from w
   106  02C7  0183               	clrf	3	;select bank 0
   107  02C8  00B9               	movwf	?a_IICSendByte
   108                           ;i2c.c: 80: unsigned char j=8;
   109  02C9  3008               	movlw	8
   110  02CA  00BA               	movwf	?a_IICSendByte+1
   111                           ;i2c.c: 81: for(;j>0;j--)
   112  02CB                     l13
   113                           ;i2c.c: 82: {
   114                           ;i2c.c: 83: RC2=0;
   115  02CB  1107               	bcf	7,2
   116                           ;i2c.c: 84: busDelay();
   117  02CC  229E               	fcall	_busDelay
   118                           ;i2c.c: 85: sendbyte<<=1;
   119  02CD  1003               	bcf	3,0
   120  02CE  0DB9               	rlf	?a_IICSendByte
   121                           ;i2c.c: 86: RC1=CARRY;
   122  02CF  1C03               	btfss	3,0
   123  02D0  2AD3               	goto	u20
   124  02D1  1487               	bsf	7,1
   125  02D2  2AD4               	goto	u34
   126  02D3                     u20
   127  02D3  1087               	bcf	7,1
   128  02D4                     u34
   129                           ;i2c.c: 87: busDelay();
   130  02D4  229E               	fcall	_busDelay
   131                           ;i2c.c: 88: RC2=1;
   132  02D5  1507               	bsf	7,2
   133                           ;i2c.c: 89: busDelay();
   134  02D6  229E               	fcall	_busDelay
   135                           ;i2c.c: 90: }
   136  02D7  0BBA               	decfsz	?a_IICSendByte+1
   137  02D8  2ACB               	goto	l13
   138                           ;i2c.c: 91: RC2=0;
   139  02D9  1107               	bcf	7,2
   140                           ;i2c.c: 92: }
   141  02DA  0008               	return
   142                           ;i2c.c: 94: unsigned char IICReceiveByte(void)
   143                           ;i2c.c: 95: { char receivebyte,i=8;
   144  02DB                     _IICReceiveByte
   145                           ;	_i assigned to ?a_IICReceiveByte+0
   146  0000                     _IICReceiveByte$i	set	?a_IICReceiveByte
   147                           ;	_receivebyte assigned to ?a_IICReceiveByte+1
   148  0000                     _IICReceiveByte$receivebyte	set	?a_IICReceiveBy
      +                          te+1
   149  02DB  3008               	movlw	8
   150  02DC  0183               	clrf	3	;select bank 0
   151  02DD  00AA               	movwf	?a_IICReceiveByte
   152                           ;i2c.c: 96: RC1=1;
   153  02DE  1487               	bsf	7,1
   154                           ;i2c.c: 97: RC2=0;
   155  02DF  1107               	bcf	7,2
   156                           ;i2c.c: 98: while(i--)
   157  02E0  2AE9               	goto	l17
   158  02E1                     l18
   159                           ;i2c.c: 99: {
   160  02E1  1507               	bsf	7,2
   161                           ;i2c.c: 101: busDelay();
   162  02E2  229E               	fcall	_busDelay
   163                           ;i2c.c: 102: receivebyte=(receivebyte<<1)|RC1;
   164  02E3  1003               	bcf	3,0
   165  02E4  1887               	btfsc	7,1
   166  02E5  1403               	bsf	3,0
   167  02E6  0DAB               	rlf	?a_IICReceiveByte+1
   168                           ;i2c.c: 103: busDelay();
   169  02E7  229E               	fcall	_busDelay
   170                           ;i2c.c: 104: RC2=0;
   171  02E8  1107               	bcf	7,2
   172  02E9                     l17
   173                           ;i2c.c: 105: }
   174  02E9  03AA               	decf	?a_IICReceiveByte
   175  02EA  0F2A               	incfsz	?a_IICReceiveByte,w
   176  02EB  2AE1               	goto	l18
   177                           ;i2c.c: 106: return(receivebyte);
   178  02EC  082B               	movf	?a_IICReceiveByte+1,w
   179                           ;i2c.c: 107: }
   180  02ED  0008               	return
   181  02EE                     _IICRecAck
   182                           ;i2c.c: 50: RC2=0;
   183  02EE  0183               	clrf	3	;select bank 0
   184  02EF  1107               	bcf	7,2
   185                           ;i2c.c: 51: RC1=1;
   186  02F0  1487               	bsf	7,1
   187                           ;i2c.c: 52: RC2=1;
   188  02F1  1507               	bsf	7,2
   189                           ;i2c.c: 53: TRISA4=1;
   190  02F2  1683               	bsf	3,5
   191  02F3  1605               	bsf	5,4
   192                           ;i2c.c: 54: temp=RC1;
   193  02F4  1283               	bcf	3,5
   194  02F5  1020               	bcf	_temp/(0+8),_temp& (0+7)
   195  02F6  1887               	btfsc	7,1
   196  02F7  1420               	bsf	_temp/(0+8),_temp& (0+7)
   197                           ;i2c.c: 55: RC2=0;
   198  02F8  1107               	bcf	7,2
   199                           ;i2c.c: 56: TRISA4=0;
   200  02F9  1683               	bsf	3,5
   201  02FA  1205               	bcf	5,4
   202                           ;i2c.c: 57: return(temp);
   203  02FB  1003               	bcf	3,0
   204  02FC  1283               	bcf	3,5
   205  02FD  1820               	btfsc	_temp/(0+8),_temp& (0+7)
   206  02FE  1403               	bsf	3,0
   207                           ;i2c.c: 58: }
   208  02FF  0008               	return
   209  0300                     _I2C_WriteNByte
   210                           ;	_chip assigned to ?a_I2C_WriteNByte+0
   211  0000                     _I2C_WriteNByte$chip	set	?a_I2C_WriteNByte
   212                           ;	_flag assigned to ?a_I2C_WriteNByte+1
   213  0000                     _I2C_WriteNByte$flag	set	?a_I2C_WriteNByte+1
   214                           ;	_r assigned to ?a_I2C_WriteNByte+2
   215  0000                     _I2C_WriteNByte$r	set	?a_I2C_WriteNByte+2
   216                           ;	_i assigned to ?a_I2C_WriteNByte+3
   217  0000                     _I2C_WriteNByte$i	set	?a_I2C_WriteNByte+3
   218                           ;_chip stored from w
   219  0300  0183               	clrf	3	;select bank 0
   220  0301  00B5               	movwf	?a_I2C_WriteNByte
   221                           ;i2c.c: 181: unsigned char flag;
   222  0302  01B6               	clrf	?a_I2C_WriteNByte+1
   223                           ;i2c.c: 184: r=3;
   224  0303  3003               	movlw	3
   225  0304  00B7               	movwf	?a_I2C_WriteNByte+2
   226                           ;i2c.c: 185: while(r--)
   227  0305  2B23               	goto	l21
   228  0306                     l22
   229                           ;i2c.c: 186: { IICStart();
   230  0306  22A5  118A         	fcall	_IICStart
   231                           ;i2c.c: 187: IICSendByte(chip);
   232  0308  0835               	movf	?a_I2C_WriteNByte,w
   233  0309  22C7               	fcall	_IICSendByte
   234                           ;i2c.c: 188: if (IICRecAck())
   235  030A  22EE               	fcall	_IICRecAck
   236  030B  1803               	btfsc	3,0
   237  030C  2B23               	goto	l21
   238                           ;i2c.c: 189: continue;
   239                           ;i2c.c: 190: IICSendByte(addr);
   240  030D  0832               	movf	?_I2C_WriteNByte+1,w
   241  030E  22C7               	fcall	_IICSendByte
   242                           ;i2c.c: 191: if (IICRecAck())
   243  030F  22EE               	fcall	_IICRecAck
   244  0310  1803               	btfsc	3,0
   245  0311  2B23               	goto	l21
   246                           ;i2c.c: 192: continue;
   247                           ;i2c.c: 193: for (i=0;i<sum;i++)
   248  0312  01B8               	clrf	?a_I2C_WriteNByte+3
   249  0313                     l29
   250  0313  0834               	movf	?_I2C_WriteNByte+3,w
   251  0314  0238               	subwf	?a_I2C_WriteNByte+3,w
   252  0315  1803               	btfsc	3,0
   253  0316  2B1F               	goto	l27
   254                           ;i2c.c: 194: IICSendByte(*(p+i));
   255  0317  0838               	movf	?a_I2C_WriteNByte+3,w
   256  0318  0733               	addwf	?_I2C_WriteNByte+2,w
   257  0319  0084               	movwf	4

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -