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

📄 ac15-2.lst

📁 AVR学习资料
💻 LST
📖 第 1 页 / 共 3 页
字号:
(0295) 		   DisplayOneChar(10,0,(time1.min%10)+0x30);
    02AF E01A      LDI	R17,0xA
    02B0 91000067  LDS	R16,time1+1
    02B2 940E0423  CALL	mod8u
    02B4 2F80      MOV	R24,R16
    02B5 5D80      SUBI	R24,0xD0
    02B6 8388      STD	Y+0,R24
    02B7 2722      CLR	R18
    02B8 E00A      LDI	R16,0xA
    02B9 DDE1      RCALL	_DisplayOneChar
(0296) 		   Delay_nms(10); 
    02BA E00A      LDI	R16,0xA
    02BB E010      LDI	R17,0
    02BC DE4C      RCALL	_Delay_nms
(0297) 		   DisplayOneChar(12,0,(time1.sec/10)+0x30);
    02BD E01A      LDI	R17,0xA
    02BE 91000068  LDS	R16,time1+2
    02C0 940E0425  CALL	div8u
    02C2 2F80      MOV	R24,R16
    02C3 5D80      SUBI	R24,0xD0
    02C4 8388      STD	Y+0,R24
    02C5 2722      CLR	R18
    02C6 E00C      LDI	R16,0xC
    02C7 DDD3      RCALL	_DisplayOneChar
(0298) 		   Delay_nms(10); 
    02C8 E00A      LDI	R16,0xA
    02C9 E010      LDI	R17,0
    02CA DE3E      RCALL	_Delay_nms
(0299) 		   DisplayOneChar(13,0,(time1.sec%10)+0x30);
    02CB E01A      LDI	R17,0xA
    02CC 91000068  LDS	R16,time1+2
    02CE 940E0423  CALL	mod8u
    02D0 2F80      MOV	R24,R16
    02D1 5D80      SUBI	R24,0xD0
    02D2 8388      STD	Y+0,R24
    02D3 2722      CLR	R18
    02D4 E00D      LDI	R16,0xD
    02D5 DDC5      RCALL	_DisplayOneChar
(0300) 		   Delay_nms(10); 
    02D6 E00A      LDI	R16,0xA
    02D7 E010      LDI	R17,0
    02D8 DE30      RCALL	_Delay_nms
(0301) 		   
(0302) 	   	   DisplayOneChar(7,1,(time2.hour/10)+0x30);
    02D9 E01A      LDI	R17,0xA
    02DA 91000062  LDS	R16,time2
    02DC 940E0425  CALL	div8u
    02DE 2F80      MOV	R24,R16
    02DF 5D80      SUBI	R24,0xD0
    02E0 8388      STD	Y+0,R24
    02E1 E021      LDI	R18,1
    02E2 E007      LDI	R16,7
    02E3 DDB7      RCALL	_DisplayOneChar
(0303) 		   Delay_nms(10); 
    02E4 E00A      LDI	R16,0xA
    02E5 E010      LDI	R17,0
    02E6 DE22      RCALL	_Delay_nms
(0304) 		   DisplayOneChar(8,1,(time2.hour%10)+0x30);
    02E7 E01A      LDI	R17,0xA
    02E8 91000062  LDS	R16,time2
    02EA 940E0423  CALL	mod8u
    02EC 2F80      MOV	R24,R16
    02ED 5D80      SUBI	R24,0xD0
    02EE 8388      STD	Y+0,R24
    02EF E021      LDI	R18,1
    02F0 E008      LDI	R16,0x8
    02F1 DDA9      RCALL	_DisplayOneChar
(0305) 		   Delay_nms(10); 
    02F2 E00A      LDI	R16,0xA
    02F3 E010      LDI	R17,0
    02F4 DE14      RCALL	_Delay_nms
(0306) 		   DisplayOneChar(10,1,(time2.min/10)+0x30);
    02F5 E01A      LDI	R17,0xA
    02F6 91000063  LDS	R16,time2+1
    02F8 940E0425  CALL	div8u
    02FA 2F80      MOV	R24,R16
    02FB 5D80      SUBI	R24,0xD0
    02FC 8388      STD	Y+0,R24
    02FD E021      LDI	R18,1
    02FE E00A      LDI	R16,0xA
    02FF DD9B      RCALL	_DisplayOneChar
