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

📄 ds1302.lis

📁 mega128+VS1003做的mp3的程序 可以用WINAVR编译
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0110 1B98              cbi 0x3,3
 0112           L21:
 0112                   .dbline 96
 0112 83B1              in R24,0x3
 0114 8B7F              andi R24,251
 0116 8460              ori R24,4
 0118 83B9              out 0x3,R24
 011A                   .dbline 97
 011A 0000              nop
 011C                   .dbline 97
 011C 0000              nop
 011E                   .dbline 97
 011E 0000              nop
 0120                   .dbline 97
 0120 0000              nop
 0122                   .dbline 97
 0122 0000              nop
 0124                   .dbline 98
 0124           L17:
 0124                   .dbline 90
 0124 6395              inc R22
 0126           L19:
 0126                   .dbline 90
 0126 6830              cpi R22,8
 0128 08F3              brlo L16
 012A                   .dbline 99
 012A           ;     DSCL(1);
 012A           ;       nop;
 012A           ;     }
 012A           ;  DDRE &= ~(1<<3);                   
 012A 1398              cbi 0x2,3
 012C                   .dbline 100
 012C           ;  DSDA(0);
 012C 1B98              cbi 0x3,3
 012E                   .dbline 101
 012E           ;  DSCL(0);
 012E 1A98              cbi 0x3,2
 0130                   .dbline 102
 0130           ;  nop;
 0130 0000              nop
 0132                   .dbline 102
 0132 0000              nop
 0134                   .dbline 102
 0134 0000              nop
 0136                   .dbline 102
 0136 0000              nop
 0138                   .dbline 102
 0138 0000              nop
 013A                   .dbline 103
 013A           ;  if(PINE & (1<<3)) data |=0x80;
 013A 0B9B              sbis 0x1,3
 013C 02C0              rjmp L22
 013E                   .dbline 103
 013E 4068              ori R20,128
 0140 01C0              xjmp L23
 0142           L22:
 0142                   .dbline 104
 0142           ;       else data &= 0x7f;
 0142 4F77              andi R20,127
 0144           L23:
 0144                   .dbline 105
 0144           ;  for(i=0; i<7; i++)/*读数据*/
 0144 6627              clr R22
 0146 16C0              xjmp L27
 0148           L24:
 0148                   .dbline 106
 0148           ;       {       data >>=1;
 0148                   .dbline 106
 0148 4695              lsr R20
 014A                   .dbline 107
 014A           ;               DSCL(1);
 014A 83B1              in R24,0x3
 014C 8B7F              andi R24,251
 014E 8460              ori R24,4
 0150 83B9              out 0x3,R24
 0152                   .dbline 108
 0152           ;               nop;
 0152 0000              nop
 0154                   .dbline 108
 0154 0000              nop
 0156                   .dbline 108
 0156 0000              nop
 0158                   .dbline 108
 0158 0000              nop
 015A                   .dbline 108
 015A 0000              nop
 015C                   .dbline 109
 015C           ;               DSCL(0);
 015C 1A98              cbi 0x3,2
 015E                   .dbline 110
 015E           ;               nop;
 015E 0000              nop
 0160                   .dbline 110
 0160 0000              nop
 0162                   .dbline 110
 0162 0000              nop
 0164                   .dbline 110
 0164 0000              nop
 0166                   .dbline 110
 0166 0000              nop
 0168                   .dbline 111
 0168           ;               if(PINE & (1<<3)) {data |=0x80;}
 0168 0B9B              sbis 0x1,3
 016A 02C0              rjmp L28
 016C                   .dbline 111
 016C                   .dbline 111
 016C 4068              ori R20,128
 016E                   .dbline 111
 016E 01C0              xjmp L29
 0170           L28:
 0170                   .dbline 112
 0170           ;               else {data &= 0x7f;}
 0170                   .dbline 112
 0170 4F77              andi R20,127
 0172                   .dbline 112
 0172           L29:
 0172                   .dbline 113
 0172           L25:
 0172                   .dbline 105
 0172 6395              inc R22
 0174           L27:
 0174                   .dbline 105
 0174 6730              cpi R22,7
 0176 40F3              brlo L24
 0178                   .dbline 114
 0178           ;       }
 0178           ;  DDRE |= 1<<3;
 0178 139A              sbi 0x2,3
 017A                   .dbline 115
 017A           ;  DRST(0);
 017A 1C98              cbi 0x3,4
 017C                   .dbline 116
 017C           ;  return data;
 017C 042F              mov R16,R20
 017E                   .dbline -2
 017E           L15:
 017E 0E940000          xcall pop_gset3
 0182                   .dbline 0 ; func end
 0182 0895              ret
 0184                   .dbsym r data 20 c
 0184                   .dbsym r i 22 c
 0184                   .dbsym r cmd 10 c
 0184                   .dbend
 0184                   .dbfunc e Read_InfoDs1302buf _Read_InfoDs1302buf fV
                        .even
 0184           _Read_InfoDs1302buf::
 0184                   .dbline -1
 0184                   .dbline 122
 0184           ; }
 0184           ; /*********************************************************************************************************************************************
 0184           ; 从Ds1302buf中读取时钟日历信息
 0184           ; *********************************************************************************************************************************************/
 0184           ; void Read_InfoDs1302buf(void)
 0184           ; {cli();
 0184                   .dbline 122
 0184 F894              cli
 0186                   .dbline 123
 0186           ;  Ds1302buf.sec   = Ds1302buf_Read(SEC_R) & 0x7f;
 0186 01E8              ldi R16,129
 0188 9CDF              xcall _Ds1302buf_Read
 018A 802F              mov R24,R16
 018C 8F77              andi R24,127
 018E 80930000          sts _timebuf,R24
 0192                   .dbline 124
 0192           ;  Ds1302buf.min   = Ds1302buf_Read(MIN_R) & 0x7f;
 0192 03E8              ldi R16,131
 0194 96DF              xcall _Ds1302buf_Read
 0196 802F              mov R24,R16
 0198 8F77              andi R24,127
 019A 80930100          sts _timebuf+1,R24
 019E                   .dbline 125
 019E           ;  Ds1302buf.hour  = Ds1302buf_Read(hour_R)  & 0x3f;
 019E 05E8              ldi R16,133
 01A0 90DF              xcall _Ds1302buf_Read
 01A2 802F              mov R24,R16
 01A4 8F73              andi R24,63
 01A6 80930200          sts _timebuf+2,R24
 01AA                   .dbline 126
 01AA           ;  Ds1302buf.date  = Ds1302buf_Read(DATE_R)& 0x3f;
 01AA 07E8              ldi R16,135
 01AC 8ADF              xcall _Ds1302buf_Read
 01AE 802F              mov R24,R16
 01B0 8F73              andi R24,63
 01B2 80930300          sts _timebuf+3,R24
 01B6                   .dbline 127
 01B6           ;  Ds1302buf.month = Ds1302buf_Read(MONTH_R) & 0x1f;
 01B6 09E8              ldi R16,137
 01B8 84DF              xcall _Ds1302buf_Read
 01BA 802F              mov R24,R16
 01BC 8F71              andi R24,31
 01BE 80930400          sts _timebuf+4,R24
 01C2                   .dbline 128
 01C2           ;  Ds1302buf.week  = Ds1302buf_Read(WEEK_R)  & 0x07;
 01C2 0BE8              ldi R16,139
 01C4 7EDF              xcall _Ds1302buf_Read
 01C6 802F              mov R24,R16
 01C8 8770              andi R24,7
 01CA 80930500          sts _timebuf+5,R24
 01CE                   .dbline 129
 01CE           ;  Ds1302buf.year  = Ds1302buf_Read(YEAR_R);
 01CE 0DE8              ldi R16,141
 01D0 78DF              xcall _Ds1302buf_Read
 01D2 00930600          sts _timebuf+6,R16
 01D6                   .dbline 130
 01D6           ;  sei();
 01D6 7894              sei
 01D8                   .dbline -2
 01D8           L30:
 01D8                   .dbline 0 ; func end
 01D8 0895              ret
 01DA                   .dbend
 01DA                   .dbfunc e Write_InfoDs1302buf _Write_InfoDs1302buf fV
                        .even
 01DA           _Write_InfoDs1302buf::
 01DA                   .dbline -1
 01DA                   .dbline 136
 01DA           ; }
 01DA           ; /*********************************************************************************************************************************************
 01DA           ; 将时钟日历信息存储到Ds1302buf中
 01DA           ; *********************************************************************************************************************************************/
 01DA           ; void Write_InfoDs1302buf(void)
 01DA           ; {cli();
 01DA                   .dbline 136
 01DA F894              cli
 01DC                   .dbline 137
 01DC           ;  Ds1302buf_Write(WP_W,    0x00);     
 01DC 2227              clr R18
 01DE 0EE8              ldi R16,142
 01E0 16DF              xcall _Ds1302buf_Write
 01E2                   .dbline 138
 01E2           ;  Ds1302buf_Write(SEC_W,   Ds1302buf.sec);
 01E2 20910000          lds R18,_timebuf
 01E6 00E8              ldi R16,128
 01E8 12DF              xcall _Ds1302buf_Write
 01EA                   .dbline 139
 01EA           ;  Ds1302buf_Write(MIN_W,   Ds1302buf.min);
 01EA 20910100          lds R18,_timebuf+1
 01EE 02E8              ldi R16,130
 01F0 0EDF              xcall _Ds1302buf_Write
 01F2                   .dbline 140
 01F2           ;  Ds1302buf_Write(hour_W,  Ds1302buf.hour);
 01F2 20910200          lds R18,_timebuf+2
 01F6 04E8              ldi R16,132
 01F8 0ADF              xcall _Ds1302buf_Write
 01FA                   .dbline 141
 01FA           ;  Ds1302buf_Write(DATE_W,  Ds1302buf.date);
 01FA 20910300          lds R18,_timebuf+3
 01FE 06E8              ldi R16,134
 0200 06DF              xcall _Ds1302buf_Write
 0202                   .dbline 142
 0202           ;  Ds1302buf_Write(MONTH_W, Ds1302buf.month);
 0202 20910400          lds R18,_timebuf+4
 0206 08E8              ldi R16,136
 0208 02DF              xcall _Ds1302buf_Write
 020A                   .dbline 143
 020A           ;  Ds1302buf_Write(WEEK_W,  Ds1302buf.week);
 020A 20910500          lds R18,_timebuf+5
 020E 0AE8              ldi R16,138
 0210 FEDE              xcall _Ds1302buf_Write
 0212                   .dbline 144
 0212           ;  Ds1302buf_Write(YEAR_W,  Ds1302buf.year);
 0212 20910600          lds R18,_timebuf+6
 0216 0CE8              ldi R16,140
 0218 FADE              xcall _Ds1302buf_Write
 021A                   .dbline 145
 021A           ;  Ds1302buf_Write(POWER_W, 0x16);
 021A 26E1              ldi R18,22
 021C 00E9              ldi R16,144
 021E F7DE              xcall _Ds1302buf_Write
 0220                   .dbline 146
 0220           ;  Ds1302buf_Write(WP_W,    0x80);
 0220 20E8              ldi R18,128
 0222 0EE8              ldi R16,142
 0224 F4DE              xcall _Ds1302buf_Write
 0226                   .dbline 147
 0226           ;  sei();
 0226 7894              sei
 0228                   .dbline -2
 0228           L37:
 0228                   .dbline 0 ; func end
 0228 0895              ret
 022A                   .dbend
 022A                   .dbfunc e Set_time _Set_time fV
                        .even
 022A           _Set_time::
 022A                   .dbline -1
 022A                   .dbline 158
 022A           ; }  
 022A           ; /****************************************************************************************************************************************
 022A           ; *****************************************************************************************************************************************
 022A           ; *************************************以上的部分很重要不可以轻易更改!*********************************************************************
 022A           ; *****************************************************************************************************************************************
 022A           ; ****************************************************************************************************************************************/
 022A           ; /*********************************************************************************************************************************************
 022A           ; 设置时间日期
 022A           ; *********************************************************************************************************************************************/
 022A           ; void Set_time(void)
 022A           ; {
 022A                   .dbline 159
 022A           ;  Ds1302buf.sec   = 0x10;
 022A 80E1              ldi R24,16
 022C 80930000          sts _timebuf,R24
 0230                   .dbline 160
 0230           ;  Ds1302buf.min   = 0x34;
 0230 84E3              ldi R24,52
 0232 80930100          sts _timebuf+1,R24
 0236                   .dbline 161
 0236           ;  Ds1302buf.hour  = 0x14;
 0236 84E1              ldi R24,20
 0238 80930200          sts _timebuf+2,R24
 023C                   .dbline 162
 023C           ;  Ds1302buf.date  = 0x19;
 023C 89E1              ldi R24,25
 023E 80930300          sts _timebuf+3,R24
 0242                   .dbline 163
 0242           ;  Ds1302buf.month = 0x10;
 0242 80E1              ldi R24,16
 0244 80930400          sts _timebuf+4,R24
 0248                   .dbline 164
 0248           ;  Ds1302buf.week  = 0x04;
 0248 84E0              ldi R24,4
 024A 80930500          sts _timebuf+5,R24
 024E                   .dbline 165
 024E           ;  Ds1302buf.year  = 0x06;
 024E 86E0              ldi R24,6
 0250 80930600          sts _timebuf+6,R24
 0254                   .dbline 166
 0254           ;  Write_InfoDs1302buf();
 0254 C2DF              xcall _Write_InfoDs1302buf
 0256                   .dbline -2
 0256           L44:
 0256                   .dbline 0 ; func end
 0256 0895              ret
 0258                   .dbend
 0258                   .dbfunc e Printf_time _Printf_time fV
                        .even
 0258           _Printf_time::
 0258                   .dbline -1
 0258                   .dbline 172
 0258           ; }           
 0258           ; /*********************************************************************************************************************************************
 0258           ; 打印时间日期到超级终端
 0258           ; *********************************************************************************************************************************************/
 0258           ; void Printf_time(void)
 0258           ; { 
 0258                   .dbline -2
 0258           L51:
 0258                   .dbline 0 ; func end
 0258 0895              ret
 025A                   .dbend

⌨️ 快捷键说明

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