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

📄 ps2simplesoft.lst

📁 ATmega16应用例子
💻 LST
📖 第 1 页 / 共 4 页
字号:
    02C8 C00C      RJMP	0x02D5
(0123) 		{
(0124) 			case 0xF0 :			// a relase action
(0125) 				isUp = 1;
    02C9 E081      LDI	R24,1
    02CA 93800062  STS	0x62,R24
(0126) 				break;
    02CC C05B      RJMP	0x0328
(0127) 			case 0x12 :			// Left shift
(0128) 				shift = 1;
    02CD E081      LDI	R24,1
    02CE 93800063  STS	0x63,R24
(0129) 				break;
    02D0 C057      RJMP	0x0328
(0130) 			case 0x59 :			// Right shift
(0131) 				shift = 1;
    02D1 E081      LDI	R24,1
    02D2 93800063  STS	0x63,R24
(0132) 				break;
    02D4 C053      RJMP	0x0328
(0133) 			default:
(0134) 				if(!shift)		// If shift not pressed
    02D5 90200063  LDS	R2,0x63
    02D7 2022      TST	R2
    02D8 F4D9      BNE	0x02F4
(0135) 				{ 
(0136) /*
(0137) 					for(i=0; unshifted[i][0]!=val && unshifted[i][0]; i++)
(0138) 						;
(0139) 					上述写法较为灵活,但KEIL非UNIXC标准,不能采用该写法
(0140) */
(0141) 					for(i=0; unshifted[i][0]!=val && i<59; i++)
    02D9 2744      CLR	R20
    02DA C001      RJMP	0x02DC
    02DB 9543      INC	R20
    02DC E082      LDI	R24,2
    02DD 9F84      MUL	R24,R20
    02DE 01F0      MOVW	R30,R0
    02DF E584      LDI	R24,0x54
    02E0 E090      LDI	R25,0
    02E1 0FE8      ADD	R30,R24
    02E2 1FF9      ADC	R31,R25
    02E3 91E4      LPM	R30,0(Z)
    02E4 17E0      CP	R30,R16
    02E5 F011      BEQ	0x02E8
    02E6 334B      CPI	R20,0x3B
    02E7 F398      BCS	0x02DB
(0142) 						;
(0143) 					if(unshifted[i][0] == val) 
    02E8 E082      LDI	R24,2
    02E9 9F84      MUL	R24,R20
    02EA 01F0      MOVW	R30,R0
    02EB E584      LDI	R24,0x54
    02EC E090      LDI	R25,0
    02ED 0FE8      ADD	R30,R24
    02EE 1FF9      ADC	R31,R25
    02EF 91E4      LPM	R30,0(Z)
    02F0 17E0      CP	R30,R16
    02F1 F009      BEQ	0x02F3
    02F2 C035      RJMP	0x0328
(0144) 						;		//状态指示
(0145) 					
(0146) 				} 
    02F3 C034      RJMP	0x0328
(0147) 				else			// If shift pressed
(0148) 				{			
(0149) /*
(0150) 					for(i=0; unshifted[i][0]!=val && unshifted[i][0]; i++)
(0151) 						;
(0152) 					上述写法较为灵活,但KEIL非UNIXC标准,不能采用该写法
(0153) */
(0154) 					for(i=0; shifted[i][0]!=val && i<59; i++)
    02F4 2744      CLR	R20
    02F5 C001      RJMP	0x02F7
    02F6 9543      INC	R20
    02F7 E082      LDI	R24,2
    02F8 9F84      MUL	R24,R20
    02F9 01F0      MOVW	R30,R0
    02FA EC8A      LDI	R24,0xCA
    02FB E090      LDI	R25,0
    02FC 0FE8      ADD	R30,R24
    02FD 1FF9      ADC	R31,R25
    02FE 91E4      LPM	R30,0(Z)
    02FF 17E0      CP	R30,R16
    0300 F011      BEQ	0x0303
    0301 334B      CPI	R20,0x3B
    0302 F398      BCS	0x02F6
(0155) 						;
(0156) 					if(shifted[i][0] == val) 
    0303 E082      LDI	R24,2
    0304 9F84      MUL	R24,R20
    0305 01F0      MOVW	R30,R0
    0306 EC8A      LDI	R24,0xCA
    0307 E090      LDI	R25,0
    0308 0FE8      ADD	R30,R24
    0309 1FF9      ADC	R31,R25
    030A 91E4      LPM	R30,0(Z)
    030B 17E0      CP	R30,R16
    030C F4D9      BNE	0x0328
(0157) 						SHIFT_DATA_PORT = val;//状态指示
    030D BB02      OUT	0x12,R16
(0158) 				}
(0159) 		}
(0160) 	}
    030E C019      RJMP	0x0328
