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

📄 ds1302.lst

📁 上载的程序可以用于PIC单片机,也可以用于430单片机,本人原创,到至今还没有发现哪位网友想出这种办法,希望站长能多加分.
💻 LST
📖 第 1 页 / 共 2 页
字号:


HI-TECH Software PICC Macro Assembler V9.50PL2
                                                      Sun Jun 10 22:45:02 2007


     1                           	processor	16F877A
     2                           	opt	pw 79
     3                           	psect	text1,local,class=CODE,delta=2
     4                           	psect	text9,local,class=CODE,delta=2
     5                           	psect	rbss_0,global,class=BANK0,space=1,delta=
      +                          1
     6  0000                     
     7  0000                     
     8  0000                     
     9  0000                     
    10  0000                     
    11  0000                     
    12  0000                     
    13  0000                     
    14  0000                     
    15  0000                     
    16                           
    17                           	psect	text1
    18  072A                     _r_byte
    19                           ;	_i assigned to ?a_r_byte+0
    20  0000                     _r_byte$i	set	?a_r_byte
    21                           ;	_rb_data assigned to ?a_r_byte+1
    22  0000                     _r_byte$rb_data	set	?a_r_byte+1
    23                           ;DS1302.c: 43: unsigned char r_byte(void)
    24  072A  1683               	bsf	3,5
    25  072B  1303               	bcf	3,6	;carry unused
    26  072C  1487               	bsf	7,1	;volatile
    27                           ;DS1302.c: 48: for(i=8; i>0; i--)
    28  072D  3008               	movlw	8
    29  072E  1283               	bcf	3,5
    30  072F  00B1               	movwf	?a_r_byte
    31  0730                     l8
    32                           ;DS1302.c: 49: {
    33  0730  1022               	bcf	_pc_out,0
    34  0731  0822               	movf	_pc_out,w
    35  0732  0087               	movwf	7	;volatile
    36                           ;DS1302.c: 51: rb_data =rb_data >> 1;
    37  0733  1003               	bcf	3,0
    38  0734  0CB2               	rrf	?a_r_byte+1
    39                           ;DS1302.c: 52: rb_data=rb_data&0x7f;
    40  0735  13B2               	bcf	?a_r_byte+1,7
    41                           ;DS1302.c: 53: if(PORTC&0x02)
    42  0736  1887               	btfsc	7,1	;volatile
    43                           ;DS1302.c: 54: rb_data=rb_data|0x80;
    44  0737  17B2               	bsf	?a_r_byte+1,7
    45                           ;DS1302.c: 55: PORTC=(pc_out|=0x01);
    46  0738  1422               	bsf	_pc_out,0
    47  0739  0822               	movf	_pc_out,w
    48  073A  0087               	movwf	7	;volatile
    49  073B  0BB1               	decfsz	?a_r_byte
    50  073C  2F30               	goto	l8
    51                           ;DS1302.c: 56: }
    52  073D  1683               	bsf	3,5
    53  073E  1087               	bcf	7,1	;volatile
    54                           ;DS1302.c: 58: return(rb_data);
    55  073F  1283               	bcf	3,5
    56  0740  0832               	movf	?a_r_byte+1,w
    57                           ;DS1302.c: 59: }
    58  0741  0008               	return	;uses W
    59  0742                     _w_byte
    60                           ;	_dat assigned to ?a_w_byte+0
    61  0000                     _w_byte$dat	set	?a_w_byte
    62                           ;	_i assigned to ?a_w_byte+1
    63  0000                     _w_byte$i	set	?a_w_byte+1
    64                           ;_dat stored from w
    65  0742  0183               	clrf	3	;select bank 0
    66  0743  00B1               	movwf	?a_w_byte
    67                           ;DS1302.c: 27: void w_byte(unsigned char dat)
    68  0744  3008               	movlw	8
    69  0745  00B2               	movwf	?a_w_byte+1
    70  0746                     l2
    71                           ;DS1302.c: 31: {
    72  0746  1022               	bcf	_pc_out,0
    73  0747  0822               	movf	_pc_out,w
    74  0748  0087               	movwf	7	;volatile
    75                           ;DS1302.c: 33: if(!(dat&0x01))
    76  0749  1831               	btfsc	?a_w_byte,0
    77  074A  2F4D               	goto	l5
    78                           ;DS1302.c: 34: PORTC=(pc_out&=~0x02);
    79  074B  10A2               	bcf	_pc_out,1
    80  074C  2F4E               	goto	L1
    81  074D                     l5
    82                           ;DS1302.c: 35: else
    83  074D  14A2               	bsf	_pc_out,1
    84  074E                     L1
    85  074E  0822               	movf	_pc_out,w
    86  074F  0087               	movwf	7	;volatile
    87                           ;DS1302.c: 37: PORTC=(pc_out|=0x01);
    88  0750  1422               	bsf	_pc_out,0
    89  0751  0822               	movf	_pc_out,w
    90  0752  0087               	movwf	7	;volatile
    91                           ;DS1302.c: 38: dat = dat >> 1;
    92  0753  1003               	bcf	3,0
    93  0754  0CB1               	rrf	?a_w_byte
    94  0755  0BB2               	decfsz	?a_w_byte+1
    95  0756  2F46               	goto	l2
    96  0757  0008               	return
    97  0758                     _write_byte
    98                           ;	_addr assigned to ?a_write_byte+0
    99  0000                     _write_byte$addr	set	?a_write_byte
   100                           ;_addr stored from w
   101  0758  0183               	clrf	3	;select bank 0
   102  0759  00B0               	movwf	?a_write_byte
   103                           ;DS1302.c: 62: void write_byte(unsigned char ad
      +                          dr, unsigned char dat)
   104  075A  1022               	bcf	_pc_out,0
   105  075B  0822               	movf	_pc_out,w
   106  075C  0087               	movwf	7	;volatile
   107                           ;DS1302.c: 64: PORTC=(pc_out&=~0x04);
   108  075D  1122               	bcf	_pc_out,2
   109  075E  0822               	movf	_pc_out,w
   110  075F  0087               	movwf	7	;volatile
   111                           ;DS1302.c: 65: PORTC=(pc_out|=0x04);
   112  0760  1522               	bsf	_pc_out,2
   113  0761  0822               	movf	_pc_out,w
   114  0762  0087               	movwf	7	;volatile
   115                           ;DS1302.c: 66: w_byte(addr);
   116  0763  0830               	movf	?a_write_byte,w
   117  0764  2742               	fcall	_w_byte
   118                           ;DS1302.c: 67: w_byte(dat);
   119  0765  082F               	movf	?_write_byte,w
   120  0766  2742               	fcall	_w_byte
   121                           ;DS1302.c: 68: PORTC=(pc_out&=~0x04);
   122  0767  1122               	bcf	_pc_out,2
   123  0768  0822               	movf	_pc_out,w
   124  0769  0087               	movwf	7	;volatile
   125                           ;DS1302.c: 69: }
   126  076A  0008               	return	;W free
   127  076B                     _read_byte
   128                           ;	_addr assigned to ?a_read_byte+0
   129  0000                     _read_byte$addr	set	?a_read_byte
   130                           ;	_ucData assigned to ?a_read_byte+1
   131  0000                     _read_byte$ucData	set	?a_read_byte+1
   132                           ;_addr stored from w
   133  076B  0183               	clrf	3	;select bank 0
   134  076C  00AF               	movwf	?a_read_byte
   135                           ;DS1302.c: 72: unsigned char read_byte(unsigned
      +                           char addr)
   136  076D  1022               	bcf	_pc_out,0
   137  076E  0822               	movf	_pc_out,w
   138  076F  0087               	movwf	7	;volatile
   139                           ;DS1302.c: 76: PORTC=(pc_out&=~0x04);
   140  0770  1122               	bcf	_pc_out,2
   141  0771  0822               	movf	_pc_out,w
   142  0772  0087               	movwf	7	;volatile
   143                           ;DS1302.c: 77: PORTC=(pc_out|=0x04);
   144  0773  1522               	bsf	_pc_out,2
   145  0774  0822               	movf	_pc_out,w
   146  0775  0087               	movwf	7	;volatile
   147                           ;DS1302.c: 78: w_byte(addr);
   148  0776  082F               	movf	?a_read_byte,w
   149  0777  2742               	fcall	_w_byte
   150                           ;DS1302.c: 79: ucData = r_byte();
   151  0778  272A               	fcall	_r_byte
   152  0779  00B0               	movwf	?a_read_byte+1
   153                           ;DS1302.c: 80: PORTC=(pc_out&=~0x04);
   154  077A  1122               	bcf	_pc_out,2
   155  077B  0822               	movf	_pc_out,w
   156  077C  0087               	movwf	7	;volatile
   157                           ;DS1302.c: 81: return(ucData);
   158  077D  0830               	movf	?a_read_byte+1,w
   159                           ;DS1302.c: 82: }
   160  077E  0008               	return	;uses W
   161  077F                     _write_ds1302
   162                           ;	_p assigned to ?a_write_ds1302+0
   163  0000                     _write_ds1302$p	set	?a_write_ds1302
   164                           ;	_i assigned to ?a_write_ds1302+1
   165  0000                     _write_ds1302$i	set	?a_write_ds1302+1
   166                           ;	_addr assigned to ?a_write_ds1302+2
   167  0000                     _write_ds1302$addr	set	?a_write_ds1302+2
   168                           ;_p stored from w
   169  077F  0183               	clrf	3	;select bank 0
   170  0780  00AC               	movwf	?a_write_ds1302
   171                           ;DS1302.c: 85: void write_ds1302(unsigned char 
      +                          *p)
   172  0781  3080               	movlw	-128
   173  0782  00AE               	movwf	?a_write_ds1302+2
   174                           ;DS1302.c: 89: write_byte(0x8e,0x00);
   175  0783  01AF               	clrf	?_write_byte
   176  0784  308E               	movlw	-114
   177  0785  2758  120A  118A   	fcall	_write_byte
   178                           ;DS1302.c: 90: for(i =7; i>0; i--)
   179  0788  3007               	movlw	7
   180  0789  00AD               	movwf	?a_write_ds1302+1
   181  078A                     l15
   182                           ;DS1302.c: 91: {
   183  078A  082C               	movf	?a_write_ds1302,w
   184  078B  0084               	movwf	4
   185  078C  1383               	bcf	3,7
   186  078D  0800               	movf	0,w
   187  078E  00AF               	movwf	?_write_byte
   188  078F  082E               	movf	?a_write_ds1302+2,w
   189  0790  2758  120A  118A   	fcall	_write_byte
   190                           ;DS1302.c: 93: p++;
   191  0793  0AAC               	incf	?a_write_ds1302
   192                           ;DS1302.c: 94: addr +=2;
   193  0794  3002               	movlw	2
   194  0795  07AE               	addwf	?a_write_ds1302+2
   195  0796  0BAD               	decfsz	?a_write_ds1302+1
   196  0797  2F8A               	goto	l15
   197                           ;DS1302.c: 95: }
   198  0798  3080               	movlw	-128
   199  0799  00AF               	movwf	?_write_byte
   200  079A  308E               	movlw	-114
   201  079B  2F58               	ljmp	_write_byte
   202  079C                     _DS1302_INIT
   203                           ;DS1302.c: 119: void DS1302_INIT(void)
   204  079C  30F8               	movlw	-8
   205  079D  1683               	bsf	3,5
   206  079E  1303               	bcf	3,6	;carry unused
   207  079F  0587               	andwf	7	;volatile
   208                           ;DS1302.c: 126: ds_emp[0]=0x30;
   209  07A0  3030               	movlw	48
   210  07A1  1283               	bcf	3,5
   211  07A2  00A5               	movwf	_ds_emp
   212                           ;DS1302.c: 127: ds_emp[1]=0x30;
   213  07A3  00A6               	movwf	_ds_emp+1
   214                           ;DS1302.c: 128: ds_emp[2]=0x12;
   215  07A4  3012               	movlw	18
   216  07A5  00A7               	movwf	_ds_emp+2
   217                           ;DS1302.c: 129: ds_emp[3]=0x08;
   218  07A6  3008               	movlw	8
   219  07A7  00A8               	movwf	_ds_emp+3
   220                           ;DS1302.c: 130: ds_emp[4]=0x03;
   221  07A8  3003               	movlw	3
   222  07A9  00A9               	movwf	_ds_emp+4
   223                           ;DS1302.c: 131: ds_emp[5]=0x04;
   224  07AA  3004               	movlw	4
   225  07AB  00AA               	movwf	_ds_emp+5
   226                           ;DS1302.c: 132: ds_emp[6]=0x07;
   227  07AC  3007               	movlw	7
   228  07AD  00AB               	movwf	_ds_emp+6
   229                           ;DS1302.c: 133: write_ds1302(ds_emp);
   230  07AE  3025               	movlw	_ds_emp
   231  07AF  277F  120A  118A   	fcall	_write_ds1302
   232                           ;DS1302.c: 134: write_byte(0x8e,0x00);
   233  07B2  01AF               	clrf	?_write_byte
   234  07B3  308E               	movlw	-114
   235  07B4  2758  120A  118A   	fcall	_write_byte
   236                           ;DS1302.c: 135: write_byte(0x90,0xAB);
   237  07B7  30AB               	movlw	-85
   238  07B8  00AF               	movwf	?_write_byte
   239  07B9  3090               	movlw	-112
   240  07BA  2758  120A  118A   	fcall	_write_byte
   241                           ;DS1302.c: 136: write_byte(0x8e,0x80);
   242  07BD  3080               	movlw	-128
   243  07BE  00AF               	movwf	?_write_byte
   244  07BF  308E               	movlw	-114
   245  07C0  2F58               	ljmp	_write_byte
   246  07C1                     _DS1302_DATA
   247                           ;DS1302.c: 140: void DS1302_DATA(void)
   248  07C1  30F8               	movlw	-8
   249  07C2  1683               	bsf	3,5
   250  07C3  1303               	bcf	3,6	;carry unused
   251  07C4  0587               	andwf	7	;volatile
   252                           ;DS1302.c: 147: ds_emp[0]=0x30;
   253  07C5  3030               	movlw	48
   254  07C6  1283               	bcf	3,5
   255  07C7  00A5               	movwf	_ds_emp
   256                           ;DS1302.c: 148: ds_emp[1]=0x30;
   257  07C8  00A6               	movwf	_ds_emp+1
   258                           ;DS1302.c: 149: ds_emp[2]=0x12;
   259  07C9  3012               	movlw	18
   260  07CA  00A7               	movwf	_ds_emp+2
   261                           ;DS1302.c: 150: ds_emp[3]=0x08;
   262  07CB  3008               	movlw	8
   263  07CC  00A8               	movwf	_ds_emp+3
   264                           ;DS1302.c: 151: ds_emp[4]=0x03;
   265  07CD  3003               	movlw	3
   266  07CE  00A9               	movwf	_ds_emp+4
   267                           ;DS1302.c: 152: ds_emp[5]=0x04;
   268  07CF  3004               	movlw	4
   269  07D0  00AA               	movwf	_ds_emp+5
   270                           ;DS1302.c: 153: ds_emp[6]=0x07;
   271  07D1  3007               	movlw	7
   272  07D2  00AB               	movwf	_ds_emp+6
   273                           ;DS1302.c: 154: write_ds1302(ds_emp);
   274  07D3  3025               	movlw	_ds_emp
   275  07D4  2F7F               	ljmp	_write_ds1302
   276  07D5                     _read_ds1302
   277                           ;	_p assigned to ?a_read_ds1302+0
   278  0000                     _read_ds1302$p	set	?a_read_ds1302
   279                           ;	_addr assigned to ?a_read_ds1302+1
   280  0000                     _read_ds1302$addr	set	?a_read_ds1302+1
   281                           ;	_i assigned to ?a_read_ds1302+2
   282  0000                     _read_ds1302$i	set	?a_read_ds1302+2
   283                           ;_p stored from w
   284  07D5  0183               	clrf	3	;select bank 0
   285  07D6  00AC               	movwf	?a_read_ds1302
   286                           ;DS1302.c: 100: void read_ds1302(unsigned char 
      +                          *p)
   287  07D7  3081               	movlw	-127
   288  07D8  00AD               	movwf	?a_read_ds1302+1
   289                           ;DS1302.c: 107: TRISC&=0Xf8;;
   290  07D9  30F8               	movlw	-8
   291  07DA  1683               	bsf	3,5
   292  07DB  0587               	andwf	7	;volatile
   293                           ;DS1302.c: 109: for (i=0; i<7; i++)
   294  07DC  1283               	bcf	3,5
   295  07DD  01AE               	clrf	?a_read_ds1302+2
   296  07DE                     l19
   297                           ;DS1302.c: 110: {
   298  07DE  082C               	movf	?a_read_ds1302,w
   299  07DF  0084               	movwf	4
   300  07E0  1383               	bcf	3,7
   301  07E1  082D               	movf	?a_read_ds1302+1,w
   302  07E2  276B  120A  118A   	fcall	_read_byte
   303  07E5  1383               	bcf	3,7
   304  07E6  0080               	movwf	0
   305                           ;DS1302.c: 112: addr += 2;
   306  07E7  3002               	movlw	2
   307  07E8  07AD               	addwf	?a_read_ds1302+1
   308                           ;DS1302.c: 113: p++;
   309  07E9  0AAC               	incf	?a_read_ds1302
   310  07EA  0AAE               	incf	?a_read_ds1302+2
   311  07EB  3007               	movlw	7
   312  07EC  022E               	subwf	?a_read_ds1302+2,w
   313  07ED  1803               	btfsc	3,0
   314  07EE  0008               	return
   315  07EF  2FDE               	goto	l19
   316  07F0                     _main
   317                           ;DS1302.c: 158: main()
   318  07F0  27C1  120A  118A   	fcall	_DS1302_DATA
   319                           ;DS1302.c: 164: DS1302_INIT();

⌨️ 快捷键说明

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