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

📄 i2c.lst

📁 基于温度传感器LM35与PIC16F877A的应用程序
💻 LST
📖 第 1 页 / 共 3 页
字号:


HI-TECH Software PICC Macro Assembler V8.05PL2
                                                      Sun Feb 22 17:11:19 2009


     1                           	processor	16F877A
     2                           	opt	pw 79
     3                           	psect	__Z49231UD_,global,delta=1
     4                           	psect	text0,local,class=CODE,delta=2
     5                           	psect	text6,local,class=CODE,delta=2
     6                           	psect	text10,local,class=CODE,delta=2
     7                           	psect	rbit_0,global,bit,class=BANK0,space=1,de
      +                          lta=1
     8                           	psect	rbss_0,global,class=BANK0,space=1,delta=
      +                          1
     9                           	psect	temp,global,ovrld,class=BANK0,space=1,de
      +                          lta=1
    10  0000                     
    11  0000                     
    12  0000                     
    13  0000                     
    14  0000                     
    15  0000                     
    16  0000                     
    17  0000                     
    18  0000                     
    19  0000                     
    20                           
    21                           	psect	__Z49231UD_
    22  0000                     _delay$delay_time	set	?_delay
    23                           
    24                           	psect	text0
    25  072A                     _delay
    26                           ;	_i assigned to ?a_delay+0
    27  0000                     _delay$i	set	?a_delay
    28                           ;I2C.C: 21: unsigned char i;
    29  072A  2F2F               	goto	l2
    30  072B                     l3
    31                           ;I2C.C: 23: {
    32  072B  01A2               	clrf	?a_delay
    33  072C                     l5
    34                           ;I2C.C: 25: {
    35                           ;I2C.C: 26: }
    36  072C  0AA2               	incf	?a_delay
    37  072D  0F22               	incfsz	?a_delay,w
    38  072E  2F2C               	goto	l5
    39  072F                     l2
    40                           ;I2C.C: 27: }
    41  072F  1283               	bcf	3,5
    42  0730  1303               	bcf	3,6	;carry unused
    43  0731  0822               	movf	?_delay,w
    44  0732  1903               	btfsc	3,2
    45  0733  03A3               	decf	?_delay+1
    46  0734  03A2               	decf	?_delay
    47  0735  0A22               	incf	?_delay,w
    48  0736  1903               	btfsc	3,2
    49  0737  0A23               	incf	?_delay+1,w
    50  0738  1903               	btfsc	3,2
    51  0739  0008               	return
    52  073A  2F2B               	goto	l3
    53                           
    54                           	psect	text6
    55  073B                     _lcd_disp
    56                           ;	_adr assigned to ?a_lcd_disp+0
    57  0000                     _lcd_disp$adr	set	?a_lcd_disp
    58                           ;_adr stored from w
    59  073B  0183               	clrf	3	;select bank 0
    60  073C  00A3               	movwf	?a_lcd_disp
    61                           ;I2C.C: 138: lcd_command_writedata(0x00,adr);
    62  073D  00A4               	movwf	?_lcd_command_writedata
    63  073E  3000               	movlw	0
    64  073F  27BB               	fcall	_lcd_command_writedata
    65                           ;I2C.C: 139: lcd_command_writedata(0xff,disp_da
      +                          ta);
    66  0740  0822               	movf	?_lcd_disp,w
    67  0741  00A4               	movwf	?_lcd_command_writedata
    68  0742  30FF               	movlw	-1
    69  0743  2FBB               	ljmp	_lcd_command_writedata
    70                           ;I2C.C: 71: unsigned char i2c_receive(void)
    71                           ;I2C.C: 72: {
    72  0744                     _i2c_receive
    73                           ;	_temp assigned to ?a_i2c_receive+0
    74  0000                     _i2c_receive$temp	set	?a_i2c_receive
    75                           ;	_i assigned to ?a_i2c_receive+1
    76  0000                     _i2c_receive$i	set	?a_i2c_receive+1
    77                           ;I2C.C: 73: unsigned char temp;
    78  0744  1683               	bsf	3,5
    79  0745  1303               	bcf	3,6	;carry unused
    80  0746  1411               	bsf	17,0
    81                           ;I2C.C: 76: for (i = 2; -- i;)
    82  0747  3002               	movlw	2
    83  0748  1283               	bcf	3,5
    84  0749  00A3               	movwf	?a_i2c_receive+1
    85  074A                     l33
    86                           ;I2C.C: 78: }
    87  074A  0BA3               	decfsz	?a_i2c_receive+1
    88  074B  2F4A               	goto	l33
    89                           ;I2C.C: 79: while (SSPIF == 0);
    90  074C                     l34
    91  074C  1D8C               	btfss	12,3
    92  074D  2F4C               	goto	l34
    93                           ;I2C.C: 80: SSPIF = 0;
    94  074E  118C               	bcf	12,3
    95                           ;I2C.C: 81: SSPBUF = 0xa0;
    96  074F  30A0               	movlw	-96
    97  0750  0093               	movwf	19	;volatile
    98                           ;I2C.C: 82: while (SSPIF == 0);
    99  0751                     l37
   100  0751  1D8C               	btfss	12,3
   101  0752  2F51               	goto	l37
   102                           ;I2C.C: 83: SSPIF = 0;
   103  0753  118C               	bcf	12,3
   104                           ;I2C.C: 84: SSPBUF = 0x00;
   105  0754  0193               	clrf	19	;volatile
   106                           ;I2C.C: 85: while (SSPIF == 0);
   107  0755                     l40
   108  0755  1D8C               	btfss	12,3
   109  0756  2F55               	goto	l40
   110                           ;I2C.C: 86: SSPIF = 0;
   111  0757  118C               	bcf	12,3
   112  0758                     l45
   113                           ;I2C.C: 87: do
   114                           ;I2C.C: 88: {
   115  0758  1683               	bsf	3,5
   116  0759  1491               	bsf	17,1
   117                           ;I2C.C: 90: }
   118  075A  1283               	bcf	3,5
   119  075B  1D8C               	btfss	12,3
   120  075C  2F58               	goto	l45
   121                           ;I2C.C: 92: SSPIF = 0;
   122  075D  118C               	bcf	12,3
   123                           ;I2C.C: 93: SSPBUF = 0xa1;
   124  075E  30A1               	movlw	-95
   125  075F  0093               	movwf	19	;volatile
   126                           ;I2C.C: 94: while (SSPIF == 0);
   127  0760                     l46
   128  0760  1D8C               	btfss	12,3
   129  0761  2F60               	goto	l46
   130                           ;I2C.C: 95: SSPIF = 0;
   131  0762  118C               	bcf	12,3
   132                           ;I2C.C: 96: while (SSPIF == 0);
   133  0763                     l49
   134  0763  1D8C               	btfss	12,3
   135  0764  2F63               	goto	l49
   136                           ;I2C.C: 97: temp = SSPBUF;
   137  0765  0813               	movf	19,w	;volatile
   138  0766  00A2               	movwf	?a_i2c_receive
   139                           ;I2C.C: 98: SSPIF = 0;
   140  0767  118C               	bcf	12,3
   141                           ;I2C.C: 99: PEN = 1;
   142  0768  1683               	bsf	3,5
   143  0769  1511               	bsf	17,2
   144                           ;I2C.C: 100: while (SSPIF == 0);
   145  076A                     l52
   146  076A  1283               	bcf	3,5
   147  076B  1D8C               	btfss	12,3
   148  076C  2F6A               	goto	l52
   149                           ;I2C.C: 101: SSPIF = 0;
   150  076D  118C               	bcf	12,3
   151                           ;I2C.C: 102: return temp;
   152  076E  0822               	movf	?a_i2c_receive,w
   153                           ;I2C.C: 103: }
   154  076F  0008               	return
   155                           ;I2C.C: 45: void i2c_send(unsigned char data)
   156                           ;I2C.C: 46: {
   157  0770                     _i2c_send
   158                           ;	_data assigned to ?a_i2c_send+0
   159  0000                     _i2c_send$data	set	?a_i2c_send
   160                           ;	_i assigned to ?a_i2c_send+1
   161  0000                     _i2c_send$i	set	?a_i2c_send+1
   162                           ;_data stored from w
   163  0770  0183               	clrf	3	;select bank 0
   164  0771  00A2               	movwf	?a_i2c_send
   165                           ;I2C.C: 47: unsigned char i;
   166  0772  1683               	bsf	3,5
   167  0773  1411               	bsf	17,0
   168                           ;I2C.C: 49: for (i = 2; -- i;)
   169  0774  3002               	movlw	2
   170  0775  1283               	bcf	3,5
   171  0776  00A3               	movwf	?a_i2c_send+1
   172  0777                     l13
   173                           ;I2C.C: 51: }
   174  0777  0BA3               	decfsz	?a_i2c_send+1
   175  0778  2F77               	goto	l13
   176  0779                     l16
   177                           ;I2C.C: 52: do
   178                           ;I2C.C: 53: {
   179  0779  1683               	bsf	3,5
   180  077A  1491               	bsf	17,1
   181                           ;I2C.C: 55: }
   182  077B  1283               	bcf	3,5
   183  077C  1D8C               	btfss	12,3
   184  077D  2F79               	goto	l16
   185                           ;I2C.C: 57: SSPIF = 0;
   186  077E  118C               	bcf	12,3
   187                           ;I2C.C: 58: SSPBUF = 0xa0;
   188  077F  30A0               	movlw	-96
   189  0780  0093               	movwf	19	;volatile
   190                           ;I2C.C: 59: while (SSPIF == 0);
   191  0781                     l17
   192  0781  1D8C               	btfss	12,3
   193  0782  2F81               	goto	l17
   194                           ;I2C.C: 60: SSPIF = 0;
   195  0783  118C               	bcf	12,3
   196                           ;I2C.C: 61: SSPBUF = 0x00;
   197  0784  0193               	clrf	19	;volatile
   198                           ;I2C.C: 62: while (SSPIF == 0);
   199  0785                     l20
   200  0785  1D8C               	btfss	12,3
   201  0786  2F85               	goto	l20
   202                           ;I2C.C: 63: SSPIF = 0;
   203  0787  118C               	bcf	12,3
   204                           ;I2C.C: 64: SSPBUF = data;
   205  0788  0822               	movf	?a_i2c_send,w
   206  0789  0093               	movwf	19	;volatile
   207                           ;I2C.C: 65: while (SSPIF == 0);
   208  078A                     l23
   209  078A  1D8C               	btfss	12,3
   210  078B  2F8A               	goto	l23
   211                           ;I2C.C: 66: SSPIF = 0;
   212  078C  118C               	bcf	12,3
   213                           ;I2C.C: 67: PEN = 1;
   214  078D  1683               	bsf	3,5
   215  078E  1511               	bsf	17,2
   216                           ;I2C.C: 68: while (SSPIF == 0);
   217  078F                     l26
   218  078F  1283               	bcf	3,5
   219  0790  1D8C               	btfss	12,3
   220  0791  2F8F               	goto	l26
   221                           ;I2C.C: 69: SSPIF = 0;
   222  0792  118C               	bcf	12,3
   223                           ;I2C.C: 70: }
   224  0793  0008               	return
   225                           ;I2C.C: 30: void i2c_init(void)
   226                           ;I2C.C: 31: {
   227  0794                     _i2c_init
   228                           ;I2C.C: 32: INTCON = 0x00;
   229  0794  018B               	clrf	11	;volatile
   230                           ;I2C.C: 33: SSPSTAT = 0x80;
   231  0795  3080               	movlw	-128
   232  0796  1683               	bsf	3,5
   233  0797  1303               	bcf	3,6	;carry unused
   234  0798  0094               	movwf	20	;volatile
   235                           ;I2C.C: 34: SSPCON = 0x08;
   236  0799  3008               	movlw	8
   237  079A  1283               	bcf	3,5
   238  079B  0094               	movwf	20	;volatile
   239                           ;I2C.C: 35: SSPCON2 = 0x00;

⌨️ 快捷键说明

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