(0161) 	else 
(0162) 	{
(0163) 		isUp=0;					
    030F 2422      CLR	R2
    0310 92200062  STS	0x62,R2
(0164) 		switch(val)
    0312 2F40      MOV	R20,R16
    0313 2755      CLR	R21
    0314 3142      CPI	R20,0x12
    0315 E0E0      LDI	R30,0
    0316 075E      CPC	R21,R30
    0317 F049      BEQ	0x0321
    0318 3142      CPI	R20,0x12
    0319 E0E0      LDI	R30,0
    031A 075E      CPC	R21,R30
    031B F064      BLT	0x0328
    031C 3549      CPI	R20,0x59
    031D E0E0      LDI	R30,0
    031E 075E      CPC	R21,R30
    031F F029      BEQ	0x0325
    0320 C007      RJMP	0x0328
(0165) 		{
(0166) 			case 0x12 :			// Left SHIFT
(0167) 				shift = 0;
    0321 2422      CLR	R2
    0322 92200063  STS	0x63,R2
(0168) 				break;
    0324 C003      RJMP	0x0328
(0169) 			case 0x59 :			// Right SHIFT
(0170) 				shift = 0;
    0325 2422      CLR	R2
    0326 92200063  STS	0x63,R2
(0171) 				break;
(0172) 		}
(0173) 	}
(0174) }  
    0328 940E03E9  CALL	pop_gset1
    032A 9508      RET
(0175) /*--------------------------------------------------------------------
(0176) 函数名称:
(0177) 函数功能:
(0178) 注意事项:
(0179) 提示说明:
(0180) 输    入:
(0181) 返    回:
(0182) --------------------------------------------------------------------*/
(0183) void main(void)
(0184) {
(0185)     PRESS_DATA_DDR = 0XFF;
_main:
    032B EF8F      LDI	R24,0xFF
    032C BB8A      OUT	0x1A,R24
(0186) 	SHIFT_DATA_DDR = 0XFF;
    032D BB81      OUT	0x11,R24
(0187) 	IN_SDA;
    032E 98B8      CBI	0x17,0
    032F C008      RJMP	0x0338
(0188) 	while(1)
(0189) 	{
(0190) 		check();
    0330 DF41      RCALL	_check
(0191) 		if(rcvF)
    0331 90200060  LDS	R2,0x60
    0333 2022      TST	R2
    0334 F019      BEQ	0x0338
(0192) 			keyHandle(keyVal);
    0335 91000064  LDS	R16,_keyVal
    0337 DF71      RCALL	_keyHandle
    0338 CFF7      RJMP	0x0330
(0193) 	}
(0194) }
FILE: <library>
    0339 9508      RET
push_arg4:
    033A 933A      ST	R19,-Y
    033B 932A      ST	R18,-Y
push_arg2:
    033C 931A      ST	R17,-Y
    033D 930A      ST	R16,-Y
    033E 9508      RET
div32u:
    033F 94E8      BCLR	6
    0340 C001      RJMP	0x0342
mod32u:
    0341 9468      BSET	6
    0342 D02F      RCALL	long_div_prolog
    0343 24CC      CLR	R12
    0344 C008      RJMP	0x034D
div32s:
    0345 94E8      BCLR	6
    0346 C001      RJMP	0x0348
mod32s:
    0347 9468      BSET	6
    0348 D029      RCALL	long_div_prolog
    0349 FD37      SBRC	R19,7
    034A D053      RCALL	neg_R16_R19
    034B FDB7      SBRC	R27,7
    034C D05A      RCALL	neg_R24_R27
    034D 2477      CLR	R7
    034E 2488      CLR	R8
    034F 2499      CLR	R9
    0350 24AA      CLR	R10
    0351 24BB      CLR	R11
    0352 D041      RCALL	tst_R16_R19
    0353 F0C1      BEQ	0x036C
    0354 D044      RCALL	tst_R24_R27
    0355 F0B1      BEQ	0x036C
    0356 E2E8      LDI	R30,0x28
    0357 0F00      LSL	R16
    0358 1F11      ROL	R17
    0359 1F22      ROL	R18
    035A 1F33      ROL	R19
    035B 1C77      ROL	R7
    035C 1C88      ROL	R8
    035D 1C99      ROL	R9
    035E 1CAA      ROL	R10
    035F 1CBB      ROL	R11
    0360 1688      CP	R8,R24
    0361 0699      CPC	R9,R25
    0362 06AA      CPC	R10,R26
    0363 06BB      CPC	R11,R27
    0364 F028      BCS	0x036A
    0365 1A88      SUB	R8,R24
    0366 0A99      SBC	R9,R25
    0367 0AAA      SBC	R10,R26
    0368 0ABB      SBC	R11,R27
    0369 9503      INC	R16
    036A 95EA      DEC	R30
    036B F759      BNE	0x0357
    036C F426      BRTC	0x0371
    036D 2D08      MOV	R16,R8
    036E 2D19      MOV	R17,R9
    036F 2D2A      MOV	R18,R10
    0370 2D3B      MOV	R19,R11
    0371 C013      RJMP	long_div_epilog
