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

📄 mp3.s

📁 mega128+VS1003做的mp3的程序 可以用WINAVR编译
💻 S
📖 第 1 页 / 共 3 页
字号:
L103:
	.dbline 174
; 										 timebuf.month = temp/10;
	ldi R17,10
	mov R16,R22
	xcall div8u
	sts _timebuf+4,R16
	.dbline 175
; 										 timebuf.month <<= 4;
	mov R24,R16
	andi R24,#0x0F
	swap R24
	sts _timebuf+4,R24
	.dbline 176
; 										 timebuf.month += temp%10;
	ldi R17,10
	mov R16,R22
	xcall mod8u
	lds R2,_timebuf+4
	add R2,R16
	sts _timebuf+4,R2
	.dbline 177
; 								         break;		
	xjmp L89
L107:
	.dbline 178
; 							    case 2:  temp = timebuf.date;
	lds R22,_timebuf+3
	.dbline 179
; 								         temp >>= 4;
	mov R24,R22
	swap R24
	andi R24,#0x0F
	mov R22,R24
	.dbline 180
; 										 temp &= 0x0f;
	andi R22,15
	.dbline 181
; 										 temp *= 10;
	ldi R24,10
	mul R24,R22
	mov R22,R0
	.dbline 182
; 										 temp += (timebuf.date&0x0f);
	lds R24,_timebuf+3
	andi R24,15
	add R22,R24
	.dbline 183
; 										 (++temp == 32) ? (temp = 1) : 0;
	mov R24,R22
	subi R24,255    ; addi 1
	mov R22,R24
	cpi R22,32
	brne L111
	ldi R22,1
	xjmp L111
L111:
	.dbline 184
; 										 timebuf.date = temp/10;
	ldi R17,10
	mov R16,R22
	xcall div8u
	sts _timebuf+3,R16
	.dbline 185
; 										 timebuf.date <<= 4;
	mov R24,R16
	andi R24,#0x0F
	swap R24
	sts _timebuf+3,R24
	.dbline 186
; 										 timebuf.date += temp%10;
	ldi R17,10
	mov R16,R22
	xcall mod8u
	lds R2,_timebuf+3
	add R2,R16
	sts _timebuf+3,R2
	.dbline 187
; 								         break;			 	 
L88:
L89:
	.dbline 189
; 							    }//switch
; 		                     }
L86:
	.dbline 190
