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

📄 ds1302_main.lst

📁 该程序能是对DS1302时钟芯片的操作程序
💻 LST
📖 第 1 页 / 共 2 页
字号:


HI-TECH Software PICC Macro Assembler V9.60PL1
                                                      Sun Feb 08 16:31:10 2009


     1                           	processor	16F877A
     2                           	opt	pw 79
     3                           	psect	strings,global,class=STRING,delta=2
     4                           	psect	const1,local,class=CONST,delta=2
     5                           	psect	text0,local,class=CODE,delta=2
     6                           	psect	text1,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	rbss_0,global,class=BANK0,space=1,delta=
      +                          1
    13  0000                     
    14  0000                     
    15  0000                     
    16  0000                     
    17  0000                     
    18  0000                     
    19  0000                     
    20  0000                     
    21  0000                     
    22  0000                     
    23                           
    24                           	psect	const1
    25  012D  0782               	addwf	2
    26  012E                     _LEDCODE
    27  012E  343F               	retlw	63
    28  012F  3406               	retlw	6
    29  0130  345B               	retlw	91
    30  0131  344F               	retlw	79
    31  0132  3466               	retlw	102
    32  0133  346D               	retlw	109
    33  0134  347D               	retlw	125
    34  0135  3407               	retlw	7
    35  0136  347F               	retlw	127
    36  0137  346F               	retlw	111
    37  0138  3440               	retlw	64
    38                           
    39                           	psect	text0
    40  0049                     _main
    41                           ;	_temp assigned to ?a_main+0
    42  0000                     _main$temp	set	?a_main
    43                           ;ds1302_main.c: 30: void main(void)
    44  0049  3007               	movlw	7
    45  004A  1683               	bsf	3,5
    46  004B  1303               	bcf	3,6	;carry unused
    47  004C  049F               	iorwf	31	;volatile
    48                           ;ds1302_main.c: 35: TRISD=0;
    49  004D  0188               	clrf	8	;volatile
    50                           ;ds1302_main.c: 36: TRISE=0;
    51  004E  0189               	clrf	9	;volatile
    52                           ;ds1302_main.c: 37: TMR0=256-4;
    53  004F  30FC               	movlw	-4
    54  0050  1283               	bcf	3,5
    55  0051  0081               	movwf	1	;volatile
    56                           ;ds1302_main.c: 38: T0CS=0;
    57  0052  1683               	bsf	3,5
    58  0053  1281               	bcf	1,5
    59                           ;ds1302_main.c: 39: PSA=0;
    60  0054  1181               	bcf	1,3
    61                           ;ds1302_main.c: 40: T0IF=0;
    62  0055  110B               	bcf	11,2
    63                           ;ds1302_main.c: 41: PS2=1;
    64  0056  1501               	bsf	1,2
    65                           ;ds1302_main.c: 42: PS1=1;
    66  0057  1481               	bsf	1,1
    67                           ;ds1302_main.c: 43: PS0=1;
    68  0058  1401               	bsf	1,0
    69                           ;ds1302_main.c: 44: T0IE=1;
    70  0059  168B               	bsf	11,5
    71                           ;ds1302_main.c: 45: GIE=1;
    72  005A  178B               	bsf	11,7
    73                           ;ds1302_main.c: 46: init_1302();
    74  005B  2139               	call	_init_1302
    75                           ;ds1302_main.c: 48: Write_DS1302(0x8e,0x00);
    76  005C  01B3               	clrf	?_Write_DS1302
    77  005D  308E               	movlw	-114
    78  005E  20FB               	call	_Write_DS1302
    79                           ;ds1302_main.c: 49: Write_DS1302(0X80,0X00);
    80  005F  01B3               	clrf	?_Write_DS1302
    81  0060  3080               	movlw	-128
    82  0061  20FB               	call	_Write_DS1302
    83                           ;ds1302_main.c: 50: Write_DS1302(0X82,0X55);
    84  0062  3055               	movlw	85
    85  0063  00B3               	movwf	?_Write_DS1302
    86  0064  3082               	movlw	-126
    87  0065  20FB               	call	_Write_DS1302
    88                           ;ds1302_main.c: 51: Write_DS1302(0x84,0x11);
    89  0066  3011               	movlw	17
    90  0067  00B3               	movwf	?_Write_DS1302
    91  0068  3084               	movlw	-124
    92  0069  20FB               	call	_Write_DS1302
    93                           ;ds1302_main.c: 52: Write_DS1302(0x86,0x16);
    94  006A  3016               	movlw	22
    95  006B  00B3               	movwf	?_Write_DS1302
    96  006C  3086               	movlw	-122
    97  006D  20FB               	call	_Write_DS1302
    98                           ;ds1302_main.c: 53: Write_DS1302(0x88,0x11);
    99  006E  3011               	movlw	17
   100  006F  00B3               	movwf	?_Write_DS1302
   101  0070  3088               	movlw	-120
   102  0071  20FB               	call	_Write_DS1302
   103                           ;ds1302_main.c: 54: Write_DS1302(0x8a,0x05);
   104  0072  3005               	movlw	5
   105  0073  00B3               	movwf	?_Write_DS1302
   106  0074  308A               	movlw	-118
   107  0075  20FB               	call	_Write_DS1302
   108                           ;ds1302_main.c: 55: Write_DS1302(0x8c,0x05);
   109  0076  3005               	movlw	5
   110  0077  00B3               	movwf	?_Write_DS1302
   111  0078  308C               	movlw	-116
   112  0079  20FB               	call	_Write_DS1302
   113                           ;ds1302_main.c: 56: Write_DS1302(0x8e,0x80);
   114  007A  3080               	movlw	-128
   115  007B  00B3               	movwf	?_Write_DS1302
   116  007C  308E               	movlw	-114
   117  007D  20FB               	call	_Write_DS1302
   118                           ;ds1302_main.c: 58: temp=Read_DS1302(0x8f);
   119  007E  308F               	movlw	-113
   120  007F  20B2               	call	_Read_DS1302
   121  0080  00B2               	movwf	?a_main
   122                           ;ds1302_main.c: 59: LEDBuffer[0]=temp%16;
   123  0081  390F               	andlw	15
   124  0082  00AA               	movwf	_LEDBuffer
   125                           ;ds1302_main.c: 60: LEDBuffer[1]=temp/16;
   126  0083  0E32               	swapf	?a_main,w
   127  0084  390F               	andlw	15
   128  0085  00AB               	movwf	_LEDBuffer+1
   129  0086                     l4
   130                           ;ds1302_main.c: 63: while(1)
   131                           ;ds1302_main.c: 64: {
   132  0086  0B21               	decfsz	_SecondFlag,w
   133  0087  2886               	goto	l4
   134                           ;ds1302_main.c: 66: {
   135  0088  01A1               	clrf	_SecondFlag
   136                           ;ds1302_main.c: 68: DateTime.Second=Read_DS1302
      +                          (0x81);
   137  0089  3081               	movlw	-127
   138  008A  20B2               	call	_Read_DS1302
   139  008B  00A9               	movwf	_DateTime+5
   140                           ;ds1302_main.c: 69: DateTime.Minute=Read_DS1302
      +                          (0x83);
   141  008C  3083               	movlw	-125
   142  008D  20B2               	call	_Read_DS1302
   143  008E  00A8               	movwf	_DateTime+4
   144                           ;ds1302_main.c: 70: DateTime.Hour =Read_DS1302(
      +                          0X85);
   145  008F  3085               	movlw	-123
   146  0090  20B2               	call	_Read_DS1302
   147  0091  00A7               	movwf	_DateTime+3
   148                           ;ds1302_main.c: 71: DateTime.Day =Read_DS1302(0
      +                          x87);
   149  0092  3087               	movlw	-121
   150  0093  20B2               	call	_Read_DS1302
   151  0094  00A6               	movwf	_DateTime+2
   152                           ;ds1302_main.c: 72: DateTime.Month =Read_DS1302
      +                          (0X89);
   153  0095  3089               	movlw	-119
   154  0096  20B2               	call	_Read_DS1302
   155  0097  00A5               	movwf	_DateTime+1
   156                           ;ds1302_main.c: 73: DateTime.Year =Read_DS1302(
      +                          0x8b);
   157  0098  308B               	movlw	-117
   158  0099  20B2               	call	_Read_DS1302
   159  009A  00A4               	movwf	_DateTime
   160                           ;ds1302_main.c: 75: LEDBuffer[0]=DateTime.Secon
      +                          d%16;
   161  009B  0829               	movf	_DateTime+5,w
   162  009C  390F               	andlw	15
   163  009D  00AA               	movwf	_LEDBuffer
   164                           ;ds1302_main.c: 76: LEDBuffer[1]=DateTime.Secon
      +                          d/16;
   165  009E  0E29               	swapf	_DateTime+5,w
   166  009F  390F               	andlw	15
   167  00A0  00AB               	movwf	_LEDBuffer+1
   168                           ;ds1302_main.c: 77: LEDBuffer[2]=10;
   169  00A1  300A               	movlw	10
   170  00A2  00AC               	movwf	_LEDBuffer+2
   171                           ;ds1302_main.c: 78: LEDBuffer[3]=DateTime.Minut
      +                          e%16;
   172  00A3  0828               	movf	_DateTime+4,w
   173  00A4  390F               	andlw	15
   174  00A5  00AD               	movwf	_LEDBuffer+3
   175                           ;ds1302_main.c: 79: LEDBuffer[4]=DateTime.Minut
      +                          e/16;
   176  00A6  0E28               	swapf	_DateTime+4,w
   177  00A7  390F               	andlw	15
   178  00A8  00AE               	movwf	_LEDBuffer+4
   179                           ;ds1302_main.c: 80: LEDBuffer[5]=10;
   180  00A9  300A               	movlw	10
   181  00AA  00AF               	movwf	_LEDBuffer+5
   182                           ;ds1302_main.c: 81: LEDBuffer[6]=DateTime.Hour%
      +                          16;
   183  00AB  0827               	movf	_DateTime+3,w
   184  00AC  390F               	andlw	15
   185  00AD  00B0               	movwf	_LEDBuffer+6
   186                           ;ds1302_main.c: 82: LEDBuffer[7]=DateTime.Hour/
      +                          16;
   187  00AE  0E27               	swapf	_DateTime+3,w
   188  00AF  390F               	andlw	15
   189  00B0  00B1               	movwf	_LEDBuffer+7
   190  00B1  2886               	goto	l4
   191                           
   192                           	psect	intcode
   193  000D                     _pic
   194  000D                     int_func
   195                           ;ds1302_main.c: 100: void interrupt pic(void)
   196  000D  1D0B               	btfss	11,2
   197  000E  2831               	goto	l7
   198                           ;ds1302_main.c: 103: {
   199  000F  110B               	bcf	11,2
   200                           ;ds1302_main.c: 105: TMR0=256-4;
   201  0010  30FC               	movlw	-4
   202  0011  1283               	bcf	3,5
   203  0012  1303               	bcf	3,6	;carry unused
   204  0013  0081               	movwf	1	;volatile
   205                           ;ds1302_main.c: 106: PORTD=LEDCODE[LEDBuffer[Sc
      +                          anLEDCount]];
   206  0014  3001               	movlw	_LEDCODE shr (0+8)
   207  0015  008A               	movwf	10
   208  0016  0820               	movf	_ScanLEDCount,w
   209  0017  3E2A               	addlw	_LEDBuffer
   210  0018  0084               	movwf	4
   211  0019  1383               	bcf	3,7
   212  001A  0800               	movf	0,w
   213  001B  212D               	call	((_LEDCODE+-1)& (0+2047))| (($)& (0+-2048
      +                          ))
   214  001C                     	pagesel	$
   215  001C  0088               	movwf	8	;volatile
   216                           ;ds1302_main.c: 107: PORTE=ScanLEDCount;
   217  001D  0820               	movf	_ScanLEDCount,w
   218  001E  0089               	movwf	9	;volatile
   219                           ;ds1302_main.c: 108: ScanLEDCount++;
   220  001F  0AA0               	incf	_ScanLEDCount
   221                           ;ds1302_main.c: 109: if(ScanLEDCount==sizeof(LE
      +                          DBuffer))ScanLEDCount=0;
   222  0020  0820               	movf	_ScanLEDCount,w
   223  0021  3A08               	xorlw	8
   224  0022  1903               	btfsc	3,2
   225  0023  01A0               	clrf	_ScanLEDCount
   226                           ;ds1302_main.c: 110: SecondCount++;
   227  0024  0AA2               	incf	_SecondCount
   228  0025  1903               	btfsc	3,2
   229  0026  0AA3               	incf	_SecondCount+1
   230                           ;ds1302_main.c: 111: if(SecondCount==500)
   231  0027  0323               	decf	_SecondCount+1,w
   232  0028  30F4               	movlw	244
   233  0029  1903               	btfsc	3,2
   234  002A  0622               	xorwf	_SecondCount,w
   235  002B  1D03               	btfss	3,2
   236  002C  2831               	goto	l7
   237                           ;ds1302_main.c: 112: {
   238  002D  01A2               	clrf	_SecondCount
   239  002E  01A3               	clrf	_SecondCount+1
   240                           ;ds1302_main.c: 114: SecondFlag=1;
   241  002F  01A1               	clrf	_SecondFlag
   242  0030  0AA1               	incf	_SecondFlag
   243                           ;ds1302_main.c: 115: }
   244  0031                     l7
   245  0031  1303               	bcf	3,6	;carry unused
   246  0032  1283               	bcf	3,5
   247                           
   248                           	psect	intsave_0
   249  007F                     saved_w
                     saved_w
   250  007F                     	ds	1
   251                           
   252                           	psect	intret
   253  0033  0838               	movf	saved_fsr,w
   254  0034  0084               	movwf	4	;restore FSR
   255  0035  0839               	movf	saved_pclath,w
   256  0036  008A               	movwf	10
   257  0037                     int_restore
   258  0037  0837               	movf	saved_status,w
   259  0038  0083               	movwf	3
   260  0039  0EFF               	swapf	saved_w
   261  003A  0E7F               	swapf	saved_w,w
   262  003B  0009               	retfie
   263                           
   264                           	psect	intentry
   265  0004                     int_entry
   266  0004  00FF               	movwf	saved_w
   267  0005  0803               	movf	3,w
   268  0006  0183               	clrf	3
   269  0007  00B7               	movwf	saved_status
   270  0008  0804               	movf	4,w
   271  0009  00B8               	movwf	saved_fsr
   272  000A  080A               	movf	10,w
   273  000B  00B9               	movwf	saved_pclath
   274  000C  018A               	clrf	10
   275  0000                     
   276  0000                     
   277  0000                     
   278  0000                     
   279  0000                     
   280  0000                     
   281  0000                     
   282  0000                     
   283  0000                     
   284  0000                     
   285  0000                     

⌨️ 快捷键说明

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