long_div_prolog:
    0372 927A      ST	R7,-Y
    0373 928A      ST	R8,-Y
    0374 929A      ST	R9,-Y
    0375 92AA      ST	R10,-Y
    0376 92BA      ST	R11,-Y
    0377 92CA      ST	R12,-Y
    0378 93EA      ST	R30,-Y
    0379 938A      ST	R24,-Y
    037A 939A      ST	R25,-Y
    037B 93AA      ST	R26,-Y
    037C 93BA      ST	R27,-Y
    037D 858B      LDD	R24,Y+11
    037E 859C      LDD	R25,Y+12
    037F 85AD      LDD	R26,Y+13
    0380 85BE      LDD	R27,Y+14
    0381 2EC3      MOV	R12,R19
    0382 F00E      BRTS	0x0384
    0383 26CB      EOR	R12,R27
    0384 9508      RET
long_div_epilog:
    0385 FCC7      SBRC	R12,7
    0386 D017      RCALL	neg_R16_R19
    0387 91B9      LD	R27,Y+
    0388 91A9      LD	R26,Y+
    0389 9199      LD	R25,Y+
    038A 9189      LD	R24,Y+
    038B 91E9      LD	R30,Y+
    038C 90C9      LD	R12,Y+
    038D 90B9      LD	R11,Y+
    038E 90A9      LD	R10,Y+
    038F 9099      LD	R9,Y+
    0390 9089      LD	R8,Y+
    0391 9079      LD	R7,Y+
    0392 9624      ADIW	R28,4
    0393 9508      RET
tst_R16_R19:
    0394 2FE0      MOV	R30,R16
    0395 2BE1      OR	R30,R17
    0396 2BE2      OR	R30,R18
    0397 2BE3      OR	R30,R19
    0398 9508      RET
tst_R24_R27:
    0399 2FE8      MOV	R30,R24
    039A 2BE9      OR	R30,R25
    039B 2BEA      OR	R30,R26
    039C 2BEB      OR	R30,R27
    039D 9508      RET
neg_R16_R19:
    039E 9500      COM	R16
    039F 9510      COM	R17
    03A0 9520      COM	R18
    03A1 9530      COM	R19
    03A2 5F0F      SUBI	R16,0xFF
    03A3 4F1F      SBCI	R17,0xFF
    03A4 4F2F      SBCI	R18,0xFF
    03A5 4F3F      SBCI	R19,0xFF
    03A6 9508      RET
neg_R24_R27:
    03A7 9580      COM	R24
    03A8 9590      COM	R25
    03A9 95A0      COM	R26
    03AA 95B0      COM	R27
    03AB 5F8F      SUBI	R24,0xFF
    03AC 4F9F      SBCI	R25,0xFF
    03AD 4FAF      SBCI	R26,0xFF
    03AE 4FBF      SBCI	R27,0xFF
    03AF 9508      RET
