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

📄 matrixkey.lst

📁 ATmega16应用例子
💻 LST
📖 第 1 页 / 共 3 页
字号:
    0123 EF0F      LDI	R16,0xFF
    0124 940E01E5  CALL	pop_gset4
    0126 9508      RET
(0168) }
(0169) /*--------------------------------------------------------------------
(0170) 函数名称:
(0171) 函数功能:
(0172) 注意事项:
(0173) 提示说明:
(0174) 输    入:
(0175) 返    回:
(0176) --------------------------------------------------------------------*/
(0177) void KeyBoard_init()
(0178) {
(0179) 	OUT_K0;    
_KeyBoard_init:
    0127 9AD0      SBI	0x1A,0
(0180) 	OUT_K1;    
    0128 9AD1      SBI	0x1A,1
(0181) 	OUT_K2;    	
    0129 9AD2      SBI	0x1A,2
(0182) 	OUT_K3;    	
    012A 9AD3      SBI	0x1A,3
(0183) 	IN_K4;    	
    012B 98D4      CBI	0x1A,4
(0184) 	IN_K5;    
    012C 98D5      CBI	0x1A,5
(0185) 	IN_K6;   
    012D 98D6      CBI	0x1A,6
(0186) 	IN_K7;    
    012E 98D7      CBI	0x1A,7
(0187) 	SET_K4;		
    012F 9ADC      SBI	0x1B,4
(0188) 	SET_K5;		
    0130 9ADD      SBI	0x1B,5
(0189) 	SET_K6;		
    0131 9ADE      SBI	0x1B,6
(0190) 	SET_K7;		
    0132 9ADF      SBI	0x1B,7
(0191) }
    0133 9508      RET
(0192) /*--------------------------------------------------------------------
(0193) 函数名称:
(0194) 函数功能:
(0195) 注意事项:
(0196) 提示说明:
(0197) 输    入:
(0198) 返    回:
(0199) --------------------------------------------------------------------*/
(0200) void main()
(0201) {
(0202)  	uint8 keyVal;
(0203) 	LED_DDR = 0XFF;
_main:
  keyVal               --> R20
    0134 EF8F      LDI	R24,0xFF
    0135 BB87      OUT	0x17,R24
(0204) 	KeyBoard_init();		
    0136 DFF0      RCALL	_KeyBoard_init
    0137 C005      RJMP	0x013D
(0205) 	while(1)
(0206) 	{
(0207) 	 	keyVal = GetKeyVal();
    0138 DFC0      RCALL	_GetKeyVal
    0139 2F40      MOV	R20,R16
(0208) 		if( keyVal!=0xFF )		
    013A 3F0F      CPI	R16,0xFF
    013B F009      BEQ	0x013D
(0209) 			LED_PORT = keyVal;
    013C BB08      OUT	0x18,R16
    013D CFFA      RJMP	0x0138
(0210) 	}
(0211) }
FILE: <library>
    013E 9508      RET
push_arg4:
    013F 933A      ST	R19,-Y
    0140 932A      ST	R18,-Y
push_arg2:
    0141 931A      ST	R17,-Y
    0142 930A      ST	R16,-Y
    0143 9508      RET
div32u:
    0144 94E8      BCLR	6
    0145 C001      RJMP	0x0147
mod32u:
    0146 9468      BSET	6
    0147 D02F      RCALL	long_div_prolog
    0148 24CC      CLR	R12
    0149 C008      RJMP	0x0152
div32s:
    014A 94E8      BCLR	6
    014B C001      RJMP	0x014D
mod32s:
    014C 9468      BSET	6
    014D D029      RCALL	long_div_prolog
    014E FD37      SBRC	R19,7
    014F D053      RCALL	neg_R16_R19
    0150 FDB7      SBRC	R27,7
    0151 D05A      RCALL	neg_R24_R27
    0152 2477      CLR	R7
    0153 2488      CLR	R8
    0154 2499      CLR	R9
    0155 24AA      CLR	R10
    0156 24BB      CLR	R11
    0157 D041      RCALL	tst_R16_R19
    0158 F0C1      BEQ	0x0171
    0159 D044      RCALL	tst_R24_R27
    015A F0B1      BEQ	0x0171
    015B E2E8      LDI	R30,0x28
    015C 0F00      LSL	R16
    015D 1F11      ROL	R17
    015E 1F22      ROL	R18
    015F 1F33      ROL	R19
    0160 1C77      ROL	R7
    0161 1C88      ROL	R8
    0162 1C99      ROL	R9
    0163 1CAA      ROL	R10
    0164 1CBB      ROL	R11
    0165 1688      CP	R8,R24
    0166 0699      CPC	R9,R25
    0167 06AA      CPC	R10,R26
    0168 06BB      CPC	R11,R27
    0169 F028      BCS	0x016F
    016A 1A88      SUB	R8,R24
    016B 0A99      SBC	R9,R25
    016C 0AAA      SBC	R10,R26
    016D 0ABB      SBC	R11,R27
    016E 9503      INC	R16
    016F 95EA      DEC	R30
    0170 F759      BNE	0x015C
    0171 F426      BRTC	0x0176
    0172 2D08      MOV	R16,R8
    0173 2D19      MOV	R17,R9
    0174 2D2A      MOV	R18,R10
    0175 2D3B      MOV	R19,R11
    0176 C013      RJMP	long_div_epilog