(0307) 		   Delay_nms(10); 
    0300 E00A      LDI	R16,0xA
    0301 E010      LDI	R17,0
    0302 DE06      RCALL	_Delay_nms
(0308)     	   DisplayOneChar(11,1,(time2.min%10)+0x30);
    0303 E01A      LDI	R17,0xA
    0304 91000063  LDS	R16,time2+1
    0306 940E0423  CALL	mod8u
    0308 2F80      MOV	R24,R16
    0309 5D80      SUBI	R24,0xD0
    030A 8388      STD	Y+0,R24
    030B E021      LDI	R18,1
    030C E00B      LDI	R16,0xB
    030D DD8D      RCALL	_DisplayOneChar
(0309) 		   Delay_nms(10); 
    030E E00A      LDI	R16,0xA
    030F E010      LDI	R17,0
    0310 DDF8      RCALL	_Delay_nms
(0310) 
(0311) 		   key_val=scan_key();	
    0311 DE13      RCALL	_scan_key
    0312 2F60      MOV	R22,R16
(0312) 
(0313) 		   switch(key_val)		
    0313 2F46      MOV	R20,R22
    0314 2755      CLR	R21
    0315 3D4F      CPI	R20,0xDF
    0316 E0E0      LDI	R30,0
    0317 075E      CPC	R21,R30
    0318 F409      BNE	0x031A
    0319 C041      RJMP	0x035B
    031A ED8F      LDI	R24,0xDF
    031B E090      LDI	R25,0
    031C 1784      CP	R24,R20
    031D 0795      CPC	R25,R21
    031E F084      BLT	0x032F
    031F 374F      CPI	R20,0x7F
    0320 E0E0      LDI	R30,0
    0321 075E      CPC	R21,R30
    0322 F409      BNE	0x0324
    0323 C05D      RJMP	0x0381
    0324 374F      CPI	R20,0x7F
    0325 E0E0      LDI	R30,0
    0326 075E      CPC	R21,R30
    0327 F40C      BGE	0x0329
    0328 C093      RJMP	0x03BC
    0329 3B4F      CPI	R20,0xBF
    032A E0E0      LDI	R30,0
    032B 075E      CPC	R21,R30
    032C F409      BNE	0x032E
    032D C03C      RJMP	0x036A
    032E C08D      RJMP	0x03BC
    032F 3F47      CPI	R20,0xF7
    0330 E0E0      LDI	R30,0
    0331 075E      CPC	R21,R30
    0332 F409      BNE	0x0334
    0333 C072      RJMP	0x03A6
    0334 EF87      LDI	R24,0xF7
    0335 E090      LDI	R25,0
    0336 1784      CP	R24,R20
    0337 0795      CPC	R25,R21
    0338 F02C      BLT	0x033E
    0339 3E4F      CPI	R20,0xEF
    033A E0E0      LDI	R30,0
    033B 075E      CPC	R21,R30
    033C F039      BEQ	0x0344
    033D C07E      RJMP	0x03BC
    033E 3F4B      CPI	R20,0xFB
    033F E0E0      LDI	R30,0
    0340 075E      CPC	R21,R30
    0341 F409      BNE	0x0343
    0342 C04C      RJMP	0x038F
    0343 C078      RJMP	0x03BC
