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

📄 main.lst

📁 一個使用PIC16F877解GPS訊號的範例
💻 LST
📖 第 1 页 / 共 5 页
字号:


HI-TECH Software PICC Macro Assembler V8.05PL2
Serial number: HCPIC-00000                            Mon Dec 17 19:07:17 2007

Licensed to: MITSOS FOREVER
     1                           	processor	16F877
     2                           	opt	pw 79
     3                           	psect	__Z00000RS_,global,delta=1
     4                           	psect	text0,local,class=CODE,delta=2
     5                           	psect	text2,local,class=CODE,delta=2
     6                           	psect	text3,local,class=CODE,delta=2
     7                           	psect	strings,global,class=STRING,delta=2
     8                           	psect	const1,local,class=CONST,delta=2
     9                           	psect	text6,local,class=CODE,delta=2
    10                           	psect	text7,local,class=CODE,delta=2
    11                           	psect	text13,local,class=CODE,delta=2
    12                           	psect	text15,local,class=CODE,delta=2
    13                           	psect	text17,local,class=CODE,delta=2
    14                           	psect	text20,local,class=CODE,delta=2
    15                           	psect	config,global,class=CONFIG,delta=2
    16                           	psect	const2,local,class=CONST,delta=2
    17                           	psect	intcode,global,class=CODE,delta=2
    18                           	psect	intsave_0,global,ovrld,class=COMBANK,spa
      +                          ce=1,delta=1
    19                           	psect	intret,global,class=CODE,delta=2
    20                           	psect	intentry,global,class=CODE,delta=2
    21                           	psect	intsave,global,class=BANK0,space=1,delta
      +                          =1
    22                           	psect	text24,local,class=CODE,delta=2
    23                           	psect	rbit_0,global,bit,class=BANK0,space=1,de
      +                          lta=1
    24                           	psect	rbss_1,global,class=BANK1,space=1,delta=
      +                          1
    25                           	psect	rbss_0,global,class=BANK0,space=1,delta=
      +                          1
    26                           	psect	temp,global,ovrld,class=BANK0,space=1,de
      +                          lta=1
    27  0000                     
    28  0000                     
    29  0000                     
    30  0000                     
    31  0000                     
    32  0000                     
    33  0000                     
    34  0000                     
    35  0000                     
    36  0000                     
    37                           
    38                           	psect	__Z00000RS_
    39  0190                     
    40  0190                     
    41  0000                     _DelayBigUs$cnt	set	?_DelayBigUs
    42                           
    43                           	psect	text0
    44  02D9                     _DelayBigUs
    45                           ;	_i assigned to ?a_DelayBigUs+0
    46  0000                     _DelayBigUs$i	set	?a_DelayBigUs
    47                           ;delay.c: 10: unsigned char i;
    48  02D9  0183               	clrf	3	;select bank 0
    49  02DA  0829               	movf	?_DelayBigUs+1,w
    50  02DB  00A8               	movwf	?a_DelayBigUs
    51                           ;delay.c: 13: while(i>=1)
    52  02DC  2AE4               	goto	l7
    53  02DD                     l8
    54                           ;delay.c: 14: {
    55  02DD  03A8               	decf	?a_DelayBigUs
    56                           ;delay.c: 16: { delayus_variable=(unsigned char
      +                          )(253/2); asm("nop"); } asm("decfsz _delayus_va
      +                          riable,f"); asm("goto $ - 2");;
    57  02DE  307E               	movlw	126
    58  02DF  00A6               	movwf	_delayus_variable
    59  02E0  0000               	nop	;#
    60  02E1  0BA6               	decfsz	_delayus_variable	;#
    61  02E2  2AD7               	goto	($+-2)	;#
    62                           ;delay.c: 17: asm("clrwdt");
    63  02E3  0064               	clrwdt	;#
    64  02E4                     l7
    65                           ;delay.c: 18: }
    66  02E4  3001               	movlw	1
    67  02E5  0228               	subwf	?a_DelayBigUs,w
    68  02E6  1803               	btfsc	3,0
    69  02E7  2ADD               	goto	l8
    70                           ;delay.c: 19: { delayus_variable=(unsigned char
      +                          )((unsigned char)(cnt & 0xFF)/2); asm("nop"); }
      +                           asm("decfsz _delayus_variable,f"); asm("goto $
      +                           - 2");;
    71  02E8  1003               	bcf	3,0
    72  02E9  0C28               	rrf	?_DelayBigUs,w
    73  02EA  00A6               	movwf	_delayus_variable
    74  02EB  0000               	nop	;#
    75  02EC  0BA6               	decfsz	_delayus_variable	;#
    76  02ED  2AD7               	goto	($+-2)	;#
    77                           ;delay.c: 20: }
    78  02EE  0008               	return
    79                           
    80                           	psect	text2
    81  02C5                     _DelayBigMs
    82                           ;	_i assigned to ?a_DelayBigMs+0
    83  0000                     _DelayBigMs$i	set	?a_DelayBigMs
    84  02C5                     l20
    85                           ;delay.c: 50: unsigned char i;
    86                           ;delay.c: 52: i = 4;
    87  02C5  3004               	movlw	4
    88  02C6  0183               	clrf	3	;select bank 0
    89  02C7  00A8               	movwf	?a_DelayBigMs
    90  02C8                     l23
    91                           ;delay.c: 53: do {
    92                           ;delay.c: 54: { delayus_variable=(unsigned char
      +                          )(250/2); asm("nop"); } asm("decfsz _delayus_va
      +                          riable,f"); asm("goto $ - 2");;
    93  02C8  307D               	movlw	125
    94  02C9  00A6               	movwf	_delayus_variable
    95  02CA  0000               	nop	;#
    96  02CB  0BA6               	decfsz	_delayus_variable	;#
    97  02CC  2AC3               	goto	($+-2)	;#
    98                           ;delay.c: 55: asm("clrwdt");
    99  02CD  0064               	clrwdt	;#
   100                           ;delay.c: 56: } while(--i);
   101  02CE  0BA8               	decfsz	?a_DelayBigMs
   102  02CF  2AC8               	goto	l23
   103                           ;delay.c: 57: } while(--cnt);
   104  02D0  30FF               	movlw	-1
   105  02D1  07A8               	addwf	?_DelayBigMs
   106  02D2  1C03               	btfss	3,0
   107  02D3  03A9               	decf	?_DelayBigMs+1
   108  02D4  0829               	movf	?_DelayBigMs+1,w
   109  02D5  0428               	iorwf	?_DelayBigMs,w
   110  02D6  1903               	btfsc	3,2
   111  02D7  0008               	return
   112  02D8  2AC5               	goto	l20
   113                           
   114                           	psect	text3
   115                           ;GPS.C: 16: bank1 unsigned char GpsLock;
   116                           ;GPS.C: 17: bank1 unsigned char UtcH,UtcM,UtcS;
   117                           ;GPS.C: 18: bank1 unsigned char IntJDValue[2],F
      +                          loatJDValue[3];
   118                           ;GPS.C: 19: bank1 unsigned char IntWDValue;
   119                           ;GPS.C: 20: bank1 unsigned char FloatWDValue[3]
      +                          ;
   120                           ;GPS.C: 21: bit bJD_EW,bWD_NS;
   121                           ;GPS.C: 24: bank1 unsigned char GpsSeg_count;
   122                           ;GPS.C: 26: bank1 unsigned char GpsByte_count;
   123                           ;GPS.C: 27: bank1 unsigned char GpsCmd_number;
   124                           ;GPS.C: 28: bank1 unsigned char GpsCmd_mode;
   125                           ;GPS.C: 29: bank1 unsigned char GpsBuf_full;
   126                           ;GPS.C: 30: bank1 unsigned char GpsCmd[5];
   127                           ;GPS.C: 33: void GPS_Decode(unsigned char tmp)
   128                           ;GPS.C: 34: {
   129  040B                     _GPS_Decode
   130                           ;	_tmp assigned to ?a_GPS_Decode+0
   131  0000                     _GPS_Decode$tmp	set	?a_GPS_Decode
   132                           ;_tmp stored from w
   133  040B  0183               	clrf	3	;select bank 0
   134  040C  00AF               	movwf	?a_GPS_Decode
   135                           ;GPS.C: 35: unsigned char i;
   136  040D  2DCF               	goto	l26
   137  040E                     l27
   138                           ;GPS.C: 37: case '$':
   139                           ;GPS.C: 38: GpsCmd_number=0;
   140  040E  1683               	bsf	3,5
   141  040F  01A3               	clrf	_GpsCmd_number^(0+128)
   142                           ;GPS.C: 39: GpsCmd_mode=1;
   143  0410  01A2               	clrf	_GpsCmd_mode^(0+128)
   144  0411  0AA2               	incf	_GpsCmd_mode^(0+128)
   145  0412  2C15               	goto	L1
   146                           ;GPS.C: 40: GpsByte_count=0;
   147                           ;GPS.C: 41: break;
   148  0413                     l28
   149                           ;GPS.C: 42: case ',':
   150                           ;GPS.C: 43: GpsSeg_count++;
   151  0413  1683               	bsf	3,5
   152  0414  0AA5               	incf	_GpsSeg_count^(0+128)
   153  0415                     L1
   154                           ;GPS.C: 44: GpsByte_count=0;
   155  0415  01A1               	clrf	_GpsByte_count^(0+128)
   156                           ;GPS.C: 45: break;
   157  0416  2DDC               	goto	l24
   158                           ;GPS.C: 46: case '*':
   159                           ;GPS.C: 47: switch(GpsCmd_number){
   160  0417                     l32
   161                           ;GPS.C: 48: case 1:
   162                           ;GPS.C: 49: GpsBuf_full|=0x01;
   163  0417  1420               	bsf	_GpsBuf_full^(0+128),0
   164                           ;GPS.C: 50: break;
   165  0418  2C2D               	goto	l30
   166  0419                     l33
   167                           ;GPS.C: 51: case 2:
   168                           ;GPS.C: 52: GpsBuf_full|=0x02;
   169  0419  14A0               	bsf	_GpsBuf_full^(0+128),1
   170                           ;GPS.C: 53: break;
   171  041A  2C2D               	goto	l30
   172  041B                     l34
   173                           ;GPS.C: 54: case 3:
   174                           ;GPS.C: 55: GpsBuf_full|=0x04;
   175  041B  1520               	bsf	_GpsBuf_full^(0+128),2
   176                           ;GPS.C: 56: break;
   177  041C  2C2D               	goto	l30
   178  041D                     l35
   179                           ;GPS.C: 57: case 4:
   180                           ;GPS.C: 58: GpsBuf_full|=0x08;
   181  041D  15A0               	bsf	_GpsBuf_full^(0+128),3
   182                           ;GPS.C: 59: break;
   183  041E  2C2D               	goto	l30
   184  041F                     l31
   185  041F  1683               	bsf	3,5
   186  0420  0823               	movf	_GpsCmd_number^(0+128),w
   187  0421  3A01               	xorlw	1
   188  0422  1903               	btfsc	3,2
   189  0423  2C17               	goto	l32
   190  0424  3A03               	xorlw	3
   191  0425  1903               	btfsc	3,2
   192  0426  2C19               	goto	l33
   193  0427  3A01               	xorlw	1
   194  0428  1903               	btfsc	3,2
   195  0429  2C1B               	goto	l34
   196  042A  3A07               	xorlw	7
   197  042B  1903               	btfsc	3,2
   198  042C  2C1D               	goto	l35
   199  042D                     l30
   200                           ;GPS.C: 61: GpsCmd_mode=0;
   201  042D  01A2               	clrf	_GpsCmd_mode^(0+128)
   202                           ;GPS.C: 62: break;
   203  042E  2DDC               	goto	l24
   204  042F                     l36
   205                           ;GPS.C: 63: default:
   206                           ;GPS.C: 64: if(GpsCmd_mode==1){
   207  042F  1683               	bsf	3,5
   208  0430  0B22               	decfsz	_GpsCmd_mode^(0+128),w
   209  0431  2C79               	goto	l37
   210                           ;GPS.C: 66: GpsCmd[GpsByte_count]=tmp;
   211  0432  0821               	movf	_GpsByte_count^(0+128),w
   212  0433  3EB2               	addlw	_GpsCmd
   213  0434  0084               	movwf	4
   214  0435  1383               	bcf	3,7
   215  0436  1283               	bcf	3,5
   216  0437  082F               	movf	?a_GPS_Decode,w
   217  0438  0080               	movwf	0
   218                           ;GPS.C: 67: if(GpsByte_count>=4){
   219  0439  3004               	movlw	4
   220  043A  1683               	bsf	3,5
   221  043B  0221               	subwf	_GpsByte_count^(0+128),w
   222  043C  1C03               	btfss	3,0
   223  043D  2DCC               	goto	l53
   224                           ;GPS.C: 68: if(GpsCmd[0]=='G'){
   225  043E  0832               	movf	_GpsCmd^(0+128),w
   226  043F  3A47               	xorlw	71
   227  0440  1D03               	btfss	3,2

⌨️ 快捷键说明

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