long_div_prolog:
    0177 927A      ST	R7,-Y
    0178 928A      ST	R8,-Y
    0179 929A      ST	R9,-Y
    017A 92AA      ST	R10,-Y
    017B 92BA      ST	R11,-Y
    017C 92CA      ST	R12,-Y
    017D 93EA      ST	R30,-Y
    017E 938A      ST	R24,-Y
    017F 939A      ST	R25,-Y
    0180 93AA      ST	R26,-Y
    0181 93BA      ST	R27,-Y
    0182 858B      LDD	R24,Y+11
    0183 859C      LDD	R25,Y+12
    0184 85AD      LDD	R26,Y+13
    0185 85BE      LDD	R27,Y+14
    0186 2EC3      MOV	R12,R19
    0187 F00E      BRTS	0x0189
    0188 26CB      EOR	R12,R27
    0189 9508      RET
long_div_epilog:
    018A FCC7      SBRC	R12,7
    018B D017      RCALL	neg_R16_R19
    018C 91B9      LD	R27,Y+
    018D 91A9      LD	R26,Y+
    018E 9199      LD	R25,Y+
    018F 9189      LD	R24,Y+
    0190 91E9      LD	R30,Y+
    0191 90C9      LD	R12,Y+
    0192 90B9      LD	R11,Y+
    0193 90A9      LD	R10,Y+
    0194 9099      LD	R9,Y+
    0195 9089      LD	R8,Y+
    0196 9079      LD	R7,Y+
    0197 9624      ADIW	R28,4
    0198 9508      RET
tst_R16_R19:
    0199 2FE0      MOV	R30,R16
    019A 2BE1      OR	R30,R17
    019B 2BE2      OR	R30,R18
    019C 2BE3      OR	R30,R19
    019D 9508      RET
tst_R24_R27:
    019E 2FE8      MOV	R30,R24
    019F 2BE9      OR	R30,R25
    01A0 2BEA      OR	R30,R26
    01A1 2BEB      OR	R30,R27
    01A2 9508      RET
neg_R16_R19:
    01A3 9500      COM	R16
    01A4 9510      COM	R17
    01A5 9520      COM	R18
    01A6 9530      COM	R19
    01A7 5F0F      SUBI	R16,0xFF
    01A8 4F1F      SBCI	R17,0xFF
    01A9 4F2F      SBCI	R18,0xFF
    01AA 4F3F      SBCI	R19,0xFF
    01AB 9508      RET
neg_R24_R27:
    01AC 9580      COM	R24
    01AD 9590      COM	R25
    01AE 95A0      COM	R26
    01AF 95B0      COM	R27
    01B0 5F8F      SUBI	R24,0xFF
    01B1 4F9F      SBCI	R25,0xFF
    01B2 4FAF      SBCI	R26,0xFF
    01B3 4FBF      SBCI	R27,0xFF
    01B4 9508      RET
