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

📄 i2c.lst

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


HI-TECH Software PICC Macro Assembler V8.05PL1
Serial number: HCPIC-88888                            Thu Dec 11 14:01:26 2008

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  0427                     _busDelay
    24  0427  0000               	nop	; ;#
    25  0428  0000               	nop	; ;#
    26  0429  0000               	nop	; ;#
    27  042A  0000               	nop	; ;#
    28  042B  0000               	nop	; ;#
    29                           ;i2c.c: 19:     }
    30  042C  0183               	clrf	3	;select bank 0
    31  042D  0008               	return
    32  042E                     _IICStart
    33                           ;i2c.c: 23: RA5=0;
    34  042E  0183               	clrf	3	;select bank 0
    35  042F  1285               	bcf	5,5
    36                           ;i2c.c: 24: RA4=1;
    37  0430  1605               	bsf	5,4
    38                           ;i2c.c: 25: busDelay();
    39  0431  2427               	fcall	_busDelay
    40                           ;i2c.c: 26: RA5=1;
    41  0432  1685               	bsf	5,5
    42                           ;i2c.c: 27: busDelay();
    43  0433  2427               	fcall	_busDelay
    44                           ;i2c.c: 28: RA4=0;
    45  0434  1205               	bcf	5,4
    46                           ;i2c.c: 29: busDelay();
    47  0435  2427               	fcall	_busDelay
    48                           ;i2c.c: 30: RA5=0;
    49  0436  1285               	bcf	5,5
    50                           ;i2c.c: 31: RA4=1;
    51  0437  1605               	bsf	5,4
    52                           ;i2c.c: 32: }
    53  0438  0008               	return
    54  0439                     _IICStop
    55                           ;i2c.c: 37: RA5=0;
    56  0439  0183               	clrf	3	;select bank 0
    57  043A  1285               	bcf	5,5
    58                           ;i2c.c: 38: RA4=0;
    59  043B  1205               	bcf	5,4
    60                           ;i2c.c: 39: busDelay();
    61  043C  2427               	fcall	_busDelay
    62                           ;i2c.c: 40: RA5=1;
    63  043D  1685               	bsf	5,5
    64                           ;i2c.c: 41: busDelay();
    65  043E  2427               	fcall	_busDelay
    66                           ;i2c.c: 42: RA4=1;
    67  043F  1605               	bsf	5,4
    68                           ;i2c.c: 43: busDelay();
    69  0440  2427               	fcall	_busDelay
    70                           ;i2c.c: 44: RA5=0;
    71  0441  1285               	bcf	5,5
    72                           ;i2c.c: 45: }
    73  0442  0008               	return
    74  0443                     _IICACK
    75                           ;i2c.c: 62: RA4=0;
    76  0443  0183               	clrf	3	;select bank 0
    77  0444  1205               	bcf	5,4
    78                           ;i2c.c: 63: RA5=1;
    79  0445  1685               	bsf	5,5
    80                           ;i2c.c: 64: busDelay();
    81  0446  2427               	fcall	_busDelay
    82                           ;i2c.c: 65: RA5=0;
    83  0447  1285               	bcf	5,5
    84                           ;i2c.c: 66: RA4=1;
    85  0448  1605               	bsf	5,4
    86                           ;i2c.c: 67: }
    87  0449  0008               	return
    88  044A                     _IICNoAck
    89                           ;i2c.c: 71: RA4=1;
    90  044A  0183               	clrf	3	;select bank 0
    91  044B  1605               	bsf	5,4
    92                           ;i2c.c: 72: RA5=1;
    93  044C  1685               	bsf	5,5
    94                           ;i2c.c: 73: busDelay();
    95  044D  2427               	fcall	_busDelay
    96                           ;i2c.c: 74: RA5=0;
    97  044E  1285               	bcf	5,5
    98                           ;i2c.c: 75: }
    99  044F  0008               	return
   100  0450                     _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  0450  0183               	clrf	3	;select bank 0
   107  0451  00D1               	movwf	?a_IICSendByte
   108                           ;i2c.c: 80: unsigned char j=8;
   109  0452  3008               	movlw	8
   110  0453  00D2               	movwf	?a_IICSendByte+1
   111                           ;i2c.c: 81: for(;j>0;j--)
   112  0454                     l12
   113                           ;i2c.c: 82: {
   114                           ;i2c.c: 83: RA5=0;
   115  0454  1285               	bcf	5,5
   116                           ;i2c.c: 84: busDelay();
   117  0455  2427               	fcall	_busDelay
   118                           ;i2c.c: 85: sendbyte<<=1;
   119  0456  1003               	bcf	3,0
   120  0457  0DD1               	rlf	?a_IICSendByte
   121                           ;i2c.c: 86: RA4=CARRY;
   122  0458  1C03               	btfss	3,0
   123  0459  2C5C               	goto	u20
   124  045A  1605               	bsf	5,4
   125  045B  2C5D               	goto	u34
   126  045C                     u20
   127  045C  1205               	bcf	5,4
   128  045D                     u34
   129                           ;i2c.c: 87: busDelay();
   130  045D  2427               	fcall	_busDelay
   131                           ;i2c.c: 88: RA5=1;
   132  045E  1685               	bsf	5,5
   133                           ;i2c.c: 89: busDelay();
   134  045F  2427               	fcall	_busDelay
   135                           ;i2c.c: 90: }
   136  0460  0BD2               	decfsz	?a_IICSendByte+1
   137  0461  2C54               	goto	l12
   138                           ;i2c.c: 91: RA5=0;
   139  0462  1285               	bcf	5,5
   140                           ;i2c.c: 92: }
   141  0463  0008               	return
   142                           ;i2c.c: 94: unsigned char IICReceiveByte(void)
   143                           ;i2c.c: 95: { char receivebyte,i=8;
   144  0464                     _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  0464  3008               	movlw	8
   150  0465  0183               	clrf	3	;select bank 0
   151  0466  00C2               	movwf	?a_IICReceiveByte
   152                           ;i2c.c: 96: RA4=1;
   153  0467  1605               	bsf	5,4
   154                           ;i2c.c: 97: RA5=0;
   155  0468  1285               	bcf	5,5
   156                           ;i2c.c: 98: while(i--)
   157  0469  2C72               	goto	l16
   158  046A                     l17
   159                           ;i2c.c: 99: {
   160  046A  1685               	bsf	5,5
   161                           ;i2c.c: 101: busDelay();
   162  046B  2427               	fcall	_busDelay
   163                           ;i2c.c: 102: receivebyte=(receivebyte<<1)|RA4;
   164  046C  1003               	bcf	3,0
   165  046D  1A05               	btfsc	5,4
   166  046E  1403               	bsf	3,0
   167  046F  0DC3               	rlf	?a_IICReceiveByte+1
   168                           ;i2c.c: 103: busDelay();
   169  0470  2427               	fcall	_busDelay
   170                           ;i2c.c: 104: RA5=0;
   171  0471  1285               	bcf	5,5
   172  0472                     l16
   173                           ;i2c.c: 105: }
   174  0472  03C2               	decf	?a_IICReceiveByte
   175  0473  0F42               	incfsz	?a_IICReceiveByte,w
   176  0474  2C6A               	goto	l17
   177                           ;i2c.c: 106: return(receivebyte);
   178  0475  0843               	movf	?a_IICReceiveByte+1,w
   179                           ;i2c.c: 107: }
   180  0476  0008               	return
   181  0477                     _IICRecAck
   182                           ;i2c.c: 50: RA5=0;
   183  0477  0183               	clrf	3	;select bank 0
   184  0478  1285               	bcf	5,5
   185                           ;i2c.c: 51: RA4=1;
   186  0479  1605               	bsf	5,4
   187                           ;i2c.c: 52: RA5=1;
   188  047A  1685               	bsf	5,5
   189                           ;i2c.c: 53: TRISA4=1;
   190  047B  1683               	bsf	3,5
   191  047C  1605               	bsf	5,4
   192                           ;i2c.c: 54: temp=RA4;
   193  047D  1283               	bcf	3,5
   194  047E  1020               	bcf	_temp/(0+8),_temp& (0+7)
   195  047F  1A05               	btfsc	5,4
   196  0480  1420               	bsf	_temp/(0+8),_temp& (0+7)
   197                           ;i2c.c: 55: RA5=0;
   198  0481  1285               	bcf	5,5
   199                           ;i2c.c: 56: TRISA4=0;
   200  0482  1683               	bsf	3,5
   201  0483  1205               	bcf	5,4
   202                           ;i2c.c: 57: return(temp);
   203  0484  1003               	bcf	3,0
   204  0485  1283               	bcf	3,5
   205  0486  1820               	btfsc	_temp/(0+8),_temp& (0+7)
   206  0487  1403               	bsf	3,0
   207                           ;i2c.c: 58: }
   208  0488  0008               	return
   209  0489                     _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  0489  0183               	clrf	3	;select bank 0
   220  048A  00CD               	movwf	?a_I2C_WriteNByte
   221                           ;i2c.c: 181: unsigned char flag;
   222  048B  01CE               	clrf	?a_I2C_WriteNByte+1
   223                           ;i2c.c: 184: r=3;
   224  048C  3003               	movlw	3
   225  048D  00CF               	movwf	?a_I2C_WriteNByte+2
   226                           ;i2c.c: 185: while(r--)
   227  048E  2CAC               	goto	l20
   228  048F                     l21
   229                           ;i2c.c: 186: { IICStart();
   230  048F  242E  118A         	fcall	_IICStart
   231                           ;i2c.c: 187: IICSendByte(chip);
   232  0491  084D               	movf	?a_I2C_WriteNByte,w
   233  0492  2450               	fcall	_IICSendByte
   234                           ;i2c.c: 188: if (IICRecAck())
   235  0493  2477               	fcall	_IICRecAck
   236  0494  1803               	btfsc	3,0
   237  0495  2CAC               	goto	l20
   238                           ;i2c.c: 189: continue;
   239                           ;i2c.c: 190: IICSendByte(addr);
   240  0496  084A               	movf	?_I2C_WriteNByte+1,w
   241  0497  2450               	fcall	_IICSendByte
   242                           ;i2c.c: 191: if (IICRecAck())
   243  0498  2477               	fcall	_IICRecAck
   244  0499  1803               	btfsc	3,0
   245  049A  2CAC               	goto	l20
   246                           ;i2c.c: 192: continue;
   247                           ;i2c.c: 193: for (i=0;i<sum;i++)
   248  049B  01D0               	clrf	?a_I2C_WriteNByte+3
   249  049C                     l28
   250  049C  084C               	movf	?_I2C_WriteNByte+3,w
   251  049D  0250               	subwf	?a_I2C_WriteNByte+3,w
   252  049E  1803               	btfsc	3,0
   253  049F  2CA8               	goto	l26
   254                           ;i2c.c: 194: IICSendByte(*(p+i));
   255  04A0  0850               	movf	?a_I2C_WriteNByte+3,w
   256  04A1  074B               	addwf	?_I2C_WriteNByte+2,w
   257  04A2  0084               	movwf	4

⌨️ 快捷键说明

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