empy32s:
empy32u:
    03B0 940E0409  CALL	long_prolog
    03B2 927F      PUSH	R7
    03B3 940E0422  CALL	tstzero1
    03B5 F139      BEQ	0x03DD
    03B6 2477      CLR	R7
    03B7 940E0428  CALL	tstzero2
    03B9 F419      BNE	0x03BD
    03BA 018C      MOVW	R16,R24
    03BB 019D      MOVW	R18,R26
    03BC C020      RJMP	0x03DD
    03BD 9F08      MUL	R16,R24
    03BE 2CB0      MOV	R11,R0
    03BF 2CA1      MOV	R10,R1
    03C0 9F28      MUL	R18,R24
    03C1 2C90      MOV	R9,R0
    03C2 2C81      MOV	R8,R1
    03C3 9F18      MUL	R17,R24
    03C4 0CA0      ADD	R10,R0
    03C5 1C91      ADC	R9,R1
    03C6 1C87      ADC	R8,R7
    03C7 9F09      MUL	R16,R25
    03C8 0CA0      ADD	R10,R0
    03C9 1C91      ADC	R9,R1
    03CA 1C87      ADC	R8,R7
    03CB 9F19      MUL	R17,R25
    03CC 0C90      ADD	R9,R0
    03CD 1C81      ADC	R8,R1
    03CE 9F0A      MUL	R16,R26
    03CF 0C90      ADD	R9,R0
    03D0 1C81      ADC	R8,R1
    03D1 9F38      MUL	R19,R24
    03D2 0C80      ADD	R8,R0
    03D3 9F29      MUL	R18,R25
    03D4 0C80      ADD	R8,R0
    03D5 9F1A      MUL	R17,R26
    03D6 0C80      ADD	R8,R0
    03D7 9F0B      MUL	R16,R27
    03D8 0C80      ADD	R8,R0
    03D9 2D0B      MOV	R16,R11
    03DA 2D1A      MOV	R17,R10
    03DB 2D29      MOV	R18,R9
    03DC 2D38      MOV	R19,R8
    03DD 907F      POP	R7
    03DE 940C0417  JMP	long_epilog
pop_gset2:
    03E0 E0E2      LDI	R30,2
    03E1 940C03EA  JMP	pop
pop_gset4:
    03E3 E0E8      LDI	R30,0x8
    03E4 940C03EA  JMP	pop
push_gset1:
    03E6 935A      ST	R21,-Y
    03E7 934A      ST	R20,-Y
    03E8 9508      RET
pop_gset1:
    03E9 E0E1      LDI	R30,1
pop:
    03EA 9149      LD	R20,Y+
    03EB 9159      LD	R21,Y+
    03EC FDE0      SBRC	R30,0
    03ED 9508      RET
    03EE 9169      LD	R22,Y+
    03EF 9179      LD	R23,Y+
    03F0 FDE1      SBRC	R30,1
    03F1 9508      RET
    03F2 90A9      LD	R10,Y+
    03F3 90B9      LD	R11,Y+
    03F4 FDE2      SBRC	R30,2
    03F5 9508      RET
    03F6 90C9      LD	R12,Y+
    03F7 90D9      LD	R13,Y+
    03F8 FDE3      SBRC	R30,3
    03F9 9508      RET
    03FA 90E9      LD	R14,Y+
    03FB 90F9      LD	R15,Y+
    03FC 9508      RET
push_gset2:
    03FD 937A      ST	R23,-Y
    03FE 936A      ST	R22,-Y
    03FF 940C03E6  JMP	push_gset1
push_gset3:
    0401 92BA      ST	R11,-Y
    0402 92AA      ST	R10,-Y
    0403 940C03FD  JMP	push_gset2
push_gset4:
    0405 92DA      ST	R13,-Y
    0406 92CA      ST	R12,-Y
    0407 940C0401  JMP	push_gset3
long_prolog:
    0409 928A      ST	R8,-Y
    040A 929A      ST	R9,-Y
    040B 92AA      ST	R10,-Y
    040C 92BA      ST	R11,-Y
    040D 93EA      ST	R30,-Y
    040E 938A      ST	R24,-Y
    040F 939A      ST	R25,-Y
    0410 93AA      ST	R26,-Y
    0411 93BA      ST	R27,-Y
    0412 8589      LDD	R24,Y+9
    0413 859A      LDD	R25,Y+10
    0414 85AB      LDD	R26,Y+11
    0415 85BC      LDD	R27,Y+12
    0416 9508      RET
long_epilog:
    0417 91B9      LD	R27,Y+
    0418 91A9      LD	R26,Y+
    0419 9199      LD	R25,Y+
    041A 9189      LD	R24,Y+
    041B 91E9      LD	R30,Y+
    041C 90B9      LD	R11,Y+
    041D 90A9      LD	R10,Y+
    041E 9099      LD	R9,Y+
    041F 9089      LD	R8,Y+
    0420 9624      ADIW	R28,4
    0421 9508      RET
tstzero1:
    0422 27EE      CLR	R30
    0423 2BE0      OR	R30,R16
    0424 2BE1      OR	R30,R17
    0425 2BE2      OR	R30,R18
    0426 2BE3      OR	R30,R19
    0427 9508      RET
tstzero2:
    0428 27EE      CLR	R30
    0429 2BE8      OR	R30,R24
    042A 2BE9      OR	R30,R25
    042B 2BEA      OR	R30,R26
    042C 2BEB      OR	R30,R27
    042D 9508      RET

⌨️ 快捷键说明

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