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

📄 1.lst

📁 PIC16F877应用的AD转换主程序 并可以通过LCD显示
💻 LST
📖 第 1 页 / 共 2 页
字号:


HI-TECH Software PICC Macro Assembler V8.05PL1
Serial number: HCPIC-88888                            Sat Apr 26 09:38:20 2008

Licensed to: ONE TWO
     1                           	processor	16F877A
     2                           	opt	pw 79
     3                           	psect	__Z88888RS_,global,delta=1
     4                           	psect	strings,global,class=STRING,delta=2
     5                           	psect	const1,local,class=CONST,delta=2
     6                           	psect	const2,local,class=CONST,delta=2
     7                           	psect	text2,local,class=CODE,delta=2
     8                           	psect	text3,local,class=CODE,delta=2
     9                           	psect	intcode,global,class=CODE,delta=2
    10                           	psect	intsave_0,global,ovrld,class=COMBANK,spa
      +                          ce=1,delta=1
    11                           	psect	intret,global,class=CODE,delta=2
    12                           	psect	intentry,global,class=CODE,delta=2
    13                           	psect	intsave,global,class=BANK0,space=1,delta
      +                          =1
    14                           	psect	text7,local,class=CODE,delta=2
    15                           	psect	rbss_0,global,class=BANK0,space=1,delta=
      +                          1
    16                           	psect	temp,global,ovrld,class=BANK0,space=1,de
      +                          lta=1
    17  0000                     
    18  0000                     
    19  0000                     
    20  0000                     
    21  0000                     
    22  0000                     
    23  0000                     
    24  0000                     
    25  0000                     
    26  0000                     
    27                           
    28                           	psect	__Z88888RS_
    29  0190                     
    30  0190                     
    31                           
    32                           	psect	const1
    33  0032  0782               	addwf	2
    34  0033                     _table
    35  0033  343F               	retlw	63
    36  0034  3406               	retlw	6
    37  0035  345B               	retlw	91
    38  0036  344F               	retlw	79
    39  0037  3466               	retlw	102
    40  0038  346D               	retlw	109
    41  0039  347D               	retlw	125
    42  003A  3407               	retlw	7
    43  003B  347F               	retlw	127
    44  003C  346F               	retlw	111
    45                           
    46                           	psect	const2
    47  0027  0782               	addwf	2
    48  0028                     _table0
    49  0028  34BF               	retlw	-65
    50  0029  3486               	retlw	-122
    51  002A  34DB               	retlw	-37
    52  002B  34CF               	retlw	-49
    53  002C  34E6               	retlw	-26
    54  002D  34ED               	retlw	-19
    55  002E  34FD               	retlw	-3
    56  002F  3487               	retlw	-121
    57  0030  34FF               	retlw	-1
    58  0031  34EF               	retlw	-17
    59                           
    60                           	psect	text2
    61  06F6                     _deal_ad
    62                           ;	_temp assigned to ?a_deal_ad+0
    63  0000                     _deal_ad$temp	set	?a_deal_ad
    64                           ;1.c: 30: unsigned int temp;
    65  06F6  0183               	clrf	3	;select bank 0
    66  06F7  081E               	movf	30,w	;volatile
    67  06F8  00A4               	movwf	_ad_sample_result+1
    68  06F9  1683               	bsf	3,5
    69  06FA  081E               	movf	30,w	;volatile
    70  06FB  1283               	bcf	3,5
    71  06FC  00A3               	movwf	_ad_sample_result
    72                           ;1.c: 32: ad_flag=0;
    73  06FD  01A0               	clrf	_ad_flag
    74                           ;1.c: 33: adresult=(ad_sample_result*50)>>10;
    75  06FE  3032               	movlw	50
    76  06FF  00F2               	movwf	btemp+2
    77  0700  01F3               	clrf	btemp+3
    78  0701  0824               	movf	_ad_sample_result+1,w
    79  0702  00F1               	movwf	btemp+1
    80  0703  0823               	movf	_ad_sample_result,w
    81  0704  00F0               	movwf	btemp
    82  0705  120A  118A  26E1   	fcall	lwmul
      +       120A  118A         
    83  070A  300A               	movlw	10
    84  070B  00F0               	movwf	btemp
    85  070C                     u15
    86  070C  1003               	bcf	3,0
    87  070D  0CF5               	rrf	btemp+5
    88  070E  0CF4               	rrf	btemp+4
    89  070F  0BF0               	decfsz	btemp
    90  0710  2F0C               	goto	u15
    91  0711  0874               	movf	btemp+4,w
    92  0712  00A5               	movwf	_adresult
    93  0713  0875               	movf	btemp+5,w
    94  0714  00A6               	movwf	_adresult+1
    95                           ;1.c: 34: temp=adresult;
    96  0715  0825               	movf	_adresult,w
    97  0716  00A7               	movwf	?a_deal_ad
    98  0717  0826               	movf	_adresult+1,w
    99  0718  00A8               	movwf	?a_deal_ad+1
   100                           ;1.c: 35: adresult=(((temp/10)<<4)&0xf0)+(adres
      +                          ult%10);
   101  0719  300A               	movlw	10
   102  071A  00F2               	movwf	btemp+2
   103  071B  01F3               	clrf	btemp+3
   104  071C  0826               	movf	_adresult+1,w
   105  071D  00F1               	movwf	btemp+1
   106  071E  0825               	movf	_adresult,w
   107  071F  00F0               	movwf	btemp
   108  0720  120A  118A  27C6   	fcall	lwmod
   109  0723  0870               	movf	btemp,w
   110  0724  00A9               	movwf	?a_deal_ad+2
   111  0725  0871               	movf	btemp+1,w
   112  0726  00AA               	movwf	?a_deal_ad+3
   113  0727  300A               	movlw	10
   114  0728  00F2               	movwf	btemp+2
   115  0729  01F3               	clrf	btemp+3
   116  072A  0828               	movf	?a_deal_ad+1,w
   117  072B  00F1               	movwf	btemp+1
   118  072C  0827               	movf	?a_deal_ad,w
   119  072D  00F0               	movwf	btemp
   120  072E  120A  118A  27C6   	fcall	lwdiv
      +       120A  118A         
   121  0733  0EF4               	swapf	btemp+4
   122  0734  0EF5               	swapf	btemp+5
   123  0735  30F0               	movlw	240
   124  0736  05F5               	andwf	btemp+5
   125  0737  0874               	movf	btemp+4,w
   126  0738  390F               	andlw	15
   127  0739  04F5               	iorwf	btemp+5
   128  073A  30F0               	movlw	240
   129  073B  05F4               	andwf	btemp+4
   130  073C  05F4               	andwf	btemp+4
   131  073D  01F5               	clrf	btemp+5
   132  073E  0829               	movf	?a_deal_ad+2,w
   133  073F  07F4               	addwf	btemp+4
   134  0740  1803               	btfsc	3,0
   135  0741  0AF5               	incf	btemp+5
   136  0742  082A               	movf	?a_deal_ad+3,w
   137  0743  07F5               	addwf	btemp+5
   138  0744  0874               	movf	btemp+4,w
   139  0745  00A5               	movwf	_adresult
   140  0746  0875               	movf	btemp+5,w
   141  0747  00A6               	movwf	_adresult+1
   142                           ;1.c: 36: }
   143  0748  0008               	return
   144                           ;1.c: 47: void delay()
   145                           ;1.c: 48: {
   146  0749                     _delay
   147                           ;	_i assigned to ?a_delay+0
   148  0000                     _delay$i	set	?a_delay
   149                           ;1.c: 49: int i;
   150  0749  0183               	clrf	3	;select bank 0
   151  074A  01AB               	clrf	?a_delay
   152  074B  01AC               	clrf	?a_delay+1
   153  074C                     l7
   154                           ;1.c: 51: i=i;
   155  074C  082B               	movf	?a_delay,w
   156  074D  082C               	movf	?a_delay+1,w
   157  074E  0AAB               	incf	?a_delay
   158  074F  1903               	btfsc	3,2
   159  0750  0AAC               	incf	?a_delay+1
   160  0751  082C               	movf	?a_delay+1,w
   161  0752  3A80               	xorlw	128
   162  0753  00F0               	movwf	btemp
   163  0754  3080               	movlw	128
   164  0755  0270               	subwf	btemp,w
   165  0756  300A               	movlw	10
   166                           ;set	bank bits for (((?a_delay+0)))
   167  0757  1903               	btfsc	3,2
   168  0758  022B               	subwf	?a_delay,w
   169  0759  1803               	btfsc	3,0
   170  075A  0008               	return
   171  075B  2F4C               	goto	l7
   172                           ;1.c: 54: void display()
   173                           ;1.c: 55: {
   174  075C                     _display
   175                           ;	_data assigned to ?a_display+0
   176  0000                     _display$data	set	?a_display
   177                           ;	_data0 assigned to ?a_display+1
   178  0000                     _display$data0	set	?a_display+1
   179                           ;	_data1 assigned to ?a_display+2
   180  0000                     _display$data1	set	?a_display+2
   181                           ;	_data2 assigned to ?a_display+3
   182  0000                     _display$data2	set	?a_display+3
   183                           ;1.c: 56: unsigned char data,data0,data1,data2;
   184  075C  0183               	clrf	3	;select bank 0
   185  075D  0825               	movf	_adresult,w
   186  075E  390F               	andlw	15
   187  075F  00A8               	movwf	?a_display+1
   188                           ;1.c: 58: data=table[data0];
   189  0760  3000               	movlw	_table shr (0+8)
   190  0761  008A               	movwf	10
   191  0762  0828               	movf	?a_display+1,w
   192  0763  2032               	call	((_table+-1)& (0+2047))| (($)& (0+-2048))
   193  0764  120A  118A         	pagesel	$
   194  0766  00A7               	movwf	?a_display
   195                           ;1.c: 59: data1=(adresult&0xf0)>>4;
   196  0767  0826               	movf	_adresult+1,w
   197  0768  00F1               	movwf	btemp+1
   198  0769  0825               	movf	_adresult,w
   199  076A  00F0               	movwf	btemp
   200  076B  30F0               	movlw	240
   201  076C  05F0               	andwf	btemp
   202  076D  01F1               	clrf	btemp+1
   203  076E  3004               	movlw	4
   204  076F  00F2               	movwf	btemp+2
   205  0770                     u45
   206  0770  1003               	bcf	3,0
   207  0771  0CF1               	rrf	btemp+1
   208  0772  0CF0               	rrf	btemp
   209  0773  0BF2               	decfsz	btemp+2
   210  0774  2F70               	goto	u45
   211  0775  0870               	movf	btemp,w
   212  0776  00A9               	movwf	?a_display+2
   213                           ;1.c: 60: data2=table0[data1];
   214  0777  3000               	movlw	_table0 shr (0+8)
   215  0778  008A               	movwf	10
   216  0779  0829               	movf	?a_display+2,w
   217  077A  2027               	call	((_table0+-1)& (0+2047))| (($)& (0+-2048)
      +                          )
   218  077B  120A  118A         	pagesel	$
   219  077D  00AA               	movwf	?a_display+3
   220                           ;1.c: 61: RB4=1;RB3=1;
   221  077E  1606               	bsf	6,4
   222  077F  1586               	bsf	6,3
   223                           ;1.c: 62: RB1=0;
   224  0780  1086               	bcf	6,1
   225                           ;1.c: 63: if(RB1==0) { PORTD=data; delay(); POR
      +                          TD=0x00;RB1=1; RB2=0; }
   226  0781  1886               	btfsc	6,1
   227  0782  2F89               	goto	l11
   228  0783  0827               	movf	?a_display,w
   229  0784  0088               	movwf	8	;volatile
   230  0785  2749               	fcall	_delay
   231  0786  0188               	clrf	8	;volatile
   232  0787  1486               	bsf	6,1
   233  0788  1106               	bcf	6,2
   234  0789                     l11
   235                           ;1.c: 64: if(RB2==0) { PORTD=data2; delay(); PO
      +                          RTD=0x00;RB2=1; }
   236  0789  1906               	btfsc	6,2
   237  078A  0008               	return
   238  078B  082A               	movf	?a_display+3,w
   239  078C  0088               	movwf	8	;volatile
   240  078D  2749               	fcall	_delay
   241  078E  0188               	clrf	8	;volatile
   242  078F  1506               	bsf	6,2
   243                           ;1.c: 65: }
   244  0790  0008               	return
   245  0791                     _ad_initial
   246  0791  1683               	bsf	3,5
   247  0792  1303               	bcf	3,6	;carry unused
   248  0793  1405               	bsf	5,0	;volatile
   249                           ;1.c: 21: ADCON0=0x41;
   250  0794  3041               	movlw	65
   251  0795  1283               	bcf	3,5
   252  0796  009F               	movwf	31	;volatile
   253                           ;1.c: 22: ADCON1=0x82;
   254  0797  3082               	movlw	-126
   255  0798  1683               	bsf	3,5
   256  0799  009F               	movwf	31	;volatile
   257                           ;1.c: 23: ADIF=0;
   258  079A  1283               	bcf	3,5
   259  079B  130C               	bcf	12,6
   260                           ;1.c: 24: ADIE=1;
   261  079C  1683               	bsf	3,5
   262  079D  170C               	bsf	12,6
   263                           ;1.c: 26: }
   264  079E  1283               	bcf	3,5
   265  079F  0008               	return
   266  07A0                     _initial
   267                           ;1.c: 15: INTCON=0x00;
   268  07A0  018B               	clrf	11	;volatile
   269                           ;1.c: 16: ADCON1=0x07;
   270  07A1  3007               	movlw	7
   271  07A2  1683               	bsf	3,5
   272  07A3  1303               	bcf	3,6	;carry unused
   273  07A4  009F               	movwf	31	;volatile
   274                           ;1.c: 17: }
   275  07A5  1283               	bcf	3,5
   276  07A6  0008               	return
   277                           ;1.c: 67: void main()
   278                           ;1.c: 68: {
   279  07A7                     _main
   280                           ;1.c: 69: TRISB=0x00;
   281  07A7  1683               	bsf	3,5
   282  07A8  1303               	bcf	3,6	;carry unused
   283  07A9  0186               	clrf	6	;volatile
   284                           ;1.c: 70: TRISD=0x00;
   285  07AA  0188               	clrf	8	;volatile
   286                           ;1.c: 71: initial();
   287  07AB  27A0               	fcall	_initial
   288                           ;1.c: 72: ad_initial();
   289  07AC  2791               	fcall	_ad_initial
   290                           ;1.c: 73: INTCON=0xc0;
   291  07AD  30C0               	movlw	-64
   292  07AE  008B               	movwf	11	;volatile
   293  07AF                     l15
   294                           ;1.c: 74: while(1)
   295                           ;1.c: 75: {
   296  07AF  275C  120A  118A   	fcall	_display
   297                           ;1.c: 77: if(ad_flag==1)
   298  07B2  0B20               	decfsz	_ad_flag,w
   299  07B3  2FB7               	goto	l17
   300                           ;1.c: 78: deal_ad();
   301  07B4  26F6  120A  118A   	fcall	_deal_ad
   302  07B7                     l17
   303                           ;1.c: 79: if(ad_delay>0x0f)
   304  07B7  3000               	movlw	0
   305  07B8  0222               	subwf	_ad_delay+1,w
   306  07B9  3010               	movlw	16
   307  07BA  1903               	btfsc	3,2
   308  07BB  0221               	subwf	_ad_delay,w
   309  07BC  1C03               	btfss	3,0
   310  07BD  2FC2               	goto	l18
   311                           ;1.c: 80: {
   312  07BE  01A1               	clrf	_ad_delay
   313  07BF  01A2               	clrf	_ad_delay+1
   314                           ;1.c: 82: ADCON0=ADCON0|0x04;
   315  07C0  151F               	bsf	31,2	;volatile
   316                           ;1.c: 83: }
   317  07C1  2FAF               	goto	l15
   318  07C2                     l18
   319  07C2  0AA1               	incf	_ad_delay
   320  07C3  1903               	btfsc	3,2
   321  07C4  0AA2               	incf	_ad_delay+1
   322                           ;1.c: 85: }
   323  07C5  2FAF               	goto	l15
   324                           
   325                           	psect	intcode
   326  000B                     _ad
   327  000B                     int_func
   328                           ;1.c: 41: if(ADIF==1)
   329  000B  0183               	clrf	3	;select bank 0
   330  000C  1F0C               	btfss	12,6
   331  000D  2811               	goto	l4
   332                           ;1.c: 42: { ADIF=0;
   333  000E  130C               	bcf	12,6

⌨️ 快捷键说明

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