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

📄 adc_wdt.lst

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


HI-TECH Software PICC Macro Assembler V8.05PL2
                                                      Thu Feb 26 20:36:22 2009


     1                           	processor	16F877A
     2                           	opt	pw 79
     3                           	psect	__Z49231UD_,global,delta=1
     4                           	psect	text0,local,class=CODE,delta=2
     5                           	psect	text2,local,class=CODE,delta=2
     6                           	psect	text11,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  04CC                     _delay
    32                           ;	_i assigned to ?a_delay+0
    33  0000                     _delay$i	set	?a_delay
    34                           ;adc_wdt.c: 21: unsigned char i;
    35  04CC  2CD1               	goto	l2
    36  04CD                     l3
    37                           ;adc_wdt.c: 23: {
    38  04CD  01B2               	clrf	?a_delay
    39  04CE                     l5
    40                           ;adc_wdt.c: 25: {
    41                           ;adc_wdt.c: 26: }
    42  04CE  0AB2               	incf	?a_delay
    43  04CF  0F32               	incfsz	?a_delay,w
    44  04D0  2CCE               	goto	l5
    45  04D1                     l2
    46                           ;adc_wdt.c: 27: }
    47  04D1  1283               	bcf	3,5
    48  04D2  1303               	bcf	3,6	;carry unused
    49  04D3  0830               	movf	?_delay,w
    50  04D4  1903               	btfsc	3,2
    51  04D5  03B1               	decf	?_delay+1
    52  04D6  03B0               	decf	?_delay
    53  04D7  0A30               	incf	?_delay,w
    54  04D8  1903               	btfsc	3,2
    55  04D9  0A31               	incf	?_delay+1,w
    56  04DA  1903               	btfsc	3,2
    57  04DB  0008               	return
    58  04DC  2CCD               	goto	l3
    59                           ;adc_wdt.c: 40: unsigned char lcd_busy(void)
    60                           ;adc_wdt.c: 41: {
    61  04DD                     _lcd_busy
    62                           ;	_temp assigned to ?a_lcd_busy+0
    63  0000                     _lcd_busy$temp	set	?a_lcd_busy
    64                           ;adc_wdt.c: 42: unsigned char temp;
    65  04DD  30FF               	movlw	-1
    66  04DE  0183               	clrf	3	;select bank 0
    67  04DF  0086               	movwf	6	;volatile
    68                           ;adc_wdt.c: 45: RS = 0;
    69  04E0  1288               	bcf	8,5
    70                           ;adc_wdt.c: 46: RW = 1;
    71  04E1  1708               	bsf	8,6
    72                           ;adc_wdt.c: 47: E = 1;
    73  04E2  1788               	bsf	8,7
    74                           ;adc_wdt.c: 48: TRISB = 0xff;
    75  04E3  1683               	bsf	3,5
    76  04E4  0086               	movwf	6	;volatile
    77                           ;adc_wdt.c: 49: temp = PORTB;
    78  04E5  1283               	bcf	3,5
    79  04E6  0806               	movf	6,w	;volatile
    80  04E7  00B4               	movwf	?a_lcd_busy
    81                           ;adc_wdt.c: 50: TRISB = 0x00;
    82  04E8  1683               	bsf	3,5
    83  04E9  0186               	clrf	6	;volatile
    84                           ;adc_wdt.c: 51: E = 0;
    85  04EA  1283               	bcf	3,5
    86  04EB  1388               	bcf	8,7
    87                           ;adc_wdt.c: 52: return (temp);
    88  04EC  0834               	movf	?a_lcd_busy,w
    89                           ;adc_wdt.c: 53: }
    90  04ED  0008               	return
    91                           ;adc_wdt.c: 55: void lcd_command_writedata(unsi
      +                          gned char check,unsigned char data)
    92                           ;adc_wdt.c: 56: {
    93                           ;       param _data assigned to ?_lcd_command_w
      +                          ritedata+0
    94  0000                     _lcd_command_writedata$data	set	?_lcd_command_w
      +                          ritedata
    95  04EE                     _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  04EE  0183               	clrf	3	;select bank 0
   100  04EF  00B3               	movwf	?a_lcd_command_writedata
   101                           ;adc_wdt.c: 57: if (check == 0x00)
   102  04F0  08B3               	movf	?a_lcd_command_writedata
   103  04F1  1D03               	btfss	3,2
   104  04F2  2CF5               	goto	l12
   105                           ;adc_wdt.c: 58: {
   106  04F3  1288               	bcf	8,5
   107                           ;adc_wdt.c: 60: }
   108  04F4  2CF6               	goto	l13
   109  04F5                     l12
   110                           ;adc_wdt.c: 62: {
   111  04F5  1688               	bsf	8,5
   112  04F6                     l13
   113                           ;adc_wdt.c: 64: }
   114                           ;adc_wdt.c: 65: RW = 0;
   115  04F6  1308               	bcf	8,6
   116                           ;adc_wdt.c: 66: PORTB = data;
   117  04F7  0832               	movf	?_lcd_command_writedata,w
   118  04F8  0086               	movwf	6	;volatile
   119                           ;adc_wdt.c: 67: E = 1;
   120  04F9  1788               	bsf	8,7
   121                           ;adc_wdt.c: 68: E = 0;
   122  04FA  1388               	bcf	8,7
   123                           ;adc_wdt.c: 69: while (lcd_busy() & 0x80);
   124  04FB                     l14
   125  04FB  24DD               	fcall	_lcd_busy
   126  04FC  00F0               	movwf	btemp
   127  04FD  1FF0               	btfss	btemp,7
   128  04FE  0008               	return
   129  04FF  2CFB               	goto	l14
   130  0500                     _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  0500  0183               	clrf	3	;select bank 0
   135  0501  00B1               	movwf	?a_lcd_disp
   136                           ;adc_wdt.c: 74: lcd_command_writedata(0x00,adr)
      +                          ;
   137  0502  00B2               	movwf	?_lcd_command_writedata
   138  0503  3000               	movlw	0
   139  0504  24EE               	fcall	_lcd_command_writedata
   140                           ;adc_wdt.c: 75: lcd_command_writedata(0xff,disp
      +                          _data);
   141  0505  0830               	movf	?_lcd_disp,w
   142  0506  00B2               	movwf	?_lcd_command_writedata
   143  0507  30FF               	movlw	-1
   144  0508  2CEE               	ljmp	_lcd_command_writedata
   145                           ;adc_wdt.c: 105: void tempature_disp(void)
   146                           ;adc_wdt.c: 106: {
   147  0509                     _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_wdt.c: 107: unsigned char i;
   161                           ;adc_wdt.c: 37: asm("clrwdt");
   162  0509  0064               	clrwdt	;#
   163                           ;adc_wdt.c: 38: }
   164  050A  0183               	clrf	3	;select bank 0
   165                           ;adc_wdt.c: 112: if (disp_reload)
   166  050B  1C20               	btfss	_disp_reload/(0+8),_disp_reload& (0+7)
   167  050C  0008               	return
   168                           ;adc_wdt.c: 113: {
   169  050D  138B               	bcf	11,7
   170                           ;adc_wdt.c: 115: for (i = 0; i < 40; i ++)
   171  050E  01AB               	clrf	?a_tempature_disp+4
   172  050F                     l23
   173                           ;adc_wdt.c: 116: {
   174                           ;adc_wdt.c: 117: checksum = checksum + temperat
      +                          ure[i];
   175  050F  082B               	movf	?a_tempature_disp+4,w
   176  0510  072B               	addwf	?a_tempature_disp+4,w
   177  0511  3E10               	addlw	_temperature^(0+256)
   178  0512  0084               	movwf	4
   179  0513  1783               	bsf	3,7
   180  0514  0800               	movf	0,w
   181  0515  00F0               	movwf	btemp
   182  0516  0A84               	incf	4
   183  0517  0800               	movf	0,w
   184  0518  00F1               	movwf	btemp+1
   185  0519  0870               	movf	btemp,w
   186  051A  07A2               	addwf	_checksum	;volatile
   187  051B  1803               	btfsc	3,0
   188  051C  0AA3               	incf	_checksum+1	;volatile
   189  051D  0871               	movf	btemp+1,w
   190  051E  07A3               	addwf	_checksum+1	;volatile
   191                           ;adc_wdt.c: 118: }
   192  051F  0AAB               	incf	?a_tempature_disp+4
   193  0520  3028               	movlw	40
   194  0521  022B               	subwf	?a_tempature_disp+4,w
   195  0522  1C03               	btfss	3,0
   196  0523  2D0F               	goto	l23
   197                           ;adc_wdt.c: 119: squ = (double)checksum;
   198  0524  0823               	movf	_checksum+1,w	;volatile
   199  0525  00F1               	movwf	btemp+1
   200  0526  0822               	movf	_checksum,w	;volatile
   201  0527  00F0               	movwf	btemp
   202  0528  120A  118A  272E   	fcall	lwtoft
   203  052B  0870               	movf	btemp,w
   204  052C  00A4               	movwf	_squ	;volatile
   205  052D  0871               	movf	btemp+1,w
   206  052E  00A5               	movwf	_squ+1	;volatile
   207  052F  0872               	movf	btemp+2,w
   208  0530  00A6               	movwf	_squ+2	;volatile
   209                           ;adc_wdt.c: 120: squ = squ / 4;
   210  0531  01F3               	clrf	btemp+3
   211  0532  3080               	movlw	128
   212  0533  00F4               	movwf	btemp+4
   213  0534  3040               	movlw	64
   214  0535  00F5               	movwf	btemp+5
   215  0536  3024               	movlw	_squ	;volatile
   216  0537  0084               	movwf	4
   217  0538  1383               	bcf	3,7
   218  0539  120A  118A  2670   	fcall	ftdiv_f
   219                           ;adc_wdt.c: 121: temperature_temp = (unsigned l
      +                          ong)((100 * squ) / 1023);
   220  053C  1283               	bcf	3,5
   221  053D  1303               	bcf	3,6	;carry unused
   222  053E  0824               	movf	_squ,w	;volatile
   223  053F  00F3               	movwf	btemp+3
   224  0540  0825               	movf	_squ+1,w	;volatile
   225  0541  00F4               	movwf	btemp+4
   226  0542  0826               	movf	_squ+2,w	;volatile
   227  0543  00F5               	movwf	btemp+5
   228  0544  01F0               	clrf	btemp
   229  0545  30C8               	movlw	200
   230  0546  00F1               	movwf	btemp+1
   231  0547  3042               	movlw	66
   232  0548  00F2               	movwf	btemp+2
   233  0549  120A  118A  26B1   	fcall	ftmul
   234  054C  30C0               	movlw	192
   235  054D  00F3               	movwf	btemp+3
   236  054E  307F               	movlw	127
   237  054F  00F4               	movwf	btemp+4
   238  0550  3044               	movlw	68
   239  0551  00F5               	movwf	btemp+5
   240  0552  120A  118A  2679   	fcall	ftdiv
   241  0555  120A  118A  26F2   	fcall	fttol
   242  0558  0870               	movf	btemp,w
   243  0559  00AC               	movwf	?a_tempature_disp+5
   244  055A  0871               	movf	btemp+1,w
   245  055B  00AD               	movwf	?a_tempature_disp+6
   246  055C  0872               	movf	btemp+2,w
   247  055D  00AE               	movwf	?a_tempature_disp+7
   248  055E  0873               	movf	btemp+3,w
   249  055F  00AF               	movwf	?a_tempature_disp+8
   250                           ;adc_wdt.c: 122: a = temperature_temp / 100;
   251  0560  3064               	movlw	100
   252  0561  00F4               	movwf	btemp+4
   253  0562  01F5               	clrf	btemp+5
   254  0563  01F6               	clrf	btemp+6
   255  0564  01F7               	clrf	btemp+7
   256  0565  082C               	movf	?a_tempature_disp+5,w
   257  0566  00F0               	movwf	btemp
   258  0567  082D               	movf	?a_tempature_disp+6,w
   259  0568  00F1               	movwf	btemp+1
   260  0569  082E               	movf	?a_tempature_disp+7,w
   261  056A  00F2               	movwf	btemp+2
   262  056B  082F               	movf	?a_tempature_disp+8,w
   263  056C  00F3               	movwf	btemp+3
   264  056D  120A  118A  2775   	fcall	lldiv
      +       120A  118A         
   265  0572  0870               	movf	btemp,w
   266  0573  00A9               	movwf	?a_tempature_disp+2
   267                           ;adc_wdt.c: 123: lcd_disp(0x85, a + 0x30);
   268  0574  3E30               	addlw	48
   269  0575  00B0               	movwf	?_lcd_disp
   270  0576  3085               	movlw	-123
   271  0577  2500               	fcall	_lcd_disp
   272                           ;adc_wdt.c: 124: d = temperature_temp % 100;
   273  0578  3064               	movlw	100
   274  0579  00F4               	movwf	btemp+4
   275  057A  01F5               	clrf	btemp+5
   276  057B  01F6               	clrf	btemp+6
   277  057C  01F7               	clrf	btemp+7
   278  057D  082C               	movf	?a_tempature_disp+5,w
   279  057E  00F0               	movwf	btemp
   280  057F  082D               	movf	?a_tempature_disp+6,w
   281  0580  00F1               	movwf	btemp+1
   282  0581  082E               	movf	?a_tempature_disp+7,w
   283  0582  00F2               	movwf	btemp+2
   284  0583  082F               	movf	?a_tempature_disp+8,w
   285  0584  00F3               	movwf	btemp+3
   286  0585  120A  118A  2775   	fcall	llmod
   287  0588  0874               	movf	btemp+4,w
   288  0589  00A8               	movwf	?a_tempature_disp+1
   289                           ;adc_wdt.c: 125: b = d / 10;
   290  058A  300A               	movlw	10

⌨️ 快捷键说明

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