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

📄 1602_8563_timer.lst

📁 avr单片机的程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    02E5 E011      LDI	R17,1
    02E6 DD9E      RCALL	_delay_ms
(0211) 	tonghe();
    02E7 DE61      RCALL	_tonghe
(0212) 	delay_ms(2000);
    02E8 ED00      LDI	R16,0xD0
    02E9 E017      LDI	R17,7
    02EA DD9A      RCALL	_delay_ms
(0213) 	
(0214) 	Twi_Init();
    02EB DE6B      RCALL	_Twi_Init
(0215) 	delay_ms(100);
    02EC E604      LDI	R16,0x64
    02ED E010      LDI	R17,0
    02EE DD96      RCALL	_delay_ms
(0216) 	CLI(); 	 						//关总中断
    02EF 94F8      BCLR	7
(0217) 	timer1_init();					//定时器1初始化
    02F0 DFAB      RCALL	_timer1_init
(0218) 	MCUCR = 0x00;
    02F1 2422      CLR	R2
    02F2 BE25      OUT	0x35,R2
(0219) 	GICR  = 0x00;
    02F3 BE2B      OUT	0x3B,R2
(0220) 	TIMSK = 0x04; 					//开放定时器0中断和比较中断
    02F4 E084      LDI	R24,4
    02F5 BF89      OUT	0x39,R24
(0221) 	SEI(); 							//开总中断
    02F6 9478      BSET	7
(0222) 	
(0223) 	cls();
    02F7 DE1B      RCALL	_cls
(0224) 	delay_ms(50);
    02F8 E302      LDI	R16,0x32
    02F9 E010      LDI	R17,0
    02FA DD8A      RCALL	_delay_ms
    02FB C21E      RJMP	0x051A