; 		   if(keybuf == K_DOWN){
	lds R24,_keybuf
	cpi R24,1
	breq X15
	xjmp L115
X15:
	.dbline 190
	.dbline 191
	mov R10,R20
	clr R11
	tst R10
	brne X11
	tst R11
	breq L120
X11:
	movw R24,R10
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	breq L128
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	brne X16
	xjmp L136
X16:
	xjmp L117
X12:
	.dbline 191
; 		   			 		  switch(ii){
L120:
	.dbline 192
; 							    case 0:  temp = timebuf.year;
	lds R22,_timebuf+6
	.dbline 193
; 								         temp >>= 4;
	mov R24,R22
	swap R24
	andi R24,#0x0F
	mov R22,R24
	.dbline 194
; 										 temp &= 0x0f;
	andi R22,15
	.dbline 195
; 										 temp *= 10;
	ldi R24,10
	mul R24,R22
	mov R22,R0
	.dbline 196
; 										 temp += (timebuf.year&0x0f);
	lds R24,_timebuf+6
	andi R24,15
	add R22,R24
	.dbline 197
; 										 (--temp == 255) ? (temp = 99) : 0;
	mov R24,R22
	subi R24,1
	mov R22,R24
	cpi R22,255
	brne L124
	ldi R22,99
	xjmp L124
L124:
	.dbline 198
; 										 timebuf.year = temp/10;
	ldi R17,10
	mov R16,R22
	xcall div8u
	sts _timebuf+6,R16
	.dbline 199
; 										 timebuf.year <<= 4;
	mov R24,R16
	andi R24,#0x0F
	swap R24
	sts _timebuf+6,R24
	.dbline 200
; 										 timebuf.year += temp%10;
	ldi R17,10
	mov R16,R22
	xcall mod8u
	lds R2,_timebuf+6
	add R2,R16
	sts _timebuf+6,R2
	.dbline 201
; 								         break;
	xjmp L118
L128:
	.dbline 202
; 							    case 1:  temp = timebuf.month;
	lds R22,_timebuf+4
	.dbline 203
; 								         temp >>= 4;
	mov R24,R22
	swap R24
	andi R24,#0x0F
	mov R22,R24
	.dbline 204
; 										 temp &= 0x0f;
	andi R22,15
	.dbline 205
; 										 temp *= 10;
	ldi R24,10
	mul R24,R22
	mov R22,R0
	.dbline 206
; 										 temp += (timebuf.month&0x0f);
	lds R24,_timebuf+4
	andi R24,15
	add R22,R24
	.dbline 207
; 										 (--temp == 0) ? (temp = 12) : 0;
	mov R24,R22
	subi R24,1
	mov R22,R24
	tst R24
	brne L132
	ldi R22,12
	xjmp L132
L132:
	.dbline 208
; 										 timebuf.month = temp/10;
	ldi R17,10
	mov R16,R22
	xcall div8u
	sts _timebuf+4,R16
	.dbline 209
; 										 timebuf.month <<= 4;
	mov R24,R16
	andi R24,#0x0F
	swap R24
	sts _timebuf+4,R24
	.dbline 210
; 										 timebuf.month += temp%10;
	ldi R17,10
	mov R16,R22
	xcall mod8u
	lds R2,_timebuf+4
	add R2,R16
	sts _timebuf+4,R2
	.dbline 211
; 								         break;		
	xjmp L118
L136:
	.dbline 212
; 							    case 2:  temp = timebuf.date;
	lds R22,_timebuf+3
	.dbline 213
; 								         temp >>= 4;
	mov R24,R22
	swap R24
	andi R24,#0x0F
	mov R22,R24
	.dbline 214
; 										 temp &= 0x0f;
	andi R22,15
	.dbline 215
; 										 temp *= 10;
	ldi R24,10
	mul R24,R22
	mov R22,R0
	.dbline 216
; 										 temp += (timebuf.date&0x0f);
	lds R24,_timebuf+3
	andi R24,15
	add R22,R24
	.dbline 217
; 										 (--temp == 0) ? (temp = 31) : 0;
	mov R24,R22
	subi R24,1
	mov R22,R24
	tst R24
	brne L140
	ldi R22,31
	xjmp L140
L140:
	.dbline 218
; 										 timebuf.date = temp/10;
	ldi R17,10
	mov R16,R22
	xcall div8u
	sts _timebuf+3,R16
	.dbline 219
; 										 timebuf.date <<= 4;
	mov R24,R16
	andi R24,#0x0F
	swap R24
	sts _timebuf+3,R24
	.dbline 220
; 										 timebuf.date += temp%10;
	ldi R17,10
	mov R16,R22
	xcall mod8u
	lds R2,_timebuf+3
	add R2,R16
	sts _timebuf+3,R2
	.dbline 221
; 								         break;			 	 
L117:
L118:
	.dbline 223
; 							    }//switch
; 		                     }
L115:
	.dbline 224
;             if(keybuf == K_RIFT) (++ii == 3) ? (ii = 0) : 0;
	lds R24,_keybuf
	cpi R24,6
	brne L144
	.dbline 224
	mov R24,R20
	subi R24,255    ; addi 1
	mov R20,R24
	cpi R20,3
	brne L147
	clr R20
	xjmp L147
L147:
L144:
	.dbline 225
;             if(keybuf == K_LIFT) (--ii == 255) ? (ii = 2) : 0;									 							 
	lds R24,_keybuf
	cpi R24,2
	brne L148
	.dbline 225
	mov R24,R20
	subi R24,1
	mov R20,R24
	cpi R20,255
	brne L151
	ldi R20,2
	xjmp L151
L151:
L148:
	.dbline 226
; 			if(keybuf == K_ESC)  {Read_InfoDs1302buf();break;}
	lds R24,_keybuf
	cpi R24,5
	brne L152
	.dbline 226
	.dbline 226
	xcall _Read_InfoDs1302buf
	.dbline 226
	xjmp L82
L152:
	.dbline 227
