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

📄 ps2.lst

📁 mega16的ps2程序 自己修改
💻 LST
📖 第 1 页 / 共 2 页
字号:
     17A 1FF9      ADC	R31,R25
     17B 9024      LPM	R2,0(Z)
     17C 142A      CP	R2,R10
     17D F009      BEQ	0x017F
     17E C04A      RJMP	0x01C9
(0097) 								USART_Transmit(UnShifted[TempCyc][1]);
     17F E585      LDI	R24,0x55
     180 E090      LDI	R25,0
     181 2FE4      MOV	R30,R20
     182 27FF      CLR	R31
     183 0FEE      LSL	R30
     184 1FFF      ROL	R31
     185 0FE8      ADD	R30,R24
     186 1FF9      ADC	R31,R25
     187 9104      LPM	R16,0(Z)
     188 DF6D      RCALL	_USART_Transmit
(0098) 								
(0099) 							} 
     189 C03F      RJMP	0x01C9
(0100) 						else  //按下SHIFT
(0101) 							{
(0102) 								for(TempCyc = 0; (Shifted[TempCyc][0]!=ScanCode)&&(TempCyc<59); TempCyc++); //查表显示
     18A 2744      CLR	R20
     18B C001      RJMP	0x018D
     18C 9543      INC	R20
     18D EC8A      LDI	R24,0xCA
     18E E090      LDI	R25,0
     18F 2FE4      MOV	R30,R20
     190 27FF      CLR	R31
     191 0FEE      LSL	R30
     192 1FFF      ROL	R31
     193 0FE8      ADD	R30,R24
     194 1FF9      ADC	R31,R25
     195 9024      LPM	R2,0(Z)
     196 142A      CP	R2,R10
     197 F011      BEQ	0x019A
     198 334B      CPI	R20,0x3B
     199 F390      BCS	0x018C
(0103) 								if (Shifted[TempCyc][0] == ScanCode) 
     19A EC8A      LDI	R24,0xCA
     19B E090      LDI	R25,0
     19C 2FE4      MOV	R30,R20
     19D 27FF      CLR	R31
     19E 0FEE      LSL	R30
     19F 1FFF      ROL	R31
     1A0 0FE8      ADD	R30,R24
     1A1 1FF9      ADC	R31,R25
     1A2 9024      LPM	R2,0(Z)
     1A3 142A      CP	R2,R10
     1A4 F521      BNE	0x01C9
(0104) 								USART_Transmit(Shifted[TempCyc][1]);
     1A5 EC8B      LDI	R24,0xCB
     1A6 E090      LDI	R25,0
     1A7 2FE4      MOV	R30,R20
     1A8 27FF      CLR	R31
     1A9 0FEE      LSL	R30
     1AA 1FFF      ROL	R31
     1AB 0FE8      ADD	R30,R24
     1AC 1FF9      ADC	R31,R25
     1AD 9104      LPM	R16,0(Z)
     1AE DF47      RCALL	_USART_Transmit
(0105) 								
(0106) 							}
(0107) 
(0108) 					break;
(0109) 				}
(0110) 		}
     1AF C019      RJMP	0x01C9
(0111) 	else
(0112) 		{	
(0113) 			Key_UP = 0;
     1B0 2422      CLR	R2
     1B1 9220 0061 STS	PS2.C:Key_UP,R2
(0114) 			switch (ScanCode) //当键松开时不处理判码,如G 34H F0H 34H 那么第二个34H不会被处理
     1B3 2D4A      MOV	R20,R10
     1B4 2755      CLR	R21
     1B5 3142      CPI	R20,0x12
     1B6 E0E0      LDI	R30,0
     1B7 075E      CPC	R21,R30
     1B8 F049      BEQ	0x01C2
     1B9 3142      CPI	R20,0x12
     1BA E0E0      LDI	R30,0
     1BB 075E      CPC	R21,R30
     1BC F064      BLT	0x01C9
     1BD 3549      CPI	R20,0x59
     1BE E0E0      LDI	R30,0
     1BF 075E      CPC	R21,R30
     1C0 F029      BEQ	0x01C6
     1C1 C007      RJMP	0x01C9
(0115) 				{
(0116) 					case 0x12 :	// 左 SHIFT
(0117) 						Shift = 0;
     1C2 2422      CLR	R2
     1C3 9220 0062 STS	PS2.C:Shift,R2
(0118) 					break;
     1C5 C003      RJMP	0x01C9
(0119) 
(0120) 					case 0x59 :	// 右 SHIFT
(0121) 						Shift = 0;
     1C6 2422      CLR	R2
     1C7 9220 0062 STS	PS2.C:Shift,R2
(0122) 					break;
(0123) 				}
(0124) 		}
(0125) 	BF = 0; //标识字符处理完了
     1C9 2422      CLR	R2
     1CA 9220 0063 STS	PS2.C:BF,R2
     1CC 940C 0257 JMP	pop_xgset300C