empy32s:
empy32u:
    01B5 940E020B  CALL	long_prolog
    01B7 927F      PUSH	R7
    01B8 940E0224  CALL	tstzero1
    01BA F139      BEQ	0x01E2
    01BB 2477      CLR	R7
    01BC 940E022A  CALL	tstzero2
    01BE F419      BNE	0x01C2
    01BF 018C      MOVW	R16,R24
    01C0 019D      MOVW	R18,R26
    01C1 C020      RJMP	0x01E2
    01C2 9F08      MUL	R16,R24
    01C3 2CB0      MOV	R11,R0
    01C4 2CA1      MOV	R10,R1
    01C5 9F28      MUL	R18,R24
    01C6 2C90      MOV	R9,R0
    01C7 2C81      MOV	R8,R1
    01C8 9F18      MUL	R17,R24
    01C9 0CA0      ADD	R10,R0
    01CA 1C91      ADC	R9,R1
    01CB 1C87      ADC	R8,R7
    01CC 9F09      MUL	R16,R25
    01CD 0CA0      ADD	R10,R0
    01CE 1C91      ADC	R9,R1
    01CF 1C87      ADC	R8,R7
    01D0 9F19      MUL	R17,R25
    01D1 0C90      ADD	R9,R0
    01D2 1C81      ADC	R8,R1
    01D3 9F0A      MUL	R16,R26
    01D4 0C90      ADD	R9,R0
    01D5 1C81      ADC	R8,R1
    01D6 9F38      MUL	R19,R24
    01D7 0C80      ADD	R8,R0
    01D8 9F29      MUL	R18,R25
    01D9 0C80      ADD	R8,R0
    01DA 9F1A      MUL	R17,R26
    01DB 0C80      ADD	R8,R0
    01DC 9F0B      MUL	R16,R27
    01DD 0C80      ADD	R8,R0
    01DE 2D0B      MOV	R16,R11
    01DF 2D1A      MOV	R17,R10
    01E0 2D29      MOV	R18,R9
    01E1 2D38      MOV	R19,R8
    01E2 907F      POP	R7
    01E3 940C0219  JMP	long_epilog
pop_gset4:
    01E5 E0E8      LDI	R30,0x8
    01E6 940C01EC  JMP	pop
push_gset1:
    01E8 935A      ST	R21,-Y
    01E9 934A      ST	R20,-Y
    01EA 9508      RET
pop_gset1:
    01EB E0E1      LDI	R30,1
pop:
    01EC 9149      LD	R20,Y+
    01ED 9159      LD	R21,Y+
    01EE FDE0      SBRC	R30,0
    01EF 9508      RET
    01F0 9169      LD	R22,Y+
    01F1 9179      LD	R23,Y+
    01F2 FDE1      SBRC	R30,1
    01F3 9508      RET
    01F4 90A9      LD	R10,Y+
    01F5 90B9      LD	R11,Y+
    01F6 FDE2      SBRC	R30,2
    01F7 9508      RET
    01F8 90C9      LD	R12,Y+
    01F9 90D9      LD	R13,Y+
    01FA FDE3      SBRC	R30,3
    01FB 9508      RET
    01FC 90E9      LD	R14,Y+
    01FD 90F9      LD	R15,Y+
    01FE 9508      RET
push_gset2:
    01FF 937A      ST	R23,-Y
    0200 936A      ST	R22,-Y
    0201 940C01E8  JMP	push_gset1
push_gset3:
    0203 92BA      ST	R11,-Y
    0204 92AA      ST	R10,-Y
    0205 940C01FF  JMP	push_gset2
push_gset4:
    0207 92DA      ST	R13,-Y
    0208 92CA      ST	R12,-Y
    0209 940C0203  JMP	push_gset3
long_prolog:
    020B 928A      ST	R8,-Y
    020C 929A      ST	R9,-Y
    020D 92AA      ST	R10,-Y
    020E 92BA      ST	R11,-Y
    020F 93EA      ST	R30,-Y
    0210 938A      ST	R24,-Y
    0211 939A      ST	R25,-Y
    0212 93AA      ST	R26,-Y
    0213 93BA      ST	R27,-Y
    0214 8589      LDD	R24,Y+9
    0215 859A      LDD	R25,Y+10
    0216 85AB      LDD	R26,Y+11
    0217 85BC      LDD	R27,Y+12
    0218 9508      RET
long_epilog:
    0219 91B9      LD	R27,Y+
    021A 91A9      LD	R26,Y+
    021B 9199      LD	R25,Y+
    021C 9189      LD	R24,Y+
    021D 91E9      LD	R30,Y+
    021E 90B9      LD	R11,Y+
    021F 90A9      LD	R10,Y+
    0220 9099      LD	R9,Y+
    0221 9089      LD	R8,Y+
    0222 9624      ADIW	R28,4
    0223 9508      RET
tstzero1:
    0224 27EE      CLR	R30
    0225 2BE0      OR	R30,R16
    0226 2BE1      OR	R30,R17
    0227 2BE2      OR	R30,R18
    0228 2BE3      OR	R30,R19
    0229 9508      RET
tstzero2:
    022A 27EE      CLR	R30
    022B 2BE8      OR	R30,R24
    022C 2BE9      OR	R30,R25
    022D 2BEA      OR	R30,R26
    022E 2BEB      OR	R30,R27
    022F 9508      RET

⌨️ 快捷键说明

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