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

📄 bi2.lst

📁 驱动320240
💻 LST
📖 第 1 页 / 共 5 页
字号:
    018F E20D      LDI	R16,0x2D
    0190 E011      LDI	R17,1
    0191 DF85      RCALL	_change_1302
    0192 9300008E  STS	0x8E,R16
(0190) sCURDATE[6]=change_1302(&temp_1302[6]);
    0194 E20E      LDI	R16,0x2E
    0195 E011      LDI	R17,1
    0196 DF80      RCALL	_change_1302
    0197 9300008F  STS	0x8F,R16
(0191) time[0][0]=sCURDATE[0];
    0199 90200089  LDS	R2,sCURDATE
    019B 92200062  STS	time,R2
(0192) time[0][1]=sCURDATE[1];
    019D 9020008A  LDS	R2,sCURDATE+1
    019F 92200063  STS	time+1,R2
(0193) time[0][2]=sCURDATE[2];
    01A1 9020008B  LDS	R2,sCURDATE+2
    01A3 92200064  STS	time+2,R2
    01A5 940E0721  CALL	pop_gset4
    01A7 9508      RET
(0194) }
(0195) 
(0196)   
(0197)   
(0198)   
(0199)   
(0200)   
(0201)   /*		 音阶常数=65536-8000000/8/2/f	  */
(0202) #define DO	64580	//523
(0203) #define RE	64684	//587
(0204) #define	MI	64777	//659
(0205) #define FA	64820	//698
(0206) #define	SO	64898	//784
(0207) #define LA	64968	//880
(0208) #define	TI	65030	//988                	                        	
(0209) #define DO_H	65058	//1046
(0210) #define RE_H	65110	//1174
(0211) #define MI_H	65157	//1318
(0212) #define FA_H	65178	//1397
(0213) #define SO_H	65217	//1568
(0214) #define LA_H	65252	//1760
(0215) #define TI_H	65283	//1976
(0216) #define DO_HH	65297	//2093
(0217) 
(0218) /* 		  音乐数据  	  */
(0219) /* 四分之一拍为0x10, 二分之一拍为0x20, 一拍为0x40*/
(0220) /* 低1-1 2-2 3-3 4-4 5-5 6-6 7-7 */
(0221) /* 中1-8 2-9 3-A 4-B 5-C 6-D 7-E */
(0222) /* 高1-F*/								  	
(0223) const unsigned char sound[]=
(0224) { //乐曲数据表
(0225) 
(0226) 					
(0227) 			0x2a,0x2a,0x4a,0x2a,0x2a,0x4a,0x2a,0x2c,0x28,0x29,
(0228) 	  		0x4a,0x4a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,
(0229) 			0x2a,0x29,0x29,0x28,0x49,0x4c,0x2a,0x2a,0x4a,0x2a,
(0230) 			0x2a,0x4a,0x2a,0x2c,0x28,0x29,0x4a,0x4a,0x2b,0x2b,
(0231) 			0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2c,0x2c,0x2b,0x29,
(0232) 			0x48,0x48,0x00,0x00
(0233) 	/*					
(0234) 			0x4a,0x2a,0x29,0x28,0x29,0x28,0x27,0x46,0x46,0x46,
(0235)                         0x46,0x4b,0x2b,0x2a,0x29,0x28,0x29,0x2b,0x4a,0x4a,
(0236) 			0x4a,0x4b,0x2b,0x2a,0x49,0x29,0x2b,0x4a,0x2a,0x28,
(0237) 			0x46,0x48,0x47,0x4a,0x29,0x28,0x27,0x28,0x46,0x46,
(0238) 			0x46,0x46,0x4a,0x2a,0x29,0x28,0x29,0x28,0x27,0x46,
(0239) 			0x46,0x46,0x46,0x4b,0x2b,0x2a,0x29,0x28,0x29,0x2b,
(0240) 			0x4a,0x4a,0x4a,0x4b,0x2b,0x2a,0x49,0x29,0x2b,0x4a,
(0241) 			0x2a,0x28,0x46,0x48,0x47,0x4a,0x29,0x28,0x27,0x28,
(0242) 			0x46,0x46,0x46,0x46,
(0243) 						
(0244) 			0x43,0x43,0x45,0x49,0x49,0x49,0x48,0x48,0x45,0x44,
(0245) 	  		0x44,0x44,0x43,0x43,0x43,0x43,0x44,0x45,0x46,0x46,
(0246) 			0x46,0x45,0x45,0x45,0x43,0x43,0x45,0x49,0x49,0x49,
(0247) 			0x48,0x48,0x45,0x44,0x44,0x44,0x43,0x43,0x45,0x45,
(0248) 			0x46,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,
(0249) 			0x45,0x47,0x46,0x45,0x43,0x43,0x45,0x48,0x48,0x48,
(0250) 			0x46,0x46,0x48,0x49,0x49,0x48,0x47,0x47,0x47,0x45,
(0251) 			0x45,0x45,0x43,0x43,0x45,0x49,0x49,0x49,0x48,0x48,
(0252) 			0x45,0x44,0x44,0x44,0x43,0x43,0x45,0x45,0x46,0x47,
(0253) 			0x48,0x48,0x48,0x48,0x40,0x40,
(0254) 						
(0255) 			0x45,0x48,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x49,0x4a,
(0256) 	  		0x49,0x48,0x48,0x48,0x48,0x48,0x45,0x48,0x4a,0x4a,
(0257) 			0x48,0x4a,0x4c,0x4c,0x4b,0x4a,0x49,0x49,0x49,0x49,
(0258) 			0x49,0x4c,0x4b,0x4a,0x4a,0x4a,0x49,0x48,0x48,0x49,
(0259) 			0x4a,0x4c,0x4b,0x4b,0x4b,0x4b,0x4b,0x46,0x46,0x45,
(0260) 			0x45,0x45,0x47,0x48,0x49,0x49,0x4a,0x49,0x48,0x48,
(0261)     			0x48,0x48,0x48,0x48,
(0262) 0x23,0x24,0x25,0x44,0x45,0x24,0x23,0x22,0x42,0x40,0x40,0x23,0x22,0x21,0x41,0x28,
(0263) 0x48,0x23,0x25,0x45,0x40,0x40,0x21,0x21,0x42,0x21,0x21,0x41,0x20,0x28,0x47,0x26,
(0264) 0x17,0x16,0x15,0x45,0x40,0x31,0x11,0x21,0x21,0x21,0x22,0x42,0x40,0x20,0x23,0x23,
(0265) 0x24,0x25,0x24,0x23,0x24,0x25,0x26,0x23,0x23,0x42,0x42,0x40,0x23,0x22,0x21,0x41,
(0266) 0x28,0x28,0x28,0x23,0x25,0x45,0x45,0x40,0x20,0x25,0x46,0x28,0x28,0x48,0x20,0x29,
(0267) 0x47,0x26,0x17,0x16,0x15,0x45,0x25,0x25,0x26,0x28,0x18,0x16,0x26,0x28,0x26,0x28,
(0268) 0x19,0x19,0x49,0x49,0x20,0x25,0x2a,0x18,0x19,0x29,0x28,0x16,0x17,0x16,0x15,0x25,
(0269) 0x25,0x28,0x29,0x2a,0x29,0x48,0x28,0x48,0x2c,0x4c,0x4c,0x40,0x2a,0x2c,0x1c,0x1a,
(0270) 0x2a,0x2a,0x29,0x4a,0x2b,0x2a,0x4a,0x4a,0x40,0x2a,0x29,0x29,0x28,0x28,0x26,0x48,
(0271) 0x29,0x26,0x45,0x45,0x40,0x25,0x25,0x26,0x21,0x18,0x16,0x26,0x28,0x26,0x28,0x29,
(0272) 0x49,0x49,0x20,0x25,0x28,0x29,0x2a,0x29,0x49,0x28,0x48,0x2c,0x4c,0x4c,0x40,0x2a,
(0273) 0x2c,0x15,0x1a,0x2a,0x2a,0x29,0x4a,0x2b,0x2a,0x4a,0x4a,0x40,0x2a,0x29,0x29,0x28,
(0274) 0x28,0x26,0x28,0x28,0x29,0x26,0x45,0x45,0x40,0x25,0x25,0x26,0x28,0x28,0x26,0x2a,
(0275) 0x19,0x18,0x28,0x18,0x19,0x48,0x48,0x40,0x40,0x40,0x40,0x28,0x48,0x29,0x28,0x28,
(0276) 0x2a,0x1a,0x1a,0x1a,0x18,0x40,0x20,0x26,0x28,0x28,0x28,0x26,0x28,0x48,0x26,0x25,
(0277) 0x45,0x45,0x40,0x40,0x40,0x28,0x48,0x28,0x28,0x1c,0x1d,0x2d,0x2c,0x28,0x28,0x28,
(0278) 0x20,0x26,0x19,0x1a,0x29,0x19,0x18,0x28,0x28,0x26,0x21,0x29,0x49,0x49,0x40,0x20,
(0279) 0x28,0x29,0x2a,0x4a,0x4a,0x20,0x25,0x28,0x29,0x48,0x48,0x48,0x25,0x25,0x26,0x28,
(0280) 0x28,0x26,0x2a,0x19,0x18,0x28,0x18,0x19,0x49,0x49,0x40,0x40,
(0281) 
(0282) 0x25,0x28,0x2A,0x4A,0x29,0x28,0x48,0x28,        
(0283) 0x26,0x46,0x28,0x45,0x25,0x28,0x2A,0x4A,
(0284) 0x29,0x28,0x48,0x28,0x29,0x49,0x2A,0x49,
(0285) 0x40,0x2A,0x4A,0x2B,0x4C,0x40,0x3D,0x1D,
(0286) 0x2D,0x2D,0x4C,0x40,0x2A,0x4A,0x2C,0x48,
(0287) 0x28,0x2A,0x29,0x46,0x25,0x48,0x40,
(0288) 
(0289) 0x2a,0x2a,0x4a,0x2a,0x2a,0x4a,0x2a,0x2c,0x28,0x29,
(0290) 0x4a,0x4a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,
(0291) 0x2a,0x29,0x29,0x28,0x49,0x4c,0x2a,0x2a,0x4a,0x2a,
(0292) 0x2a,0x4a,0x2a,0x2c,0x28,0x29,0x4a,0x4a,0x2b,0x2b,
(0293) 0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2c,0x2c,0x2b,0x29,
(0294) 0x48,0x48,
(0295) 
(0296) 0x4a,0x2a,0x29,0x28,0x29,0x28,0x27,0x46,0x46,0x46,
(0297) 0x46,0x4b,0x2b,0x2a,0x29,0x28,0x29,0x2b,0x4a,0x4a,
(0298) 0x4a,0x4b,0x2b,0x2a,0x49,0x29,0x2b,0x4a,0x2a,0x28,
(0299) 0x46,0x48,0x47,0x4a,0x29,0x28,0x27,0x28,0x46,0x46,
(0300) 0x46,0x46,0x4a,0x2a,0x29,0x28,0x29,0x28,0x27,0x46,
(0301) 0x46,0x46,0x46,0x4b,0x2b,0x2a,0x29,0x28,0x29,0x2b,
(0302) 0x4a,0x4a,0x4a,0x4b,0x2b,0x2a,0x49,0x29,0x2b,0x4a,
(0303) 0x2a,0x28,0x46,0x48,0x47,0x4a,0x29,0x28,0x27,0x28,
(0304) 0x46,0x46,0x46,0x46,
(0305) 
(0306) 0x43,0x43,0x45,0x49,0x49,0x49,0x48,0x48,0x45,0x44,
(0307) 0x44,0x44,0x43,0x43,0x43,0x43,0x44,0x45,0x46,0x46,
(0308) 0x46,0x45,0x45,0x45,0x43,0x43,0x45,0x49,0x49,0x49,
(0309) 0x48,0x48,0x45,0x44,0x44,0x44,0x43,0x43,0x45,0x45,
(0310) 0x46,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,
(0311) 0x45,0x47,0x46,0x45,0x43,0x43,0x45,0x48,0x48,0x48,
(0312) 0x46,0x46,0x48,0x49,0x49,0x48,0x47,0x47,0x47,0x45,
(0313) 0x45,0x45,0x43,0x43,0x45,0x49,0x49,0x49,0x48,0x48,
(0314) 0x45,0x44,0x44,0x44,0x43,0x43,0x45,0x45,0x46,0x47,
(0315) 0x48,0x48,0x48,0x48,0x40,0x40,
(0316) 
(0317) 0x45,0x48,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x49,0x4a,
(0318) 0x49,0x48,0x48,0x48,0x48,0x48,0x45,0x48,0x4a,0x4a,
(0319) 0x48,0x4a,0x4c,0x4c,0x4b,0x4a,0x49,0x49,0x49,0x49,
(0320) 0x49,0x4c,0x4b,0x4a,0x4a,0x4a,0x49,0x48,0x48,0x49,
(0321) 0x4a,0x4c,0x4b,0x4b,0x4b,0x4b,0x4b,0x46,0x46,0x45,
(0322) 0x45,0x45,0x47,0x48,0x49,0x49,0x4a,0x49,0x48,0x48,
(0323) 0x48,0x48,0x48,0x48,
(0324) 						
(0325) 0x00,0x00*/
(0326) };
(0327) 
(0328) /*	  		    音阶表				*/	
(0329) const unsigned int TONETABLE[15]={DO,RE,MI,FA,SO,LA,TI,DO_H,
(0330) 			    	 	RE_H,MI_H,FA_H,SO_H,LA_H,TI_H,DO_HH};
(0331) /*			  音阶重装常数			*/						
(0332) unsigned int toneconst;						
(0333) 
(0334) void delay_us(int time)
(0335) {//微秒级延时程序     
(0336)  do
(0337)  {
(0338)   time--;
_delay_us:
  time                 --> R16
    01A8 5001      SUBI	R16,1
    01A9 4010      SBCI	R17,0
(0339)  }	
(0340)   while (time>1);
    01AA E081      LDI	R24,1
    01AB E090      LDI	R25,0
    01AC 1780      CP	R24,R16
    01AD 0791      CPC	R25,R17
    01AE F3CC      BLT	0x01A8
    01AF 9508      RET
_delay_ms:
  time                 --> R20
    01B0 940E072F  CALL	push_gset1
    01B2 01A8      MOVW	R20,R16
(0341) }	  
(0342) 
(0343) void delay_ms(unsigned int time)
(0344) {//毫秒级延时程序
    01B3 C005      RJMP	0x01B9
(0345)  while(time!=0)
(0346)  {		
(0347)   delay_us(1000);
    01B4 EE08      LDI	R16,0xE8
    01B5 E013      LDI	R17,3
    01B6 DFF1      RCALL	_delay_us
(0348)   time--;
    01B7 5041      SUBI	R20,1
    01B8 4050      SBCI	R21,0
    01B9 3040      CPI	R20,0
    01BA 0745      CPC	R20,R21
    01BB F7C1      BNE	0x01B4
    01BC 940E0732  CALL	pop_gset1
    01BE 9508      RET
_timer1_ovf_isr:
    01BF 922A      ST	R2,-Y
    01C0 923A      ST	R3,-Y
    01C1 938A      ST	R24,-Y
    01C2 B62F      IN	R2,0x3F
    01C3 922A      ST	R2,-Y
(0349)  }
(0350) }		
(0351) 
(0352) #pragma interrupt_handler timer1_ovf_isr:iv_TIMER1_OVF
(0353) void timer1_ovf_isr(void)
(0354) 	 {
(0355) 	  TCNT1=toneconst;
    01C4 90200126  LDS	R2,toneconst
    01C6 90300127  LDS	R3,toneconst+1
    01C8 BC3D      OUT	0x2D,R3
    01C9 BC2C      OUT	0x2C,R2
(0356) 	  PORTC^=1;
    01CA E081      LDI	R24,1
    01CB B225      IN	R2,0x15
    01CC 2628      EOR	R2,R24
    01CD BA25      OUT	0x15,R2
    01CE 9029      LD	R2,Y+
    01CF BE2F      OUT	0x3F,R2
    01D0 9189      LD	R24,Y+
    01D1 9039      LD	R3,Y+
    01D2 9029      LD	R2,Y+
    01D3 9518      RETI
_music:
  sound_add            --> R20
  temp1                --> R22
  temp                 --> R10
    01D4 940E072B  CALL	push_gset3
    01D6 9722      SBIW	R28,2
(0357) 	 }	 	 
(0358) void music(void)
(0359)  	 {
(0360) 	  unsigned char temp,temp1;
(0361) 	  unsigned int sound_add=0;
    01D7 2744      CLR	R20
    01D8 2755      CLR	R21
(0362)  	  TCCR1A = 0x00;
    01D9 2422      CLR	R2
    01DA BC2F      OUT	0x2F,R2
(0363) 	  TCCR1B =(1<<CS11);//8分频
    01DB E082      LDI	R24,2
    01DC BD8E      OUT	0x2E,R24
(0364) 	  temp1 = sound[sound_add];
    01DD E584      LDI	R24,0x54
    01DE E090      LDI	R25,0
    01DF 01FA      MOVW	R30,R20
    01E0 0FE8      ADD	R30,R24
    01E1 1FF9      ADC	R31,R25
    01E2 9164      LPM	R22,0(Z)
    01E3 C038      RJMP	0x021C
(0365) 	  while(temp1!=0)
(0366)  	  	{disp_temp(0,0,1);
    01E4 E081      LDI	R24,1
    01E5 E090      LDI	R25,0
    01E6 8399      STD	Y+1,R25
    01E7 8388      STD	Y+0,R24
    01E8 2722      CLR	R18
    01E9 2733      CLR	R19
    01EA 2700      CLR	R16
    01EB 2711      CLR	R17
    01EC D160      RCALL	_disp_temp
(0367) 			temp=temp1; 
    01ED 2EA6      MOV	R10,R22
(0368) 			temp&=0x0f;
    01EE 2D8A      MOV	R24,R10
    01EF 708F      ANDI	R24,0xF
    01F0 2EA8      MOV	R10,R24
(0369) 
(0370) 			if(temp!=0)
    01F1 2388      TST	R24
    01F2 F0A1      BEQ	0x0207
(0371) 			  {
(0372) 			   TIMSK|=(1<<TOIE1);//根据SOUNDTABLE中数据的低四位选择音调频率
    01F3 B789      IN	R24,0x39
    01F4 6084      ORI	R24,4
    01F5 BF89      OUT	0x39,R24
(0373) 			   temp--;			   
    01F6 94AA      DEC	R10
(0374)         	   	   toneconst=TONETABLE[temp];
    01F7 E082      LDI	R24,2
    01F8 9D8A      MUL	R24,R10
    01F9 01F0      MOVW	R30,R0
    01FA E88A      LDI	R24,0x8A
    01FB E090      LDI	R25,0
    01FC 0FE8      ADD	R30,R24
    01FD 1FF9      ADC	R31,R25
    01FE 9005      LPM	R0,Z+
    01FF 9014      LPM	R1,0(Z)
    0200 01F0      MOVW	R30,R0
    0201 93F00127  STS	toneconst+1,R31
    0203 93E00126  STS	toneconst,R30
(0375) 			   TCNT1=toneconst;
    0205 BDFD      OUT	0x2D,R31
    0206 BDEC      OUT	0x2C,R30
(0376)  			  }
(0377) 			temp=temp1;
    0207 2EA6      MOV	R10,R22
(0378) 			temp>>=4;
    0208 2D8A      MOV	R24,R10
    0209 9582      SWAP	R24
    020A 708F      ANDI	R24,0xF
(0379) 			temp&=0x0f;
    020B 708F      ANDI	R24,0xF
    020C 2EA8      MOV	R10,R24
(0380) 			delay_ms(temp*129);//根据SOUNDTABLE中数据的高四位*5后,为音调持续时间
    020D E881      LDI	R24,0x81
    020E 9D8A      MUL	R24,R10
    020F 0180      MOVW	R16,R0
    0210 DF9F      RCALL	_delay_ms
(0381) 			TIMSK&=~(1<<TOIE1);
    0211 B789      IN	R24,0x39
    0212 7F8B      ANDI	R24,0xFB
    0213 BF89      OUT	0x39,R24
(0382) 			sound_add++;
    0214 5F4F      SUBI	R20,0xFF
    0215 4F5F      SBCI	R21,0xFF
(0383) 			temp1 = sound[sound_add]; 
    0216 E584      LDI	R24,0x54
    0217 E090      LDI	R25,0
    0218 01FA      MOVW	R30,R20
    0219 0FE8      ADD	R30,R24
    021A 1FF9      ADC	R31,R25
    021B 9164      LPM	R22,0(Z)
    021C 2366      TST	R22
    021D F009      BEQ	0x021F
    021E CFC5      RJMP	0x01E4
    021F 9622      ADIW	R28,2
    0220 940E071E  CALL	pop_gset3
    0222 9508      RET
(0384) 		}
(0385) 	//	delay_ms(1000);	
(0386) 	                                 	
(0387) 	 }	 	 	 	 
(0388) #define delaytime 300
(0389) 
(0390) //TIMER2 initialisation - prescale:256
(0391) // desired value: 1Sec
(0392) // actual value:  1.000Sec (0.0%)
(0393) void timer2_init(void)
(0394) {
(0395)  TCCR2 = 0x00; //stop 
_timer2_init:
    0223 2422      CLR	R2
    0224 BC25      OUT	0x25,R2
(0396)  ASSR |= (1<<AS2); //set async mode
    0225 B582      IN	R24,0x22
    0226 6088      ORI	R24,0x8
    0227 BD82      OUT	0x22,R24
(0397)  TCNT2 = 0x80; //setup
    0228 E880      LDI	R24,0x80
    0229 BD84      OUT	0x24,R24
(0398)  TCCR2 |= (1<<CS22)|(1<<CS21); //start
    022A B585      IN	R24,0x25
    022B 6086      ORI	R24,6
    022C BD85      OUT	0x25,R24
    022D 9508      RET
_timer2_ovf_isr:
    022E 922A      ST	R2,-Y
    022F 938A      ST	R24,-Y
    0230 B62F      IN	R2,0x3F
    0231 922A      ST	R2,-Y
(0399) }
(0400) 
(0401) #pragma interrupt_handler timer2_ovf_isr:iv_TIMER2_OVF
(0402) void timer2_ovf_isr(void)
(0403) {
(0404)  TCNT2 = 0x80; //reload counter value
    0232 E880      LDI	R24,0x80
    0233 BD84      OUT	0x24,R24
(0405)  PORTB^=1;
    0234 E081      LDI	R24,1
    0235 B228      IN	R2,0x18
    0236 2628      EOR	R2,R24
    0237 BA28      OUT	0x18,R2
    0238 9029      LD	R2,Y+
    0239 BE2F      OUT	0x3F,R2
    023A 9189      LD	R24,Y+
    023B 9029      LD	R2,Y+
    023C 9518      RETI
_LCD_write_ch:
  k                    --> Y+1
  p                    --> Y+0
  i                    --> R20
  s                    --> R22
  z                    --> R10
  Y                    --> R14
  X                    --> R12
    023D 940E0727  CALL	push_gset5
    023F 2EE2      MOV	R14,R18
    0240 2EC0      MOV	R12,R16
    0241 9726      SBIW	R28,6
    0242 88A8      LDD	R10,Y+16
    0243 896A      LDD	R22,Y+18
    0244 897B      LDD	R23,Y+19
(0406) }
(0407) 
(0408) 
(0409) 
(0410)   
(0411)   
(0412)   
(0413)   
(0414)   
(0415)   
(0416)   
(0417)   
(0418)   
(0419)   
(0420)   
(0421)   

⌨️ 快捷键说明

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