(0314) 	   	   {				
(0315) 	   	   	case 0xef:time1.min++;
    0344 91800067  LDS	R24,time1+1
    0346 5F8F      SUBI	R24,0xFF
    0347 93800067  STS	time1+1,R24
(0316) 			          if(time1.min>59){time1.min=0;
    0349 E38B      LDI	R24,0x3B
    034A 90200067  LDS	R2,time1+1
    034C 1582      CP	R24,R2
    034D F008      BCS	0x034F
    034E C06D      RJMP	0x03BC
    034F 2422      CLR	R2
    0350 92200067  STS	time1+1,R2
(0317) 					                  if(time1.hour<23)time1.hour++;
    0352 91800066  LDS	R24,time1
    0354 3187      CPI	R24,0x17
    0355 F008      BCS	0x0357
    0356 C065      RJMP	0x03BC
    0357 5F8F      SUBI	R24,0xFF
    0358 93800066  STS	time1,R24
(0318) 								      }break;  
    035A C061      RJMP	0x03BC
(0319) 	   		case 0xdf:time1.hour++;if(time1.hour>23)time1.hour=0;break;														//加法调整"时"
    035B 91800066  LDS	R24,time1
    035D 5F8F      SUBI	R24,0xFF
    035E 93800066  STS	time1,R24
    0360 E187      LDI	R24,0x17
    0361 90200066  LDS	R2,time1
    0363 1582      CP	R24,R2
    0364 F008      BCS	0x0366
    0365 C056      RJMP	0x03BC
    0366 2422      CLR	R2
    0367 92200066  STS	time1,R2
    0369 C052      RJMP	0x03BC
(0320) 	   		case 0xbf:time2.min++;
    036A 91800063  LDS	R24,time2+1
    036C 5F8F      SUBI	R24,0xFF
    036D 93800063  STS	time2+1,R24
(0321) 			          if(time2.min>59){time2.min=0;
    036F E38B      LDI	R24,0x3B
    0370 90200063  LDS	R2,time2+1
    0372 1582      CP	R24,R2
    0373 F008      BCS	0x0375
    0374 C047      RJMP	0x03BC
    0375 2422      CLR	R2
    0376 92200063  STS	time2+1,R2
(0322) 					                  if(time2.hour<23)time2.hour++;
    0378 91800062  LDS	R24,time2
    037A 3187      CPI	R24,0x17
    037B F008      BCS	0x037D
    037C C03F      RJMP	0x03BC
    037D 5F8F      SUBI	R24,0xFF
    037E 93800062  STS	time2,R24
(0323) 								      }break; 
    0380 C03B      RJMP	0x03BC
(0324) 	   		case 0x7f:time2.hour++;if(time2.hour>23)time2.hour=0;break;	
    0381 91800062  LDS	R24,time2
    0383 5F8F      SUBI	R24,0xFF
    0384 93800062  STS	time2,R24
    0386 E187      LDI	R24,0x17
    0387 90200062  LDS	R2,time2
    0389 1582      CP	R24,R2
    038A F588      BCC	0x03BC
    038B 2422      CLR	R2
    038C 92200062  STS	time2,R2
    038E C02D      RJMP	0x03BC
(0325) 											
(0326) 			//*************************
(0327) 			case 0xfb:wr_24c01(11,time2.hour);
    038F 91200062  LDS	R18,time2
    0391 E00B      LDI	R16,0xB
    0392 DE8D      RCALL	_wr_24c01
(0328) 				 Delay_nms(10); 
    0393 E00A      LDI	R16,0xA
    0394 E010      LDI	R17,0
    0395 DD73      RCALL	_Delay_nms
(0329) 				 wr_24c01(12,time2.min); 
    0396 91200063  LDS	R18,time2+1
    0398 E00C      LDI	R16,0xC
    0399 DE86      RCALL	_wr_24c01
(0330) 				 Delay_nms(10); 
    039A E00A      LDI	R16,0xA
    039B E010      LDI	R17,0
    039C DD6C      RCALL	_Delay_nms
(0331) 				 DisplayOneChar(13,1,0x57); 
    039D E587      LDI	R24,0x57
    039E 8388      STD	Y+0,R24
    039F E021      LDI	R18,1
    03A0 E00D      LDI	R16,0xD
    03A1 DCF9      RCALL	_DisplayOneChar
(0332) 				 Delay_nms(10);break; 
    03A2 E00A      LDI	R16,0xA
    03A3 E010      LDI	R17,0
    03A4 DD64      RCALL	_Delay_nms
    03A5 C016      RJMP	0x03BC
(0333) 	   		case 0xf7:time2.hour=rd_24c01(11); 
    03A6 E00B      LDI	R16,0xB
    03A7 DE1B      RCALL	_rd_24c01
    03A8 93000062  STS	time2,R16
(0334) 				 Delay_nms(10); 
    03AA E00A      LDI	R16,0xA
    03AB E010      LDI	R17,0
    03AC DD5C      RCALL	_Delay_nms
(0335) 				 time2.min=rd_24c01(12); 
    03AD E00C      LDI	R16,0xC
    03AE DE14      RCALL	_rd_24c01
    03AF 93000063  STS	time2+1,R16
(0336) 				 Delay_nms(10); 
    03B1 E00A      LDI	R16,0xA
    03B2 E010      LDI	R17,0
    03B3 DD55      RCALL	_Delay_nms
(0337) 				 DisplayOneChar(13,1,0x52); 
    03B4 E582      LDI	R24,0x52
    03B5 8388      STD	Y+0,R24
    03B6 E021      LDI	R18,1
    03B7 E00D      LDI	R16,0xD
    03B8 DCE2      RCALL	_DisplayOneChar
(0338) 				 Delay_nms(10);break;	 
    03B9 E00A      LDI	R16,0xA
    03BA E010      LDI	R17,0
    03BB DD4D      RCALL	_Delay_nms
(0339) 	   		default:break;		
(0340) 	   		}				
(0341) 			Delay_nms(300);
    03BC E20C      LDI	R16,0x2C
    03BD E011      LDI	R17,1
    03BE DD4A      RCALL	_Delay_nms
