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

📄 i2c.lst

📁 LED控制
💻 LST
📖 第 1 页 / 共 4 页
字号:


HI-TECH Software PICC Macro Assembler V8.05PL2
Serial number: HCPIC-88888                            Thu Apr 23 16:52:09 2009

Licensed to: ONE TWO
     1                           	processor	16F737
     2                           	opt	pw 79
     3                           	psect	__Z88888RS_,global,delta=1
     4                           	psect	text0,local,class=CODE,delta=2
     5                           	psect	text1,local,class=CODE,delta=2
     6                           	psect	text2,local,class=CODE,delta=2
     7                           	psect	text3,local,class=CODE,delta=2
     8                           	psect	text4,local,class=CODE,delta=2
     9                           	psect	text5,local,class=CODE,delta=2
    10  0000                     
    11  0000                     
    12  0000                     
    13  0000                     
    14  0000                     
    15  0000                     
    16  0000                     
    17  0000                     
    18  0000                     
    19  0000                     
    20                           
    21                           	psect	__Z88888RS_
    22  0190                     
    23  0190                     
    24                           
    25                           	psect	text0
    26  04F4                     _I2C_Init
    27                           ;I2C.c: 16: TRISC3 =0;
    28  04F4  1683               	bsf	3,5
    29  04F5  1303               	bcf	3,6	;carry unused
    30  04F6  1187               	bcf	7,3
    31                           ;I2C.c: 17: TRISC4 =0;
    32  04F7  1207               	bcf	7,4
    33                           ;I2C.c: 19: RC3 = 1;
    34  04F8  1283               	bcf	3,5
    35  04F9  1587               	bsf	7,3
    36                           ;I2C.c: 20: RC4 = 1;
    37  04FA  1607               	bsf	7,4
    38                           ;I2C.c: 22: SSPCON &= ~(0x0F);
    39  04FB  30F0               	movlw	-16
    40  04FC  0594               	andwf	20	;volatile
    41                           ;I2C.c: 23: SSPCON |= 0x08;
    42  04FD  1594               	bsf	20,3	;volatile
    43                           ;I2C.c: 29: SMP = 1;
    44  04FE  1683               	bsf	3,5
    45  04FF  1794               	bsf	20,7
    46                           ;I2C.c: 30: CKE = 0;
    47  0500  1314               	bcf	20,6
    48                           ;I2C.c: 31: SSPADD = 0x13;
    49  0501  3013               	movlw	19
    50  0502  0093               	movwf	19
    51                           ;I2C.c: 32: SSPEN = 1;
    52  0503  1283               	bcf	3,5
    53  0504  1694               	bsf	20,5
    54                           ;I2C.c: 34: }
    55  0505  0008               	return
    56                           
    57                           	psect	text1
    58  0678                     _EEPROM_ReadByte
    59                           ;	_cnt assigned to ?a_EEPROM_ReadByte+0
    60  0000                     _EEPROM_ReadByte$cnt	set	?a_EEPROM_ReadByte
    61                           ;I2C.c: 39: unsigned char cnt=0;
    62  0678  0183               	clrf	3	;select bank 0
    63  0679  01A6               	clrf	?a_EEPROM_ReadByte
    64                           ;I2C.c: 41: while((SSPCON2 & 0x1F) || RW ){
    65  067A  2E82               	goto	l3
    66  067B                     l4
    67                           ;I2C.c: 42: SSPEN = 0;
    68  067B  1283               	bcf	3,5
    69  067C  1294               	bcf	20,5
    70                           ;I2C.c: 43: asm("nop");
    71  067D  0000               	nop	;#
    72                           ;I2C.c: 44: RC3 = 1;
    73  067E  1587               	bsf	7,3
    74                           ;I2C.c: 45: RC4 = 1;
    75  067F  1607               	bsf	7,4
    76                           ;I2C.c: 46: asm("nop");
    77  0680  0000               	nop	;#
    78                           ;I2C.c: 47: SSPEN = 1;
    79  0681  1694               	bsf	20,5
    80  0682                     l3
    81                           ;I2C.c: 48: }
    82  0682  1683               	bsf	3,5
    83  0683  0811               	movf	17,w	;volatile
    84  0684  391F               	andlw	31
    85  0685  1903               	btfsc	3,2
    86  0686  1914               	btfsc	20,2
    87  0687  2E7B               	goto	l4
    88                           ;I2C.c: 50: SEN = 1;
    89  0688  1411               	bsf	17,0
    90                           ;I2C.c: 51: while(SEN);
    91  0689                     l6
    92  0689  1811               	btfsc	17,0
    93  068A  2E89               	goto	l6
    94                           ;I2C.c: 52: SSPIF = 0;
    95  068B  1283               	bcf	3,5
    96  068C  118C               	bcf	12,3
    97                           ;I2C.c: 53: SSPBUF = 0b10100000;
    98  068D  30A0               	movlw	-96
    99  068E  0093               	movwf	19	;volatile
   100                           ;I2C.c: 54: while(!SSPIF);
   101  068F                     l9
   102  068F  198C               	btfsc	12,3
   103  0690  2EA0               	goto	l12
   104  0691  2E8F               	goto	l9
   105                           ;I2C.c: 56: while(ACKSTAT){
   106  0692                     l13
   107                           ;I2C.c: 57: RSEN = 1;
   108  0692  1491               	bsf	17,1
   109                           ;I2C.c: 58: while(RSEN);
   110  0693                     l15
   111  0693  1891               	btfsc	17,1
   112  0694  2E93               	goto	l15
   113                           ;I2C.c: 59: SSPIF = 0;
   114  0695  1283               	bcf	3,5
   115  0696  118C               	bcf	12,3
   116                           ;I2C.c: 60: SSPBUF = 0b10100000;
   117  0697  30A0               	movlw	-96
   118  0698  0093               	movwf	19	;volatile
   119                           ;I2C.c: 61: while(!SSPIF);
   120  0699                     l18
   121  0699  1D8C               	btfss	12,3
   122  069A  2E99               	goto	l18
   123                           ;I2C.c: 62: if(cnt++>200) return 0xAA;
   124  069B  30C9               	movlw	-55
   125  069C  0226               	subwf	?a_EEPROM_ReadByte,w
   126  069D  0AA6               	incf	?a_EEPROM_ReadByte
   127  069E  1803               	btfsc	3,0
   128  069F  2EC5               	goto	u180
   129  06A0                     l12
   130  06A0  1683               	bsf	3,5
   131  06A1  1B11               	btfsc	17,6
   132  06A2  2E92               	goto	l13
   133                           ;I2C.c: 65: if(ACKSTAT) return 0xAA;
   134  06A3  1B11               	btfsc	17,6
   135  06A4  2EC5               	goto	u180
   136                           ;I2C.c: 66: SSPIF = 0;
   137  06A5  1283               	bcf	3,5
   138  06A6  118C               	bcf	12,3
   139                           ;I2C.c: 67: SSPBUF = (unsigned char)(Addr>>8);
   140  06A7  0827               	movf	?_EEPROM_ReadByte+1,w
   141  06A8  0093               	movwf	19	;volatile
   142                           ;I2C.c: 68: while(!SSPIF);
   143  06A9                     l23
   144  06A9  1D8C               	btfss	12,3
   145  06AA  2EA9               	goto	l23
   146                           ;I2C.c: 70: if(ACKSTAT) return 0xAA;
   147  06AB  1683               	bsf	3,5
   148  06AC  1B11               	btfsc	17,6
   149  06AD  2EC5               	goto	u180
   150                           ;I2C.c: 71: SSPIF = 0;
   151  06AE  1283               	bcf	3,5
   152  06AF  118C               	bcf	12,3
   153                           ;I2C.c: 72: SSPBUF = (unsigned char)Addr;
   154  06B0  0826               	movf	?_EEPROM_ReadByte,w
   155  06B1  0093               	movwf	19	;volatile
   156                           ;I2C.c: 73: while(!SSPIF);
   157  06B2                     l27
   158  06B2  1D8C               	btfss	12,3
   159  06B3  2EB2               	goto	l27
   160                           ;I2C.c: 75: if(ACKSTAT) return 0xAA;
   161  06B4  1683               	bsf	3,5
   162  06B5  1B11               	btfsc	17,6
   163  06B6  2EC5               	goto	u180
   164                           ;I2C.c: 76: RSEN = 1;
   165  06B7  1491               	bsf	17,1
   166                           ;I2C.c: 77: while(RSEN);
   167  06B8                     l31
   168  06B8  1891               	btfsc	17,1
   169  06B9  2EB8               	goto	l31
   170                           ;I2C.c: 79: if(ACKSTAT) return 0xAA;
   171  06BA  1B11               	btfsc	17,6
   172  06BB  2EC5               	goto	u180
   173                           ;I2C.c: 80: SSPIF = 0;
   174  06BC  1283               	bcf	3,5
   175  06BD  118C               	bcf	12,3
   176                           ;I2C.c: 81: SSPBUF = 0b10100001;
   177  06BE  30A1               	movlw	-95
   178  06BF  0093               	movwf	19	;volatile
   179                           ;I2C.c: 82: while(!SSPIF);
   180  06C0                     l35
   181  06C0  1D8C               	btfss	12,3
   182  06C1  2EC0               	goto	l35
   183                           ;I2C.c: 84: if(ACKSTAT) return 0xAA;
   184  06C2  1683               	bsf	3,5
   185  06C3  1F11               	btfss	17,6
   186  06C4  2EC7               	goto	l38
   187  06C5                     u180
   188  06C5  30AA               	movlw	-86
   189  06C6  2EDD               	goto	l2
   190  06C7                     l38
   191                           ;I2C.c: 85: SSPIF = 0;
   192  06C7  1283               	bcf	3,5
   193  06C8  118C               	bcf	12,3
   194                           ;I2C.c: 86: RCEN = 1;
   195  06C9  1683               	bsf	3,5
   196  06CA  1591               	bsf	17,3
   197                           ;I2C.c: 88: while(!SSPIF);
   198  06CB                     l39
   199  06CB  1283               	bcf	3,5
   200  06CC  1D8C               	btfss	12,3
   201  06CD  2ECB               	goto	l39
   202                           ;I2C.c: 91: ACKDT = 1;
   203  06CE  1683               	bsf	3,5
   204  06CF  1691               	bsf	17,5
   205                           ;I2C.c: 92: ACKEN = 1;
   206  06D0  1611               	bsf	17,4
   207                           ;I2C.c: 93: while (ACKEN ==1);
   208  06D1                     l42
   209  06D1  1A11               	btfsc	17,4
   210  06D2  2ED1               	goto	l42
   211                           ;I2C.c: 95: PEN = 1;
   212  06D3  1511               	bsf	17,2
   213                           ;I2C.c: 96: while(PEN);
   214  06D4                     l45
   215  06D4  1911               	btfsc	17,2
   216  06D5  2ED4               	goto	l45
   217                           ;I2C.c: 98: *DataBuf = SSPBUF;
   218  06D6  1283               	bcf	3,5
   219  06D7  0828               	movf	?_EEPROM_ReadByte+2,w
   220  06D8  0084               	movwf	4
   221  06D9  1383               	bcf	3,7
   222  06DA  0813               	movf	19,w	;volatile
   223  06DB  0080               	movwf	0
   224                           ;I2C.c: 99: return 0;
   225  06DC  3000               	movlw	0
   226                           ;I2C.c: 100: }
   227  06DD                     l2
   228  06DD  1283               	bcf	3,5
   229  06DE  0008               	return
   230                           
   231                           	psect	text2
   232  05C8                     _EEPROM_WriteByte
   233                           ;	_cnt assigned to ?a_EEPROM_WriteByte+0
   234  0000                     _EEPROM_WriteByte$cnt	set	?a_EEPROM_WriteByte
   235                           ;I2C.c: 105: unsigned char cnt=0;
   236  05C8  0183               	clrf	3	;select bank 0
   237  05C9  01A6               	clrf	?a_EEPROM_WriteByte
   238                           ;I2C.c: 106: while((SSPCON2 & 0x1F) || RW ){
   239  05CA  2DD2               	goto	l49
   240  05CB                     l50
   241                           ;I2C.c: 107: SSPEN = 0;
   242  05CB  1283               	bcf	3,5
   243  05CC  1294               	bcf	20,5
   244                           ;I2C.c: 108: asm("nop");
   245  05CD  0000               	nop	;#
   246                           ;I2C.c: 109: RC3 = 1;
   247  05CE  1587               	bsf	7,3

⌨️ 快捷键说明

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