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

📄 adc.lst

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


HI-TECH Software PICC Macro Assembler V8.05PL2
                                                      Wed Feb 25 11:10:35 2009


     1                           	processor	16F877A
     2                           	opt	pw 79
     3                           	psect	__Z49231UD_,global,delta=1
     4                           	psect	text0,local,class=CODE,delta=2
     5                           	psect	text4,local,class=CODE,delta=2
     6                           	psect	text9,local,class=CODE,delta=2
     7                           	psect	intcode,global,class=CODE,delta=2
     8                           	psect	intsave_0,global,ovrld,class=COMBANK,spa
      +                          ce=1,delta=1
     9                           	psect	intret,global,class=CODE,delta=2
    10                           	psect	intentry,global,class=CODE,delta=2
    11                           	psect	intsave,global,class=BANK0,space=1,delta
      +                          =1
    12                           	psect	rbit_0,global,bit,class=BANK0,space=1,de
      +                          lta=1
    13                           	psect	rbss_0,global,class=BANK0,space=1,delta=
      +                          1
    14                           	psect	rbss_2,global,class=BANK2,space=1,delta=
      +                          1
    15                           	psect	temp,global,ovrld,class=BANK0,space=1,de
      +                          lta=1
    16  0000                     
    17  0000                     
    18  0000                     
    19  0000                     
    20  0000                     
    21  0000                     
    22  0000                     
    23  0000                     
    24  0000                     
    25  0000                     
    26                           
    27                           	psect	__Z49231UD_
    28  0000                     _delay$delay_time	set	?_delay
    29                           
    30                           	psect	text0
    31  04EC                     _delay
    32                           ;	_i assigned to ?a_delay+0
    33  0000                     _delay$i	set	?a_delay
    34                           ;adc.c: 21: unsigned char i;
    35  04EC  2CF1               	goto	l2
    36  04ED                     l3
    37                           ;adc.c: 23: {
    38  04ED  01B3               	clrf	?a_delay
    39  04EE                     l5
    40                           ;adc.c: 25: {
    41                           ;adc.c: 26: }
    42  04EE  0AB3               	incf	?a_delay
    43  04EF  0F33               	incfsz	?a_delay,w
    44  04F0  2CEE               	goto	l5
    45  04F1                     l2
    46                           ;adc.c: 27: }
    47  04F1  1283               	bcf	3,5
    48  04F2  1303               	bcf	3,6	;carry unused
    49  04F3  0831               	movf	?_delay,w
    50  04F4  1903               	btfsc	3,2
    51  04F5  03B2               	decf	?_delay+1
    52  04F6  03B1               	decf	?_delay
    53  04F7  0A31               	incf	?_delay,w
    54  04F8  1903               	btfsc	3,2
    55  04F9  0A32               	incf	?_delay+1,w
    56  04FA  1903               	btfsc	3,2
    57  04FB  0008               	return
    58  04FC  2CED               	goto	l3
    59                           ;adc.c: 30: unsigned char lcd_busy(void)
    60                           ;adc.c: 31: {
    61  04FD                     _lcd_busy
    62                           ;	_temp assigned to ?a_lcd_busy+0
    63  0000                     _lcd_busy$temp	set	?a_lcd_busy
    64                           ;adc.c: 32: unsigned char temp;
    65  04FD  30FF               	movlw	-1
    66  04FE  0183               	clrf	3	;select bank 0
    67  04FF  0086               	movwf	6	;volatile
    68                           ;adc.c: 35: RS = 0;
    69  0500  1288               	bcf	8,5
    70                           ;adc.c: 36: RW = 1;
    71  0501  1708               	bsf	8,6
    72                           ;adc.c: 37: E = 1;
    73  0502  1788               	bsf	8,7
    74                           ;adc.c: 38: TRISB = 0xff;
    75  0503  1683               	bsf	3,5
    76  0504  0086               	movwf	6	;volatile
    77                           ;adc.c: 39: temp = PORTB;
    78  0505  1283               	bcf	3,5
    79  0506  0806               	movf	6,w	;volatile
    80  0507  00B5               	movwf	?a_lcd_busy
    81                           ;adc.c: 40: TRISB = 0x00;
    82  0508  1683               	bsf	3,5
    83  0509  0186               	clrf	6	;volatile
    84                           ;adc.c: 41: E = 0;
    85  050A  1283               	bcf	3,5
    86  050B  1388               	bcf	8,7
    87                           ;adc.c: 42: return (temp);
    88  050C  0835               	movf	?a_lcd_busy,w
    89                           ;adc.c: 43: }
    90  050D  0008               	return
    91                           ;adc.c: 45: void lcd_command_writedata(unsigned
      +                           char check,unsigned char data)
    92                           ;adc.c: 46: {
    93                           ;       param _data assigned to ?_lcd_command_w
      +                          ritedata+0
    94  0000                     _lcd_command_writedata$data	set	?_lcd_command_w
      +                          ritedata
    95  050E                     _lcd_command_writedata
    96                           ;	_check assigned to ?a_lcd_command_writedata+0
    97  0000                     _lcd_command_writedata$check	set	?a_lcd_command
      +                          _writedata
    98                           ;_check stored from w
    99  050E  0183               	clrf	3	;select bank 0
   100  050F  00B4               	movwf	?a_lcd_command_writedata
   101                           ;adc.c: 47: if (check == 0x00)
   102  0510  08B4               	movf	?a_lcd_command_writedata
   103  0511  1D03               	btfss	3,2
   104  0512  2D15               	goto	l10
   105                           ;adc.c: 48: {
   106  0513  1288               	bcf	8,5
   107                           ;adc.c: 50: }
   108  0514  2D16               	goto	l11
   109  0515                     l10
   110                           ;adc.c: 52: {
   111  0515  1688               	bsf	8,5
   112  0516                     l11
   113                           ;adc.c: 54: }
   114                           ;adc.c: 55: RW = 0;
   115  0516  1308               	bcf	8,6
   116                           ;adc.c: 56: PORTB = data;
   117  0517  0833               	movf	?_lcd_command_writedata,w
   118  0518  0086               	movwf	6	;volatile
   119                           ;adc.c: 57: E = 1;
   120  0519  1788               	bsf	8,7
   121                           ;adc.c: 58: E = 0;
   122  051A  1388               	bcf	8,7
   123                           ;adc.c: 59: while (lcd_busy() & 0x80);
   124  051B                     l12
   125  051B  24FD               	fcall	_lcd_busy
   126  051C  00F0               	movwf	btemp
   127  051D  1FF0               	btfss	btemp,7
   128  051E  0008               	return
   129  051F  2D1B               	goto	l12
   130  0520                     _lcd_disp
   131                           ;	_adr assigned to ?a_lcd_disp+0
   132  0000                     _lcd_disp$adr	set	?a_lcd_disp
   133                           ;_adr stored from w
   134  0520  0183               	clrf	3	;select bank 0
   135  0521  00B2               	movwf	?a_lcd_disp
   136                           ;adc.c: 64: lcd_command_writedata(0x00,adr);
   137  0522  00B3               	movwf	?_lcd_command_writedata
   138  0523  3000               	movlw	0
   139  0524  250E               	fcall	_lcd_command_writedata
   140                           ;adc.c: 65: lcd_command_writedata(0xff,disp_dat
      +                          a);
   141  0525  0831               	movf	?_lcd_disp,w
   142  0526  00B3               	movwf	?_lcd_command_writedata
   143  0527  30FF               	movlw	-1
   144  0528  2D0E               	ljmp	_lcd_command_writedata
   145                           ;adc.c: 95: void tempature_disp(void)
   146                           ;adc.c: 96: {
   147  0529                     _tempature_disp
   148                           ;	_c assigned to ?a_tempature_disp+0
   149  0000                     _tempature_disp$c	set	?a_tempature_disp
   150                           ;	_d assigned to ?a_tempature_disp+1
   151  0000                     _tempature_disp$d	set	?a_tempature_disp+1
   152                           ;	_a assigned to ?a_tempature_disp+2
   153  0000                     _tempature_disp$a	set	?a_tempature_disp+2
   154                           ;	_b assigned to ?a_tempature_disp+3
   155  0000                     _tempature_disp$b	set	?a_tempature_disp+3
   156                           ;	_i assigned to ?a_tempature_disp+4
   157  0000                     _tempature_disp$i	set	?a_tempature_disp+4
   158                           ;	_temperature_temp assigned to ?a_tempature_di
      +                          sp+5
   159  0000                     _tempature_disp$temperature_temp	set	?a_tempatu
      +                          re_disp+5
   160                           ;adc.c: 97: unsigned char i;
   161  0529  0183               	clrf	3	;select bank 0
   162  052A  1C20               	btfss	_disp_reload/(0+8),_disp_reload& (0+7)
   163  052B  0008               	return
   164                           ;adc.c: 102: {
   165  052C  138B               	bcf	11,7
   166                           ;adc.c: 104: for (i = 0; i < 40; i ++)
   167  052D  01AC               	clrf	?a_tempature_disp+4
   168  052E                     l21
   169                           ;adc.c: 105: {
   170                           ;adc.c: 106: checksum = checksum + temperature[
      +                          i];
   171  052E  082C               	movf	?a_tempature_disp+4,w
   172  052F  072C               	addwf	?a_tempature_disp+4,w
   173  0530  3E10               	addlw	_temperature^(0+256)
   174  0531  0084               	movwf	4
   175  0532  1783               	bsf	3,7
   176  0533  0800               	movf	0,w
   177  0534  00F0               	movwf	btemp
   178  0535  0A84               	incf	4
   179  0536  0800               	movf	0,w
   180  0537  00F1               	movwf	btemp+1
   181  0538  0870               	movf	btemp,w
   182  0539  07A2               	addwf	_checksum	;volatile
   183  053A  1803               	btfsc	3,0
   184  053B  0AA3               	incf	_checksum+1	;volatile
   185  053C  0871               	movf	btemp+1,w
   186  053D  07A3               	addwf	_checksum+1	;volatile
   187                           ;adc.c: 107: }
   188  053E  0AAC               	incf	?a_tempature_disp+4
   189  053F  3028               	movlw	40
   190  0540  022C               	subwf	?a_tempature_disp+4,w
   191  0541  1C03               	btfss	3,0
   192  0542  2D2E               	goto	l21
   193                           ;adc.c: 108: squ = (double)checksum;
   194  0543  0823               	movf	_checksum+1,w	;volatile
   195  0544  00F1               	movwf	btemp+1
   196  0545  0822               	movf	_checksum,w	;volatile
   197  0546  00F0               	movwf	btemp
   198  0547  120A  118A  2765   	fcall	lwtofl
   199  054A  0870               	movf	btemp,w
   200  054B  00A4               	movwf	_squ	;volatile
   201  054C  0871               	movf	btemp+1,w
   202  054D  00A5               	movwf	_squ+1	;volatile
   203  054E  0872               	movf	btemp+2,w
   204  054F  00A6               	movwf	_squ+2	;volatile
   205  0550  0873               	movf	btemp+3,w
   206  0551  00A7               	movwf	_squ+3	;volatile
   207                           ;adc.c: 109: squ = squ / 4;
   208  0552  01F4               	clrf	btemp+4
   209  0553  01F5               	clrf	btemp+5
   210  0554  3080               	movlw	128
   211  0555  00F6               	movwf	btemp+6
   212  0556  3040               	movlw	64
   213  0557  00F7               	movwf	btemp+7
   214  0558  3024               	movlw	_squ	;volatile
   215  0559  0084               	movwf	4
   216  055A  1383               	bcf	3,7
   217  055B  120A  118A  2687   	fcall	fldiv_f
   218                           ;adc.c: 110: temperature_temp = (unsigned long)
      +                          ((100 * squ) / 1023);
   219  055E  1283               	bcf	3,5
   220  055F  1303               	bcf	3,6	;carry unused
   221  0560  0824               	movf	_squ,w	;volatile
   222  0561  00F4               	movwf	btemp+4
   223  0562  0825               	movf	_squ+1,w	;volatile
   224  0563  00F5               	movwf	btemp+5
   225  0564  0826               	movf	_squ+2,w	;volatile
   226  0565  00F6               	movwf	btemp+6
   227  0566  0827               	movf	_squ+3,w	;volatile
   228  0567  00F7               	movwf	btemp+7
   229  0568  01F0               	clrf	btemp
   230  0569  01F1               	clrf	btemp+1
   231  056A  30C8               	movlw	200
   232  056B  00F2               	movwf	btemp+2
   233  056C  3042               	movlw	66
   234  056D  00F3               	movwf	btemp+3
   235  056E  120A  118A  276B   	fcall	flmul
   236  0571  01F4               	clrf	btemp+4
   237  0572  30C0               	movlw	192
   238  0573  00F5               	movwf	btemp+5
   239  0574  307F               	movlw	127
   240  0575  00F6               	movwf	btemp+6
   241  0576  3044               	movlw	68
   242  0577  00F7               	movwf	btemp+7
   243  0578  120A  118A  27BB   	fcall	fldiv
   244  057B  120A  118A  2693   	fcall	fltol
   245  057E  0870               	movf	btemp,w
   246  057F  00AD               	movwf	?a_tempature_disp+5
   247  0580  0871               	movf	btemp+1,w
   248  0581  00AE               	movwf	?a_tempature_disp+6
   249  0582  0872               	movf	btemp+2,w
   250  0583  00AF               	movwf	?a_tempature_disp+7
   251  0584  0873               	movf	btemp+3,w
   252  0585  00B0               	movwf	?a_tempature_disp+8
   253                           ;adc.c: 111: a = temperature_temp / 100;
   254  0586  3064               	movlw	100
   255  0587  00F4               	movwf	btemp+4
   256  0588  01F5               	clrf	btemp+5
   257  0589  01F6               	clrf	btemp+6
   258  058A  01F7               	clrf	btemp+7
   259  058B  082D               	movf	?a_tempature_disp+5,w
   260  058C  00F0               	movwf	btemp
   261  058D  082E               	movf	?a_tempature_disp+6,w
   262  058E  00F1               	movwf	btemp+1
   263  058F  082F               	movf	?a_tempature_disp+7,w
   264  0590  00F2               	movwf	btemp+2
   265  0591  0830               	movf	?a_tempature_disp+8,w
   266  0592  00F3               	movwf	btemp+3
   267  0593  120A  118A  26C4   	fcall	lldiv
      +       120A  118A         
   268  0598  0870               	movf	btemp,w
   269  0599  00AA               	movwf	?a_tempature_disp+2
   270                           ;adc.c: 112: lcd_disp(0x85, a + 0x30);
   271  059A  3E30               	addlw	48
   272  059B  00B1               	movwf	?_lcd_disp
   273  059C  3085               	movlw	-123
   274  059D  2520               	fcall	_lcd_disp
   275                           ;adc.c: 113: d = temperature_temp % 100;
   276  059E  3064               	movlw	100
   277  059F  00F4               	movwf	btemp+4

⌨️ 快捷键说明

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