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

📄 task.s

📁 LED条屏显示程序,但是对初学者
💻 S
📖 第 1 页 / 共 2 页
字号:
	.dbline 167
	ldi R18,1
	ldi R16,90
	xcall _LCD_write_byte
	.dbline 168
L77:
	.dbline 165
;          while(key_value--)
	lds R2,_key_value
	clr R3
	mov R24,R2
	subi R24,1
	sts _key_value,R24
	tst R2
	brne L76
	.dbline 169
;               {
;                LCD_write_byte(0x5A,1); 
;               }
; 	     sta_SetVolume(59+set_volume*5,1);
	ldi R18,1
	lds R2,_set_volume
	ldi R24,5
	mul R24,R2
	mov R16,R0
	subi R16,197    ; addi 59
	xcall _sta_SetVolume
	.dbline 170
; 		 key_value=0;
	clr R2
	sts _key_value,R2
	.dbline 171
; 		 break;
	xjmp L71
L79:
	.dbline 174
; 		 }
;    case volume_sub:
;         {
	.dbline 175
; 		 if (set_volume>1)
	ldi R24,1
	lds R2,_set_volume
	cp R24,R2
	brsh L80
	.dbline 176
; 		    {set_volume--;
	.dbline 176
	mov R24,R2
	subi R24,1
	sts _set_volume,R24
	.dbline 177
; 		    }
L80:
	.dbline 178
;          LCD_set_XY(59+set_volume*3,5);
	ldi R18,5
	lds R2,_set_volume
	ldi R24,3
	mul R24,R2
	mov R16,R0
	subi R16,197    ; addi 59
	xcall _LCD_set_XY
	.dbline 179
;          key_value=3;
	ldi R24,3
	sts _key_value,R24
	xjmp L83
L82:
	.dbline 181
	.dbline 182
	ldi R18,1
	ldi R16,66
	xcall _LCD_write_byte
	.dbline 183
L83:
	.dbline 180
;          while(key_value--)
	lds R2,_key_value
	clr R3
	mov R24,R2
	subi R24,1
	sts _key_value,R24
	tst R2
	brne L82
	.dbline 185
;               {
;                LCD_write_byte(0x42,1); 
;               }
; 		  
; 	     sta_SetVolume(59+set_volume*5,1);
	ldi R18,1
	lds R2,_set_volume
	ldi R24,5
	mul R24,R2
	mov R16,R0
	subi R16,197    ; addi 59
	xcall _sta_SetVolume
	.dbline 186
; 	     key_value=0; 		
	clr R2
	sts _key_value,R2
	.dbline 187
; 		 break;
	xjmp L71
L85:
	.dbline 190
; 		}
;    case next:
;         {          
	.dbline 191
; 		 sta_StartDecoder();
	xcall _sta_StartDecoder
	.dbline 192
; 		 if(play_state==2)
	lds R24,_play_state
	cpi R24,2
	brne L86
	.dbline 193
; 		    sta_PauseDecoder(); 
	xcall _sta_PauseDecoder
L86:
	.dbline 194
; 		 sta_SetVolume(59+set_volume*5,1);
	ldi R18,1
	lds R2,_set_volume
	ldi R24,5
	mul R24,R2
	mov R16,R0
	subi R16,197    ; addi 59
	xcall _sta_SetVolume
	.dbline 196
; 		 
; 		 SONG_state=song_over;
	ldi R24,5
	sts _SONG_state,R24
	.dbline 197
; 		 key_value=0;
	clr R2
	sts _key_value,R2
	.dbline 198
; 		 disp_state=5;
	sts _disp_state,R24
	.dbline 199
; 		 break;
	xjmp L71
L88:
	.dbline 202
; 		}
;    case back:
;        {
	.dbline 203
; 		if(MP3_current_number==1)
	lds R24,_MP3_current_number
	cpi R24,1
	brne L89
	.dbline 204
; 		    MP3_current_number=MP3_all_number-1;
	lds R24,_MP3_all_number
	subi R24,1
	sts _MP3_current_number,R24
	xjmp L90
L89:
	.dbline 206
; 		else
; 		    MP3_current_number=MP3_current_number-2;
	lds R24,_MP3_current_number
	subi R24,2
	sts _MP3_current_number,R24
L90:
	.dbline 208
; 		 
; 		sta_StartDecoder();
	xcall _sta_StartDecoder
	.dbline 209
; 	    if(play_state==2)
	lds R24,_play_state
	cpi R24,2
	brne L91
	.dbline 210
; 		   sta_PauseDecoder(); 
	xcall _sta_PauseDecoder
L91:
	.dbline 211
; 		sta_SetVolume(59+set_volume*5,1);
	ldi R18,1
	lds R2,_set_volume
	ldi R24,5
	mul R24,R2
	mov R16,R0
	subi R16,197    ; addi 59
	xcall _sta_SetVolume
	.dbline 213
; 		
; 		SONG_state=song_over; 
	ldi R24,5
	sts _SONG_state,R24
	.dbline 214
; 		key_value=0;
	clr R2
	sts _key_value,R2
	.dbline 215
; 		disp_state=5;
	sts _disp_state,R24
	.dbline 216
; 		break;
	xjmp L71
L93:
	.dbline 219
; 		}
;    case play:
;         {
	.dbline 220
; 		 key_value=0;
	clr R2
	sts _key_value,R2
	.dbline 221
; 		 play_state++;
	lds R24,_play_state
	subi R24,255    ; addi 1
	sts _play_state,R24
	.dbline 223
; 		 
; 		 switch(play_state)
	mov R20,R24
	clr R21
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L97
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L100
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L101
	xjmp L71
X12:
	.dbline 224
; 		       {
L97:
	.dbline 226
; 			    case 1:                //播放
; 				    {
	.dbline 227
; 					 if(STA013_INIT)
	lds R2,_STA013_INIT
	tst R2
	breq L98
	.dbline 228
; 					   {sta_Init();
	.dbline 228
	xcall _sta_Init
	.dbline 229
; 					    sta_StartDecoder();
	xcall _sta_StartDecoder
	.dbline 230
; 						sta_SetVolume(59+set_volume*5,1);
	ldi R18,1
	lds R2,_set_volume
	ldi R24,5
	mul R24,R2
	mov R16,R0
	subi R16,197    ; addi 59
	xcall _sta_SetVolume
	.dbline 231
; 						STA013_INIT--;
	lds R24,_STA013_INIT
	subi R24,1
	sts _STA013_INIT,R24
	.dbline 232
; 					    }
L98:
	.dbline 234
; 						
; 					 SONG_state=song_start;
	ldi R24,1
	sts _SONG_state,R24
	.dbline 235
; 					 LCD_write_tubiao(0,5,1);
	std y+0,R24
	ldi R18,5
	clr R16
	xcall _LCD_write_tubiao
	.dbline 236
; 					 break;
	xjmp L71
L100:
	.dbline 239
; 					}
; 				case 2:                 //暂停
; 				    {
	.dbline 240
; 					 sta_PauseDecoder();
	xcall _sta_PauseDecoder
	.dbline 241
; 					 LCD_write_tubiao(0,5,2);
	ldi R24,2
	std y+0,R24
	ldi R18,5
	clr R16
	xcall _LCD_write_tubiao
	.dbline 242
; 					 break;
	xjmp L71
L101:
	.dbline 245
; 					}
; 				case 3:                 //继续
; 				    {
	.dbline 246
; 					 play_state=1;
	ldi R24,1
	sts _play_state,R24
	.dbline 247
; 					 sta_ResumeDecoder();
	xcall _sta_ResumeDecoder
	.dbline 248
; 					 LCD_write_tubiao(0,5,1);
	ldi R24,1
	std y+0,R24
	ldi R18,5
	clr R16
	xcall _LCD_write_tubiao
	.dbline 249
; 					 break;
	.dbline 253
; 					}
; 			   }
; 			   
; 		 break;
L70:
L71:
	.dbline 256
L68:
	.dbline -2
L67:
	adiw R28,1
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\MYWORK~1\开发设计\AVR-MP3\mp3开发板光盘\驱动程序\MP3BOA~1.8\task.c
L107:
	.blkb 1
L108:
	.blkb 2
L109:
	.blkb 2
L110:
	.blkb 1
L111:
	.blkb 72
L112:
	.blkb 72
L113:
	.blkb 24
	.area text(rom, con, rel)
	.dbfile E:\MYWORK~1\开发设计\AVR-MP3\mp3开发板光盘\驱动程序\MP3BOA~1.8\task.c
	.dbfunc e DISP_task _DISP_task fV
	.dbsym s piont_24_code L113 A[24:24]c
	.dbsym s buffer_l L112 A[72:72]c
	.dbsym s buffer_h L111 A[72:72]c
	.dbsym s disp_j L110 c
	.dbsym s disp_i L109 i
	.dbsym s disp_number L108 i
	.dbsym s disp_point L107 c
;              m -> R22
;              n -> R20
	.even
_DISP_task::
	xcall push_gset2
	.dbline -1
	.dbline 261
; 		}
;   }
;  }
; }
; 
; //=======================================================================
; void DISP_task(void)
; {
	.dbline 273
;  static uint8 disp_point;
;  static uint16 disp_number;
;  static uint16 disp_i;
;  static uint8 disp_j;
;  static uint8 buffer_h[72];
;  static uint8 buffer_l[72];
;  static uint8 piont_24_code[24];
; 
;  uint8 n;
;  uint8 m;
;  
;  if(mp3_info.Name_number) 
	lds R2,_mp3_info+52
	tst R2
	brne X23
	xjmp L114
X23:
	.dbline 274
;  {
	.dbline 275
;   if(timer1_over)
	lds R2,_timer1_over
	tst R2
	brne X24
	xjmp L117
X24:
	.dbline 276
;     {
	.dbline 277
; 	 timer1_over=0;
	clr R2
	sts _timer1_over,R2
	.dbline 278
; 	 switch(disp_state)
	lds R20,_disp_state
	clr R21
	cpi R20,0
	cpc R20,R21
	breq L122
X20:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	brne X25
	xjmp L130
X25:
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	brne X26
	xjmp L144
X26:
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	brne X27
	xjmp L159
X27:
	cpi R20,5
	ldi R30,0
	cpc R21,R30
	brne X28
	xjmp L162
X28:
	xjmp L119
X21:
	.dbline 279
;      {case 0:
L122:
	.dbline 280
;        {
	.dbline 281
; 	    for(n=0;n<mp3_info.Name_number;n++)
	clr R20
	xjmp L126
L123:
	.dbline 282
; 		   {
	.dbline 283
; 		    if(mp3_info.NAME[n]<0x0060)
	ldi R24,2
	mul R24,R20
	movw R30,R0
	ldi R24,<_mp3_info
	ldi R25,>_mp3_info
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	cpi R24,96
	ldi R30,0
	cpc R25,R30
	brsh L128
	.dbline 284
; 			   disp_number+=6;
	lds R24,L108
	lds R25,L108+1
	adiw R24,6
	sts L108+1,R25
	sts L108,R24
	xjmp L129
L128:
	.dbline 286
; 			else
; 			   disp_number+=12; 
	lds R24,L108
	lds R25,L108+1
	adiw R24,12
	sts L108+1,R25
	sts L108,R24
L129:
	.dbline 287
L124:
	.dbline 281
	inc R20
L126:
	.dbline 281
	lds R2,_mp3_info+52
	cp R20,R2
	brlo L123
	.dbline 289
; 		    }
; 		
; 		disp_state=1;
	ldi R24,1
	sts _disp_state,R24
	.dbline 290
; 		break;
	xjmp L120
L130:
	.dbline 294
; 	   }
; 
;   case 1:
;        {
	.dbline 296
; 	   
; 	    if(disp_i>=disp_number)
	lds R2,L108
	lds R3,L108+1
	lds R4,L109
	lds R5,L109+1
	cp R4,R2
	cpc R5,R3
	brlo L131
	.dbline 297
;           {
	.dbline 298
;            buffer_h[disp_point]=0;
	ldi R24,<L111
	ldi R25,>L111
	lds R30,L107
	clr R31
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 299
;            buffer_l[disp_point]=0; 
	ldi R24,<L112
	ldi R25,>L112
	lds R30,L107
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 300
; 	      }
	xjmp L132
L131:
	.dbline 302
;        else 
;           {
	.dbline 303
;            if((disp_i%6)==0)
	ldi R18,6
	ldi R19,0
	lds R16,L109
	lds R17,L109+1
	xcall mod16u
	cpi R16,0
	cpc R16,R17
	brne L133
X22:
	.dbline 304
; 		     {
	.dbline 305
; 			  for(m=0,n=0;n<disp_i;)
	clr R22
	clr R20
	xjmp L138
L135:
	.dbline 306
; 			     {
	.dbline 307
; 				  if(mp3_info.NAME[m++]<0x0060)
	mov R2,R22
	clr R3
	subi R22,255    ; addi 1
	ldi R16,2
	ldi R17,0
	movw R18,R2
	xcall empy16s
	movw R30,R16
	ldi R24,<_mp3_info
	ldi R25,>_mp3_info
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	cpi R24,96
	ldi R30,0
	cpc R25,R30
	brsh L139
	.dbline 308
; 				     n+=6;
	subi R20,250    ; addi 6
	xjmp L140
L139:
	.dbline 310
; 				  else
; 				     n+=12;  
	subi R20,244    ; addi 12
L140:
	.dbline 311
L136:
	.dbline 305
L138:
	.dbline 305
	lds R2,L109
	lds R3,L109+1
	mov R4,R20
	clr R5
	cp R4,R2
	cpc R5,R3
	brlo L135
	.dbline 312
; 				  }
; 			  if(n==disp_i)
	clr R5
	cp R4,R2
	cpc R5,R3
	brne L141
	.dbline 313
; 			    {Abtain_code(m,piont_24_code);
	.dbline 313
	ldi R18,<L113
	ldi R19,>L113
	mov R16,R22
	xcall _Abtain_code
	.dbline 314
; 				 disp_j=0;
	clr R2
	sts L110,R2
	.dbline 315
; 				}
L141:
	.dbline 316
; 			 }
L133:
	.dbline 317
;            buffer_h[disp_point]=piont_24_code[disp_j];
	ldi R24,<L113
	ldi R25,>L113
	lds R30,L110
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,<L111
	ldi R25,>L111
	lds R30,L107
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 318
;            buffer_l[disp_point]=piont_24_code[disp_j+12];
	ldi R24,<L113+12
	ldi R25,>L113+12
	lds R30,L110
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,<L112
	ldi R25,>L112
	lds R30,L107
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 319
;           }
L132:
	.dbline 320
; 		  disp_j++;
	lds R24,L110
	subi R24,255    ; addi 1
	sts L110,R24
	.dbline 321
; 	    disp_state=3;
	ldi R24,3
	sts _disp_state,R24
	.dbline 322
; 	    break;
	xjmp L120
L144:
	.dbline 326
; 	   }
; 
;   case 3:
;        {
	.dbline 327
; 	   LCD_set_XY(6,2);
	ldi R18,2
	ldi R16,6
	xcall _LCD_set_XY
	.dbline 328
;        for (n=0; n<72; n++)
	clr R20
	xjmp L148
L145:
	.dbline 329
;        {
	.dbline 330
; 	   if(++disp_point>71)
	lds R24,L107
	subi R24,255    ; addi 1
	mov R2,R24
	sts L107,R2
	ldi R24,71
	cp R24,R2
	brsh L149
	.dbline 331
; 	     {disp_point=0; 
	.dbline 331
	clr R2
	sts L107,R2
	.dbline 332
; 		  }
L149:
	.dbline 333
	ldi R18,1
	ldi R24,<L111
	ldi R25,>L111
	lds R30,L107
	clr R31
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	xcall _LCD_write_byte
	.dbline 334
L146:
	.dbline 328
	inc R20
L148:
	.dbline 328
	cpi R20,72
	brlo L145
	.dbline 336
;        LCD_write_byte(buffer_h[disp_point],1);
;        }
; 	   
;        LCD_set_XY(6,3); 
	ldi R18,3
	ldi R16,6
	xcall _LCD_set_XY
	.dbline 337
;        for (n=0; n<72; n++)
	clr R20
	xjmp L154
L151:
	.dbline 338
;        {
	.dbline 339
; 	   if(++disp_point>71)
	lds R24,L107
	subi R24,255    ; addi 1
	mov R2,R24
	sts L107,R2
	ldi R24,71
	cp R24,R2
	brsh L155
	.dbline 340
; 	     {disp_point=0; 
	.dbline 340
	clr R2
	sts L107,R2
	.dbline 341
; 		 }
L155:
	.dbline 342
	ldi R18,1
	ldi R24,<L112
	ldi R25,>L112
	lds R30,L107
	clr R31
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	xcall _LCD_write_byte
	.dbline 343
L152:
	.dbline 337
	inc R20
L154:
	.dbline 337
	cpi R20,72
	brlo L151
	.dbline 345
;        LCD_write_byte(buffer_l[disp_point],1);
;        }
; 
; 	   if(++disp_point>71)
	lds R24,L107
	subi R24,255    ; addi 1
	mov R2,R24
	sts L107,R2
	ldi R24,71
	cp R24,R2
	brsh L157
	.dbline 346
; 	      disp_point=0;
	clr R2
	sts L107,R2
L157:
	.dbline 348
; 
; 	   disp_state=4;
	ldi R24,4
	sts _disp_state,R24
	.dbline 349
; 		break; 
	xjmp L120
L159:
	.dbline 352
; 	   }
;    case 4:
;        {
	.dbline 353
; 		if(++disp_i==(72+disp_number))
	lds R24,L109
	lds R25,L109+1
	adiw R24,1
	movw R2,R24
	sts L109+1,R3
	sts L109,R2
	lds R24,L108
	lds R25,L108+1
	subi R24,184  ; offset = 72
	sbci R25,255
	cp R2,R24
	cpc R3,R25
	brne L160
	.dbline 354
; 		    disp_i=0;
	clr R2
	clr R3
	sts L109+1,R3
	sts L109,R2
L160:
	.dbline 356
; 
; 		disp_state=1; 
	ldi R24,1
	sts _disp_state,R24
	.dbline 357
; 		break;
	xjmp L120
L162:
	.dbline 360
; 	   }
;    case 5:
;       {
	.dbline 361
; 	   for(n=0;n<72;n++)
	clr R20
	xjmp L166
L163:
	.dbline 362
	.dbline 363
	ldi R24,<L111
	ldi R25,>L111
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 364
	ldi R24,<L112
	ldi R25,>L112
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 365
L164:
	.dbline 361
	inc R20
L166:
	.dbline 361
	cpi R20,72
	brlo L163
	.dbline 366
; 	      {
; 		   buffer_h[n]=0;
; 	       buffer_l[n]=0;
; 	      }
; 	   disp_point=0;
	clr R2
	sts L107,R2
	.dbline 367
; 	   disp_number=0;
	clr R3
	sts L108+1,R3
	sts L108,R2
	.dbline 368
; 	   disp_i=0;
	sts L109+1,R3
	sts L109,R2
	.dbline 369
;        disp_j=0;
	sts L110,R2
	.dbline 370
;        disp_state=0;
	sts _disp_state,R2
	.dbline 371
; 	   break;
L119:
L120:
	.dbline 374
; 	   }
;   }
;   }
L117:
	.dbline 375
L114:
	.dbline -2
L106:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r m 22 c
	.dbsym r n 20 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\MYWORK~1\开发设计\AVR-MP3\mp3开发板光盘\驱动程序\MP3BOA~1.8\task.c
_secperclus::
	.blkb 1
	.dbsym e secperclus _secperclus c

⌨️ 快捷键说明

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