(0126) } 
(0127) 
(0128) 
(0129) void main()
(0130) {
(0131)     PORTD = PORTD | 0x18;  //设置为上拉模式
_main:
     1CE B382      IN	R24,0x12
     1CF 6188      ORI	R24,0x18
     1D0 BB82      OUT	0x12,R24
(0132)     DDRD  = DDRD  & 0xE7;  //设置为输入模式 
     1D1 B381      IN	R24,0x11
     1D2 7E87      ANDI	R24,0xE7
     1D3 BB81      OUT	0x11,R24
(0133) 	uart0_init(9600);
     1D4 E800      LDI	R16,0x80
     1D5 E215      LDI	R17,0x25
     1D6 DEEE      RCALL	_uart0_init
(0134) 	MCUCR = MCUCR & 0xf3;  //外部中断1设置为低电平触发
     1D7 B785      IN	R24,0x35
     1D8 7F83      ANDI	R24,0xF3
     1D9 BF85      OUT	0x35,R24
(0135)     GICR  = (1<<INT1); //外部中断0,1的使能
     1DA E880      LDI	R24,0x80
     1DB BF8B      OUT	0x3B,R24
(0136) 	SEI();    
     1DC 9478      BSET	7
(0137) 	do
(0138) 		{
(0139) 			if (BF)
     1DD 9020 0063 LDS	R2,PS2.C:BF
     1DF 2022      TST	R2
     1E0 F021      BEQ	0x01E5
(0140) 				Decode(KeyV);
     1E1 9100 0064 LDS	R16,PS2.C:KeyV
     1E3 DF52      RCALL	_Decode
     1E4 C001      RJMP	0x01E6
(0141) 			else
(0142) 				SEI();; //开中断
     1E5 9478      BSET	7
(0143) 		}
(0144) 	while(1)
FILE: <library>
     1E6 CFF6      RJMP	0x01DD
     1E7 9508      RET
div32u:
     1E8 94E8      BCLR	6
     1E9 C001      RJMP	0x01EB
mod32u:
     1EA 9468      BSET	6
     1EB D030      RCALL	long_div_prolog
     1EC 24CC      CLR	R12
     1ED C009      RJMP	0x01F7
div32s:
     1EE 94E8      BCLR	6
     1EF C001      RJMP	0x01F1
mod32s:
     1F0 9468      BSET	6
     1F1 D02A      RCALL	long_div_prolog
     1F2 FD37      SBRC	R19,7
     1F3 940E 026A CALL	neg32
     1F5 FDB7      SBRC	R27,7
     1F6 D052      RCALL	neg_R24_R27
     1F7 2477      CLR	R7
     1F8 2488      CLR	R8
     1F9 2499      CLR	R9
     1FA 24AA      CLR	R10
     1FB 24BB      CLR	R11
     1FC D042      RCALL	tst_R16_R19
     1FD F0C1      BEQ	0x0216
     1FE D045      RCALL	tst_R24_R27
     1FF F0B1      BEQ	0x0216
     200 E2E8      LDI	R30,0x28
     201 0F00      LSL	R16
     202 1F11      ROL	R17
     203 1F22      ROL	R18
     204 1F33      ROL	R19
     205 1C77      ROL	R7
     206 1C88      ROL	R8
     207 1C99      ROL	R9
     208 1CAA      ROL	R10
     209 1CBB      ROL	R11
     20A 1688      CP	R8,R24
     20B 0699      CPC	R9,R25
     20C 06AA      CPC	R10,R26
     20D 06BB      CPC	R11,R27
     20E F028      BCS	0x0214
     20F 1A88      SUB	R8,R24
     210 0A99      SBC	R9,R25
     211 0AAA      SBC	R10,R26
     212 0ABB      SBC	R11,R27
     213 9503      INC	R16
     214 95EA      DEC	R30
     215 F759      BNE	0x0201
     216 F426      BRTC	0x021B
     217 2D08      MOV	R16,R8
     218 2D19      MOV	R17,R9
     219 2D2A      MOV	R18,R10
     21A 2D3B      MOV	R19,R11
     21B C013      RJMP	long_div_epilog
long_div_prolog:
     21C 927A      ST	R7,-Y
     21D 928A      ST	R8,-Y
     21E 929A      ST	R9,-Y
     21F 92AA      ST	R10,-Y
     220 92BA      ST	R11,-Y
     221 92CA      ST	R12,-Y
     222 93EA      ST	R30,-Y
     223 938A      ST	R24,-Y
     224 939A      ST	R25,-Y
     225 93AA      ST	R26,-Y
     226 93BA      ST	R27,-Y
     227 858B      LDD	R24,Y+11
     228 859C      LDD	R25,Y+12
     229 85AD      LDD	R26,Y+13
     22A 85BE      LDD	R27,Y+14
     22B 2EC3      MOV	R12,R19
     22C F00E      BRTS	0x022E
     22D 26CB      EOR	R12,R27
     22E 9508      RET
long_div_epilog:
     22F FCC7      SBRC	R12,7
     230 940E 026A CALL	neg32
     232 91B9      LD	R27,Y+
     233 91A9      LD	R26,Y+
     234 9199      LD	R25,Y+
     235 9189      LD	R24,Y+
     236 91E9      LD	R30,Y+
     237 90C9      LD	R12,Y+
     238 90B9      LD	R11,Y+
     239 90A9      LD	R10,Y+
     23A 9099      LD	R9,Y+
     23B 9089      LD	R8,Y+
     23C 9079      LD	R7,Y+
     23D 9624      ADIW	R28,4
     23E 9508      RET
tst_R16_R19:
     23F 2FE0      MOV	R30,R16
     240 2BE1      OR	R30,R17
     241 2BE2      OR	R30,R18
     242 2BE3      OR	R30,R19
     243 9508      RET
tst_R24_R27:
     244 2FE8      MOV	R30,R24
     245 2BE9      OR	R30,R25
     246 2BEA      OR	R30,R26
     247 2BEB      OR	R30,R27
     248 9508      RET
neg_R24_R27:
     249 9580      COM	R24
     24A 9590      COM	R25
     24B 95A0      COM	R26
     24C 95B0      COM	R27
     24D 5F8F      SUBI	R24,0xFF
     24E 4F9F      SBCI	R25,0xFF
     24F 4FAF      SBCI	R26,0xFF
     250 4FBF      SBCI	R27,0xFF
     251 9508      RET
push_xgset300C:
     252 935A      ST	R21,-Y
     253 934A      ST	R20,-Y
     254 92BA      ST	R11,-Y
     255 92AA      ST	R10,-Y
     256 9508      RET
pop_xgset300C:
     257 90A9      LD	R10,Y+
     258 90B9      LD	R11,Y+
     259 9149      LD	R20,Y+
     25A 9159      LD	R21,Y+
     25B 9508      RET
push_xgsetF00C:
     25C 937A      ST	R23,-Y
     25D 936A      ST	R22,-Y
     25E 935A      ST	R21,-Y
     25F 934A      ST	R20,-Y
     260 92BA      ST	R11,-Y
     261 92AA      ST	R10,-Y
     262 9508      RET
pop_xgsetF00C:
     263 90A9      LD	R10,Y+
     264 90B9      LD	R11,Y+
     265 9149      LD	R20,Y+
     266 9159      LD	R21,Y+
     267 9169      LD	R22,Y+
     268 9179      LD	R23,Y+
     269 9508      RET
neg32:
     26A 9500      COM	R16
     26B 9510      COM	R17
     26C 9520      COM	R18
     26D 9530      COM	R19
     26E 5F0F      SUBI	R16,0xFF
     26F 4F1F      SBCI	R17,0xFF
     270 4F2F      SBCI	R18,0xFF
     271 4F3F      SBCI	R19,0xFF
     272 9508      RET

⌨️ 快捷键说明

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