(0225) 
(0226) 	while(1)
(0227) 	    {
(0228) 		a=KEY_RD;
    02FC B383      IN	R24,0x13
    02FD 9586      LSR	R24
    02FE 6F81      ORI	R24,0xF1
    02FF B340      IN	R20,0x10
    0300 9546      LSR	R20
    0301 9546      LSR	R20
    0302 6F4E      ORI	R20,0xFE
    0303 2348      AND	R20,R24
    0304 9540      COM	R20
(0229) 		if(a!=0)
    0305 F409      BNE	0x0307
    0306 C213      RJMP	0x051A
(0230) 		    {
(0231) 			delay_ms(20);
    0307 E104      LDI	R16,0x14
    0308 E010      LDI	R17,0
    0309 DD7B      RCALL	_delay_ms
(0232) 			a1=KEY_RD;
    030A B383      IN	R24,0x13
    030B 9586      LSR	R24
    030C 6F81      ORI	R24,0xF1
    030D B390      IN	R25,0x10
    030E 9596      LSR	R25
    030F 9596      LSR	R25
    0310 6F9E      ORI	R25,0xFE
    0311 2398      AND	R25,R24
    0312 9590      COM	R25
    0313 8398      STD	Y+0,R25
(0233) 			if(a1==a)
    0314 2E09      MOV	R0,R25
    0315 1794      CP	R25,R20
    0316 F009      BEQ	0x0318
    0317 C200      RJMP	0x0518
(0234) 			    {
(0235) 				switch(a)
    0318 2EE4      MOV	R14,R20
    0319 24FF      CLR	R15
    031A 01C7      MOVW	R24,R14
    031B 3081      CPI	R24,1
    031C E0E0      LDI	R30,0
    031D 079E      CPC	R25,R30
    031E F079      BEQ	0x032E
    031F 3082      CPI	R24,2
    0320 E0E0      LDI	R30,0
    0321 079E      CPC	R25,R30
    0322 F159      BEQ	0x034E
    0323 3084      CPI	R24,4
    0324 E0E0      LDI	R30,0
    0325 079E      CPC	R25,R30
    0326 F409      BNE	0x0328
    0327 C075      RJMP	0x039D
    0328 3088      CPI	R24,0x8
    0329 E0E0      LDI	R30,0
    032A 079E      CPC	R25,R30
    032B F409      BNE	0x032D
    032C C124      RJMP	0x0451
    032D C1EA      RJMP	0x0518
(0236) 				    {
(0237) 					case 0x01:
(0238) 						spk(10,1);
    032E E021      LDI	R18,1
    032F E00A      LDI	R16,0xA
    0330 DE46      RCALL	_spk
(0239) 						if(set_flag==0)
    0331 8009      LDD	R0,Y+1
    0332 2000      TST	R0
    0333 F471      BNE	0x0342
(0240) 						    {
(0241) 							TCCR1B=0x00;
    0334 2422      CLR	R2
    0335 BC2E      OUT	0x2E,R2
(0242) 							LED_ON;
    0336 9AC3      SBI	0x18,3
(0243) 							set_flag=1;
    0337 2400      CLR	R0
    0338 9403      INC	R0
    0339 8209      STD	Y+1,R0
(0244) 							cls();
    033A DDD8      RCALL	_cls
(0245) 							locate(1,4);		   //显示“时间调整”
    033B E024      LDI	R18,4
    033C E001      LDI	R16,1
    033D DDDB      RCALL	_locate
(0246) 							xs_lcd("SET:");
    033E E804      LDI	R16,0x84
    033F E010      LDI	R17,0
    0340 DDF8      RCALL	_xs_lcd
(0247) 							}
    0341 C1D6      RJMP	0x0518
(0248) 						else
(0249) 							{
(0250) 							TCCR1B=0x04;  		   //开启时钟
    0342 E084      LDI	R24,4
    0343 BD8E      OUT	0x2E,R24
(0251) 							set_flag=0;
    0344 2400      CLR	R0
    0345 8209      STD	Y+1,R0
(0252) 							if(set_bh==1)
    0346 818A      LDD	R24,Y+2
    0347 3081      CPI	R24,1
    0348 F009      BEQ	0x034A
    0349 C1CE      RJMP	0x0518
(0253) 							    {
(0254) 								write_timer();	   //写入新时间
    034A DEA6      RCALL	_write_timer
(0255) 								set_bh=0;
    034B 2400      CLR	R0
    034C 820A      STD	Y+2,R0
(0256) 								}
(0257) 							}
(0258) 						break;
    034D C1CA      RJMP	0x0518
(0259) 					case 0x02:
(0260) 					    if(set_flag==1)
    034E 8189      LDD	R24,Y+1
    034F 3081      CPI	R24,1
    0350 F009      BEQ	0x0352
    0351 C1C6      RJMP	0x0518
(0261) 						    {
(0262) 							spk(10,1);
    0352 E021      LDI	R18,1
    0353 E00A      LDI	R16,0xA
    0354 DE22      RCALL	_spk
(0263) 							set_time++;					
    0355 9563      INC	R22
(0264) 							locate(2,2);		   	//显示待调整的数据
    0356 E022      LDI	R18,2
    0357 E002      LDI	R16,2
    0358 DDC0      RCALL	_locate
(0265) 							switch(set_time)
    0359 2E26      MOV	R2,R22
    035A 2433      CLR	R3
    035B 823C      STD	Y+4,R3
    035C 822B      STD	Y+3,R2
    035D 01C1      MOVW	R24,R2
    035E 3081      CPI	R24,1
    035F E0E0      LDI	R30,0
    0360 079E      CPC	R25,R30
    0361 F0A9      BEQ	0x0377
    0362 3082      CPI	R24,2
    0363 E0E0      LDI	R30,0
    0364 079E      CPC	R25,R30
    0365 F0B9      BEQ	0x037D
    0366 3083      CPI	R24,3
    0367 E0E0      LDI	R30,0
    0368 079E      CPC	R25,R30
    0369 F0C9      BEQ	0x0383
    036A 3084      CPI	R24,4
    036B E0E0      LDI	R30,0
    036C 079E      CPC	R25,R30
    036D F0D9      BEQ	0x0389
    036E 3085      CPI	R24,5
    036F E0E0      LDI	R30,0
    0370 079E      CPC	R25,R30
    0371 F0E9      BEQ	0x038F
    0372 3086      CPI	R24,6
    0373 E0E0      LDI	R30,0
    0374 079E      CPC	R25,R30
    0375 F0F9      BEQ	0x0395
    0376 C024      RJMP	0x039B
(0266) 						        {
(0267) 								case 1:
(0268) 							        xs_lcd("year:");
    0377 E70E      LDI	R16,0x7E
    0378 E010      LDI	R17,0
    0379 DDBF      RCALL	_xs_lcd
(0269) 									set_xs1(6);		 //显示年
    037A E006      LDI	R16,6
    037B DF35      RCALL	_set_xs1
(0270) 									break;
    037C C19B      RJMP	0x0518
(0271) 								case 2:
(0272) 							    	xs_lcd("muth:");
    037D E708      LDI	R16,0x78
    037E E010      LDI	R17,0
    037F DDB9      RCALL	_xs_lcd
(0273) 									set_xs1(5);		 //显示月
    0380 E005      LDI	R16,5
    0381 DF2F      RCALL	_set_xs1
(0274) 									break;
    0382 C195      RJMP	0x0518
(0275) 								case 3:
(0276) 							    	xs_lcd(" day:");
    0383 E702      LDI	R16,0x72
    0384 E010      LDI	R17,0
    0385 DDB3      RCALL	_xs_lcd
(0277) 									set_xs1(3);		 //显示日
    0386 E003      LDI	R16,3
    0387 DF29      RCALL	_set_xs1
(0278) 									break;
    0388 C18F      RJMP	0x0518
(0279) 								case 4:
(0280) 							    	xs_lcd("hour:");
    0389 E60C      LDI	R16,0x6C
    038A E010      LDI	R17,0
    038B DDAD      RCALL	_xs_lcd
(0281) 									set_xs1(2);		 //显示时
    038C E002      LDI	R16,2
    038D DF23      RCALL	_set_xs1
(0282) 									break;
    038E C189      RJMP	0x0518
(0283) 								case 5:
(0284) 							    	xs_lcd("mine:");
    038F E606      LDI	R16,0x66
    0390 E010      LDI	R17,0
    0391 DDA7      RCALL	_xs_lcd
(0285) 									set_xs1(1);		 //显示分
    0392 E001      LDI	R16,1
    0393 DF1D      RCALL	_set_xs1
(0286) 									break;
    0394 C183      RJMP	0x0518
(0287) 								case 6:
(0288) 							    	xs_lcd("week:");
    0395 E600      LDI	R16,0x60
    0396 E010      LDI	R17,0
    0397 DDA1      RCALL	_xs_lcd
(0289) 									set_xs1(4);		 //显示周
    0398 E004      LDI	R16,4
    0399 DF17      RCALL	_set_xs1
(0290) 									break;
    039A C17D      RJMP	0x0518
(0291) 								default:set_time=0;break;
    039B 2766      CLR	R22
(0292) 								}
(0293) 							}
(0294) 						break;
    039C C17B      RJMP	0x0518
(0295) 					case 0x04:
(0296) 					    if(set_flag==1)
    039D 8189      LDD	R24,Y+1
    039E 3081      CPI	R24,1
    039F F009      BEQ	0x03A1
    03A0 C0AE      RJMP	0x044F
(0297) 						    {
(0298) 							spk(10,1);
    03A1 E021      LDI	R18,1
    03A2 E00A      LDI	R16,0xA
    03A3 DDD3      RCALL	_spk
(0299) 							set_bh=1;
    03A4 2400      CLR	R0
    03A5 9403      INC	R0
    03A6 820A      STD	Y+2,R0
(0300) 							locate(2,7);		   //显示“时间调整”
    03A7 E027      LDI	R18,7
    03A8 E002      LDI	R16,2
    03A9 DD6F      RCALL	_locate
(0301) 							switch(set_time)
    03AA 2EC6      MOV	R12,R22
    03AB 24DD      CLR	R13
    03AC 01C6      MOVW	R24,R12
    03AD 3081      CPI	R24,1
    03AE E0E0      LDI	R30,0
    03AF 079E      CPC	R25,R30
    03B0 F0C9      BEQ	0x03CA
    03B1 3082      CPI	R24,2
    03B2 E0E0      LDI	R30,0
    03B3 079E      CPC	R25,R30
    03B4 F161      BEQ	0x03E1
    03B5 3083      CPI	R24,3
    03B6 E0E0      LDI	R30,0
    03B7 079E      CPC	R25,R30
    03B8 F409      BNE	0x03BA
    03B9 C03E      RJMP	0x03F8
    03BA 3084      CPI	R24,4
    03BB E0E0      LDI	R30,0
    03BC 079E      CPC	R25,R30
    03BD F409      BNE	0x03BF
    03BE C050      RJMP	0x040F
    03BF 3085      CPI	R24,5
    03C0 E0E0      LDI	R30,0
    03C1 079E      CPC	R25,R30
    03C2 F409      BNE	0x03C4
    03C3 C063      RJMP	0x0427
    03C4 3086      CPI	R24,6
    03C5 E0E0      LDI	R30,0
    03C6 079E      CPC	R25,R30
    03C7 F409      BNE	0x03C9
    03C8 C075      RJMP	0x043E
    03C9 C083      RJMP	0x044D
(0302) 							    {
(0303) 								case 1:
(0304) 								    timer[6]-=0x01;
    03CA 918000A7  LDS	R24,0xA7
    03CC 5081      SUBI	R24,1
    03CD 938000A7  STS	0xA7,R24
(0305) 									if((timer[6]&0x0F)==0x0F)timer[6]&=0xF9;
    03CF 708F      ANDI	R24,0xF
    03D0 308F      CPI	R24,0xF
    03D1 F429      BNE	0x03D7
    03D2 918000A7  LDS	R24,0xA7
    03D4 7F89      ANDI	R24,0xF9
    03D5 938000A7  STS	0xA7,R24
(0306) 									if(timer[6]>0x99)timer[6]=0x99;
    03D7 E989      LDI	R24,0x99
    03D8 902000A7  LDS	R2,0xA7
    03DA 1582      CP	R24,R2
    03DB F410      BCC	0x03DE
    03DC 938000A7  STS	0xA7,R24
(0307) 									set_xs1(6);		 //显示年
    03DE E006      LDI	R16,6
    03DF DED1      RCALL	_set_xs1
(0308) 									break;
    03E0 C137      RJMP	0x0518
(0309) 								case 2:
(0310) 								    timer[5]-=0x01;
    03E1 918000A6  LDS	R24,0xA6
    03E3 5081      SUBI	R24,1
    03E4 938000A6  STS	0xA6,R24
(0311) 									if((timer[5]&0x0F)==0x0F)timer[5]&=0xF9;
    03E6 708F      ANDI	R24,0xF
    03E7 308F      CPI	R24,0xF
    03E8 F429      BNE	0x03EE
    03E9 918000A6  LDS	R24,0xA6
    03EB 7F89      ANDI	R24,0xF9
    03EC 938000A6  STS	0xA6,R24
(0312) 									if(timer[5]==0x00)timer[5]=0x12;
    03EE 902000A6  LDS	R2,0xA6
    03F0 2022      TST	R2
    03F1 F419      BNE	0x03F5
    03F2 E182      LDI	R24,0x12
    03F3 938000A6  STS	0xA6,R24
(0313) 									set_xs1(5);		 //显示月
    03F5 E005      LDI	R16,5
    03F6 DEBA      RCALL	_set_xs1
(0314) 									break;
    03F7 C120      RJMP	0x0518
(0315) 								case 3:
(0316) 								    timer[3]-=0x01;
    03F8 918000A4  LDS	R24,timer+3
    03FA 5081      SUBI	R24,1
    03FB 938000A4  STS	timer+3,R24
(0317) 									if((timer[3]&0x0F)==0x0F)timer[3]&=0xF9;
    03FD 708F      ANDI	R24,0xF
    03FE 308F      CPI	R24,0xF
    03FF F429      BNE	0x0405
    0400 918000A4  LDS	R24,timer+3
    0402 7F89      ANDI	R24,0xF9
    0403 938000A4  STS	timer+3,R24
(0318) 									if(timer[3]==0x00)timer[3]=0x30;
    0405 902000A4  LDS	R2,timer+3
    0407 2022      TST	R2
    0408 F419      BNE	0x040C
    0409 E380      LDI	R24,0x30
    040A 938000A4  STS	timer+3,R24
(0319) 									set_xs1(3);		 //显示日
    040C E003      LDI	R16,3
    040D DEA3      RCALL	_set_xs1
(0320) 									break;
    040E C109      RJMP	0x0518
(0321) 								case 4:
(0322) 								    timer[2]-=0x01;

⌨️ 快捷键说明

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