; 			if(keybuf == K_ENTER) {Write_InfoDs1302buf();break;}
	lds R24,_keybuf
	cpi R24,4
	brne L154
	.dbline 227
	.dbline 227
	xcall _Write_InfoDs1302buf
	.dbline 227
	xjmp L82
L154:
	.dbline 228
L81:
	.dbline 151
	xjmp L80
L82:
	.dbline -2
L79:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r temp 22 c
	.dbsym r ii 20 c
	.dbend
	.dbfunc e set_system_week _set_system_week fV
	.even
_set_system_week::
	.dbline -1
	.dbline 234
;           }
; }
; /*
; *设置星期
; */
; void set_system_week(void)
; {
	xjmp L158
L157:
	.dbline 235
;   while(1){
	.dbline 236
;   		   show_set_week();
	xcall _show_set_week
	.dbline 237
; 		   KEYBUF_NULL;
	clr R2
	sts _keybuf,R2
	.dbline 237
L160:
	.dbline 238
L161:
	.dbline 238
; 		   while(keybuf == NULL);
	lds R2,_keybuf
	tst R2
	breq L160
	.dbline 240
; 		   
; 		   if(keybuf == K_UP)  (++timebuf.week == 8) ? (timebuf.week = 1) : 0;
	mov R24,R2
	cpi R24,3
	brne L163
	.dbline 240
	lds R24,_timebuf+5
	subi R24,255    ; addi 1
	mov R2,R24
	sts _timebuf+5,R2
	cpi R24,8
	brne L168
	ldi R24,1
	sts _timebuf+5,R24
	xjmp L168
L168:
L163:
	.dbline 241
; 		   if(keybuf == K_DOWN)(--timebuf.week == 0) ? (timebuf.week = 7) : 0;
	lds R24,_keybuf
	cpi R24,1
	brne L169
	.dbline 241
	lds R24,_timebuf+5
	subi R24,1
	mov R2,R24
	sts _timebuf+5,R2
	tst R24
	brne L174
	ldi R24,7
	sts _timebuf+5,R24
	xjmp L174
L174:
L169:
	.dbline 243
; 		   
; 			if(keybuf == K_ESC)  {Read_InfoDs1302buf();break;}
	lds R24,_keybuf
	cpi R24,5
	brne L175
	.dbline 243
	.dbline 243
	xcall _Read_InfoDs1302buf
	.dbline 243
	xjmp L159
L175:
	.dbline 244
; 			if(keybuf == K_ENTER) {Write_InfoDs1302buf();break;}
	lds R24,_keybuf
	cpi R24,4
	brne L177
	.dbline 244
	.dbline 244
	xcall _Write_InfoDs1302buf
	.dbline 244
	xjmp L159
L177:
	.dbline 245
L158:
	.dbline 235
	xjmp L157
L159:
	.dbline -2
L156:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e set_out_time _set_out_time fV
;           temp -> R14
;             ii -> R22
;           page -> R10
;             ps -> y+12
	.even
_set_out_time::
	xcall push_arg4
	xcall push_gset5
	mov R10,R18
	sbiw R28,2
	.dbline -1
	.dbline 251
;           }
; }
; /*
; *设置时间
; */
; void set_out_time(struct time *ps, uchar page)
; {
	.dbline 254
;   uchar ii;
;   uchar temp;
;   ii = 0;  //最大是2
	clr R22
	xjmp L181
L180:
	.dbline 255
;   while(1){
	.dbline 256
;   		   show_tiem_out(ps, page,ii);
	mov R2,R22
	clr R3
	std y+1,R3
	std y+0,R2
	mov R18,R10
	clr R19
	ldd R16,y+12
	ldd R17,y+13
	xcall _show_tiem_out
	.dbline 257
; 		   KEYBUF_NULL;
	clr R2
	sts _keybuf,R2
	.dbline 257
L183:
	.dbline 258
L184:
	.dbline 258
; 		   while(keybuf == NULL);
	lds R2,_keybuf
	tst R2
	breq L183
	.dbline 260
; 		   
; 		   if(keybuf == K_UP){
	mov R24,R2
	cpi R24,3
	breq X21
	xjmp L186
X21:
	.dbline 260
	.dbline 261
	mov R20,R22
	clr R21
	cpi R20,0
	cpc R20,R21
	breq L191
X17:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	brne X22
	xjmp L194
X22:
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	brne X23
	xjmp L197
X23:
	xjmp L188
X18:
	.dbline 261
; 		   			 		  switch(ii){
L191:
	.dbline 262
; 							    case 0:  temp = ps->hour;
	ldd R30,y+12
	ldd R31,y+13
	ldd R14,z+2
	.dbline 263
; 								         temp >>= 4;
	mov R24,R14
	swap R24
	andi R24,#0x0F
	.dbline 264
; 										 temp &= 0x0f;
	andi R24,15
	mov R14,R24
	.dbline 265
; 										 temp *= 10;
	ldi R24,10
	mul R24,R14
	mov R14,R0
	.dbline 266
; 										 temp += (ps->hour&0x0f);
	ldd R30,y+12
	ldd R31,y+13
	ldd R24,z+2
	andi R24,15
	add R14,R24
	.dbline 267
; 										 (++temp == 24) ? (temp = 0) : 0;
	mov R24,R14
	subi R24,255    ; addi 1
	mov R14,R24
	cpi R24,24
	brne L193
	clr R14
	xjmp L193
L193:
	.dbline 268
; 										 ps->hour = temp/10;
	ldi R17,10
	mov R16,R14
	xcall div8u
	mov R2,R16
	ldd R30,y+12
	ldd R31,y+13
	std z+2,R2
	.dbline 269
; 										 ps->hour <<= 4;
	ldd R24,y+12
	ldd R25,y+13
	adiw R24,2
	movw R30,R24
	ldd R24,z+0
	andi R24,#0x0F
	swap R24
	std z+0,R24
	.dbline 270
; 										 ps->hour += temp%10;
	ldd R24,y+12
	ldd R25,y+13
	adiw R24,2
	movw R2,R24
	ldi R17,10
	mov R16,R14
	xcall mod8u
	movw R30,R2
	ldd R4,z+0
	add R4,R16
	std z+0,R4
	.dbline 271
; 								         break;
	xjmp L189
L194:
	.dbline 272
; 							    case 1:  temp = ps->min;
	ldd R30,y+12
	ldd R31,y+13
	ldd R14,z+1
	.dbline 273
; 								         temp >>= 4;
	mov R24,R14
	swap R24
	andi R24,#0x0F
	.dbline 274
; 										 temp &= 0x0f;
	andi R24,15
	mov R14,R24
	.dbline 275
; 										 temp *= 10;
	ldi R24,10
	mul R24,R14
	mov R14,R0
	.dbline 276
; 										 temp += (ps->min&0x0f);
	ldd R30,y+12
	ldd R31,y+13
	ldd R24,z+1
	andi R24,15
	add R14,R24
	.dbline 277
; 										 (++temp == 60) ? (temp = 0) : 0;
	mov R24,R14
	subi R24,255    ; addi 1
	mov R14,R24
	cpi R24,60
	brne L196
	clr R14
	xjmp L196
L196:
	.dbline 278
; 										 ps->min = temp/10;
	ldi R17,10
	mov R16,R14
	xcall div8u
	mov R2,R16
	ldd R30,y+12
	ldd R31,y+13
	std z+1,R2
	.dbline 279
; 										 ps->min <<= 4;
	ldd R24,y+12
	ldd R25,y+13
	adiw R24,1
	movw R30,R24
	ldd R24,z+0
	andi R24,#0x0F
	swap R24
	std z+0,R24
	.dbline 280
; 										 ps->min += temp%10;
	ldd R24,y+12
	ldd R25,y+13
	adiw R24,1
	movw R2,R24
	ldi R17,10
	mov R16,R14
	xcall mod8u
	movw R30,R2
	ldd R4,z+0
	add R4,R16
	std z+0,R4
	.dbline 281
; 								         break;		
	xjmp L189
L197:
	.dbline 282
; 							    case 2:  temp = ps->sec;
	ldd R30,y+12
	ldd R31,y+13
	ldd R14,z+0
	.dbline 283
; 								         temp >>= 4;
	mov R24,R14
	swap R24
	andi R24,#0x0F
	.dbline 284
; 										 temp &= 0x0f;
	andi R24,15
	mov R14,R24
	.dbline 285
; 										 temp *= 10;
	ldi R24,10
	mul R24,R14
	mov R14,R0
	.dbline 286
; 										 temp += (ps->sec&0x0f);
	ldd R24,z+0
	andi R24,15
	add R14,R24
	.dbline 287
; 										 (++temp == 60) ? (temp = 0) : 0;
	mov R24,R14
	subi R24,255    ; addi 1
	mov R14,R24
	cpi R24,60
	brne L199
	clr R14
	xjmp L199
L199:
	.dbline 288
; 										 ps->sec = temp/10;
	ldi R17,10
	mov R16,R14
	xcall div8u
	mov R2,R16
	ldd R30,y+12
	ldd R31,y+13
	std z+0,R2
	.dbline 289
; 										 ps->sec <<= 4;
	ldd R24,z+0
	andi R24,#0x0F
	swap R24
	std z+0,R24
	.dbline 290
; 										 ps->sec += temp%10;
	ldi R17,10
	mov R16,R14
	xcall mod8u
	ldd R30,y+12
	ldd R31,y+13
	ldd R3,z+0
	add R3,R16
	std z+0,R3
	.dbline 291
; 								         break;			 	 
L188:
L189:
	.dbline 293
; 							    }//switch
; 		                     }
L186:
	.dbline 294
; 		   if(keybuf == K_DOWN){
	lds R24,_keybuf
	cpi R24,1
	breq X24
	xjmp L200
X24:
	.dbline 294
	.dbline 295
	mov R12,R22
	clr R13
	tst R12
	brne X19
	tst R13
	breq L205
X19:
	movw R24,R12
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	brne X25
	xjmp L208
X25:
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	brne X26
	xjmp L211
X26:
	xjmp L202
X20:
	.dbline 295
; 		   			 		  switch(ii){
L205:
	.dbline 296
; 							    case 0:  temp = ps->hour;
	ldd R30,y+12
	ldd R31,y+13
	ldd R14,z+2
	.dbline 297
; 								         temp >>= 4;
	mov R24,R14
	swap R24
	andi R24,#0x0F
	.dbline 298
; 										 temp &= 0x0f;
	andi R24,15
	mov R14,R24
	.dbline 299
; 										 temp *= 10;
	ldi R24,10
	mul R24,R14
	mov R14,R0
	.dbline 300
; 										 temp += (ps->hour&0x0f);
	ldd R30,y+12
	ldd R31,y+13
	ldd R24,z+2
	andi R24,15
	add R14,R24
	.dbline 301
; 										 (--temp == 255) ? (temp = 23) : 0;
	mov R24,R14
	subi R24,1
	mov R14,R24
	cpi R24,255
	brne L207
	ldi R24,23
	mov R14,R24
	xjmp L207
L207:
	.dbline 302
; 										 ps->hour = temp/10;
	ldi R17,10
	mov R16,R14
	xcall div8u
	mov R2,R16
	ldd R30,y+12
	ldd R31,y+13
	std z+2,R2
	.dbline 303
; 										 ps->hour <<= 4;
	ldd R24,y+12
	ldd R25,y+13
	adiw R24,2
	movw R30,R24
	ldd R24,z+0
	andi R24,#0x0F
	swap R24
	std z+0,R24
	.dbline 304
; 										 ps->hour += temp%10;
	ldd R24,y+12
	ldd R25,y+13
	adiw R24,2
	movw R2,R24
	ldi R17,10
	mov R16,R14
	xcall mod8u
	movw R30,R2
	ldd R4,z+0
	add R4,R16
	std z+0,R4
	.dbline 305
; 								         break;
	xjmp L203
L208:
	.dbline 306
; 							    case 1:  temp = ps->min;
	ldd R30,y+12
	ldd R31,y+13
	ldd R14,z+1
	.dbline 307
; 								         temp >>= 4;
	mov R24,R14
	swap R24
	andi R24,#0x0F
	.dbline 308
; 										 temp &= 0x0f;
	andi R24,15
	mov R14,R24
	.dbline 309
; 										 temp *= 10;
	ldi R24,10
	mul R24,R14
	mov R14,R0
	.dbline 310
; 										 temp += (ps->min&0x0f);
	ldd R30,y+12
	ldd R31,y+13

⌨️ 快捷键说明

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