(0342) 			DisplayOneChar(13,1,0x20); 
    03BF E280      LDI	R24,0x20
    03C0 8388      STD	Y+0,R24
    03C1 E021      LDI	R18,1
    03C2 E00D      LDI	R16,0xD
    03C3 DCD7      RCALL	_DisplayOneChar
(0343) 			Delay_nms(10); 
    03C4 E00A      LDI	R16,0xA
    03C5 E010      LDI	R17,0
    03C6 DD42      RCALL	_Delay_nms
    03C7 CEBD      RJMP	0x0285
    03C8 9622      ADIW	R28,2
    03C9 9508      RET
_timer1_ovf_isr:
    03CA 922A      ST	R2,-Y
    03CB 923A      ST	R3,-Y
    03CC 938A      ST	R24,-Y
    03CD 939A      ST	R25,-Y
    03CE B62F      IN	R2,0x3F
    03CF 922A      ST	R2,-Y
(0344) 						
(0345)   		 }				
(0346) }		   
(0347) /*********************定时器T1中断子函数************************/
(0348) #pragma interrupt_handler timer1_ovf_isr:9
(0349) void timer1_ovf_isr(void)
(0350) {
(0351)  //TIMER1 has overflowed
(0352)  TCNT1H = 0xF3; //reload counter high value
    03D0 EF83      LDI	R24,0xF3
    03D1 BD8D      OUT	0x2D,R24
(0353)  TCNT1L = 0xCB; //reload counter low value
    03D2 EC8B      LDI	R24,0xCB
    03D3 BD8C      OUT	0x2C,R24
(0354)  if(++time1.dida>=10){time1.dida=0;time1.sec++;}//计时
    03D4 91800069  LDS	R24,time1+3
    03D6 5F8F      SUBI	R24,0xFF
    03D7 2E28      MOV	R2,R24
    03D8 92200069  STS	time1+3,R2
    03DA 308A      CPI	R24,0xA
    03DB F040      BCS	0x03E4
    03DC 2422      CLR	R2
    03DD 92200069  STS	time1+3,R2
    03DF 91800068  LDS	R24,time1+2
    03E1 5F8F      SUBI	R24,0xFF
    03E2 93800068  STS	time1+2,R24
(0355)  if(time1.sec>=60){time1.sec=0;time1.min++;}
    03E4 91800068  LDS	R24,time1+2
    03E6 338C      CPI	R24,0x3C
    03E7 F040      BCS	0x03F0
    03E8 2422      CLR	R2
    03E9 92200068  STS	time1+2,R2
    03EB 91800067  LDS	R24,time1+1
    03ED 5F8F      SUBI	R24,0xFF
    03EE 93800067  STS	time1+1,R24
(0356)  if(time1.min>=60){time1.min=0;time1.hour++;}
    03F0 91800067  LDS	R24,time1+1
    03F2 338C      CPI	R24,0x3C
    03F3 F040      BCS	0x03FC
    03F4 2422      CLR	R2
    03F5 92200067  STS	time1+1,R2
    03F7 91800066  LDS	R24,time1
    03F9 5F8F      SUBI	R24,0xFF
    03FA 93800066  STS	time1,R24
(0357)  if(time1.hour>=24){time1.hour=0;}
    03FC 91800066  LDS	R24,time1
    03FE 3188      CPI	R24,0x18
    03FF F018      BCS	0x0403
    0400 2422      CLR	R2
    0401 92200066  STS	time1,R2
(0358)  //-------------------
(0359)  if((time1.hour==time2.hour)&&(time1.min==time2.min))LED_0;
    0403 90200062  LDS	R2,time2
    0405 90300066  LDS	R3,time1
    0407 1432      CP	R3,R2
    0408 F441      BNE	0x0411
    0409 90200063  LDS	R2,time2+1
    040B 90300067  LDS	R3,time1+1
    040D 1432      CP	R3,R2
    040E F411      BNE	0x0411
    040F 98C7      CBI	0x18,7
    0410 C001      RJMP	0x0412
(0360)  else LED_1;
    0411 9AC7      SBI	0x18,7
    0412 9029      LD	R2,Y+
    0413 BE2F      OUT	0x3F,R2
    0414 9199      LD	R25,Y+
    0415 9189      LD	R24,Y+
    0416 9039      LD	R3,Y+
    0417 9029      LD	R2,Y+
    0418 9518      RETI
(0361) }
(0362) /**********************器件初始化***********************/
(0363) void init_devices(void)
(0364) {
(0365)  //stop errant interrupts until set up
(0366)  CLI(); //disable all interrupts
_init_devices:
    0419 94F8      BCLR	7
(0367)  port_init();
    041A DCFD      RCALL	_port_init
(0368)  timer1_init();
    041B DE41      RCALL	_timer1_init
(0369)  MCUCR = 0x00;
    041C 2422      CLR	R2
    041D BE25      OUT	0x35,R2
(0370)  GICR  = 0x00;
    041E BE2B      OUT	0x3B,R2
(0371)  TIMSK = 0x04; //timer interrupt sources
    041F E084      LDI	R24,4
    0420 BF89      OUT	0x39,R24
(0372)  SEI(); //re-enable interrupts
FILE: <library>
    0421 9478      BSET	7
    0422 9508      RET
mod8u:
    0423 9468      BSET	6
    0424 C001      RJMP	xdiv8u
div8u:
    0425 94E8      BCLR	6
xdiv8u:
    0426 932A      ST	R18,-Y
    0427 92FA      ST	R15,-Y
    0428 92EA      ST	R14,-Y
    0429 24FF      CLR	R15
    042A 24EE      CLR	R14
    042B E120      LDI	R18,0x10
    042C 0F00      LSL	R16
    042D 1CFF      ROL	R15
    042E 1CEE      ROL	R14
    042F 16E1      CP	R14,R17
    0430 F010      BCS	0x0433
    0431 1AE1      SUB	R14,R17
    0432 9503      INC	R16
    0433 952A      DEC	R18
    0434 F7B9      BNE	0x042C
    0435 F40E      BRTC	0x0437
    0436 2D0E      MOV	R16,R14
    0437 90E9      LD	R14,Y+
    0438 90F9      LD	R15,Y+
    0439 9129      LD	R18,Y+
    043A 9508      RET
pop_gset2:
    043B E0E2      LDI	R30,2
    043C 940C0450  JMP	pop
pop_gset3:
    043E E0E4      LDI	R30,4
    043F 940C0450  JMP	pop
pop_gset5:
    0441 27EE      CLR	R30
    0442 940C0450  JMP	pop
push_gset5:
    0444 92FA      ST	R15,-Y
    0445 92EA      ST	R14,-Y
push_gset4:
    0446 92DA      ST	R13,-Y
    0447 92CA      ST	R12,-Y
push_gset3:
    0448 92BA      ST	R11,-Y
    0449 92AA      ST	R10,-Y
push_gset2:
    044A 937A      ST	R23,-Y
    044B 936A      ST	R22,-Y
push_gset1:
    044C 935A      ST	R21,-Y
    044D 934A      ST	R20,-Y
    044E 9508      RET
pop_gset1:
    044F E0E1      LDI	R30,1
pop:
    0450 9149      LD	R20,Y+
    0451 9159      LD	R21,Y+
    0452 FDE0      SBRC	R30,0
    0453 9508      RET
    0454 9169      LD	R22,Y+
    0455 9179      LD	R23,Y+
    0456 FDE1      SBRC	R30,1
    0457 9508      RET
    0458 90A9      LD	R10,Y+
    0459 90B9      LD	R11,Y+
    045A FDE2      SBRC	R30,2
    045B 9508      RET
    045C 90C9      LD	R12,Y+
    045D 90D9      LD	R13,Y+
    045E FDE3      SBRC	R30,3
    045F 9508      RET
    0460 90E9      LD	R14,Y+
    0461 90F9      LD	R15,Y+
    0462 9508      RET

⌨️ 快捷键说明

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