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

📄 singlekey.lst

📁 ATmega16应用例子
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0117) 			;								 
(0118) }
    00CF 940E01B1  CALL	pop_gset1
    00D1 9508      RET
FILE: E:\ProductPro\M16SD\ICCAVR\SingleKeyBoard\SingleKeyBoard\SingleKey.c
(0001) /*********************************************************************
(0002) 	微 雪 电 子   WaveShare   http://www.waveShare.net            	
(0003) 		                                                            
(0004) 目    的:   测试"SingleKeyBoard"模块
(0005) 
(0006) 目标系统:   基于任何AVR单片机
(0007) 		                                                                
(0008) 应用软件:   ICCAVR
(0009) 		                                                                
(0010) 版    本:   Version 1.0                                                          
(0011) 		                                                                
(0012) 圆版时间:   2005-06-25
(0013) 	
(0014) 开发人员:   SEE(中文名不告诉你~怕你骂我)
(0015) 
(0016) 说	 明:   若用于商业用途,请保留此段文字或注明代码来源
(0017) 	
(0018) 	深 圳 微 雪 电 子 保 留 所 有 的 版 权     
(0019) *********************************************************************/
(0020) 
(0021) /*01010101010101010101010101010101010101010101010101010101010101010101
(0022) ----------------------------------------------------------------------
(0023) 版本更新记录:
(0024) 
(0025) ----------------------------------------------------------------------
(0026) 接入模块: SingleKeyBoard
(0027) 接口说明: SingleKeyBoard	    M16SmartGuider	   		
(0028) 			K0		---------     PA0
(0029) 		    K1  	---------     PA1
(0030) 			K2 		---------     PA2
(0031) 			K3  	---------     PA3
(0032) 			K4  	---------     PA4
(0033) 			K5  	---------     PA5
(0034) 			K6  	---------     PA6
(0035) 			K7  	---------     PA7
(0036) 			GND		---------     GND	
(0037) ----------------------------------------------------------------------
(0038) 注意事项:
(0039) 		* 将相应的LED-SW短接使能,可以观察输入得数据
(0040) ----------------------------------------------------------------------
(0041) 10101010101010101010101010101010101010101010101010101010101010101010*/
(0042) 
(0043) #include <iom16v.h>
(0044) #include "E:\ICC_H\CmmICC.H"
(0045) 
(0046) #define LED_DDR  DDRB
(0047) #define LED_P0RT PORTB
(0048) #define KEY_DDR  DDRA
(0049) #define KEY_PORT PORTA
(0050) #define KEY_PIN  PINA
(0051) 
(0052) /*--------------------------------------------------------------------
(0053) 函数名称:键盘扫描
(0054) 函数功能:
(0055) 注意事项:
(0056) 提示说明:
(0057) 输    入:
(0058) 返    回:
(0059) --------------------------------------------------------------------*/
(0060) void scanKey()
(0061) {
(0062)  	KEY_DDR=0X00;
_scanKey:
    00D2 2422      CLR	R2
    00D3 BA2A      OUT	0x1A,R2
(0063) 	KEY_PORT=0xFF;
    00D4 EF8F      LDI	R24,0xFF
    00D5 BB8B      OUT	0x1B,R24
(0064) 	if(KEY_PIN==0xFE) 
    00D6 B389      IN	R24,0x19
    00D7 3F8E      CPI	R24,0xFE
    00D8 F411      BNE	0x00DB
(0065) 		LED_P0RT=0x01;
    00D9 E081      LDI	R24,1
    00DA BB88      OUT	0x18,R24
(0066) 	if(KEY_PIN==0xFD) 
    00DB B389      IN	R24,0x19
    00DC 3F8D      CPI	R24,0xFD
    00DD F411      BNE	0x00E0
(0067) 		LED_P0RT=0x02;
    00DE E082      LDI	R24,2
    00DF BB88      OUT	0x18,R24
(0068) 	if(KEY_PIN==0xFB) 
    00E0 B389      IN	R24,0x19
    00E1 3F8B      CPI	R24,0xFB
    00E2 F411      BNE	0x00E5
(0069) 		LED_P0RT=0x04;
    00E3 E084      LDI	R24,4
    00E4 BB88      OUT	0x18,R24
(0070) 	if(KEY_PIN==0xF7) 
    00E5 B389      IN	R24,0x19
    00E6 3F87      CPI	R24,0xF7
    00E7 F411      BNE	0x00EA
(0071) 		LED_P0RT=0x08;
    00E8 E088      LDI	R24,0x8
    00E9 BB88      OUT	0x18,R24
(0072) 	if(KEY_PIN==0xEF) 
    00EA B389      IN	R24,0x19
    00EB 3E8F      CPI	R24,0xEF
    00EC F411      BNE	0x00EF
(0073) 		LED_P0RT=0x10;
    00ED E180      LDI	R24,0x10
    00EE BB88      OUT	0x18,R24
(0074) 	if(KEY_PIN==0xDF) 
    00EF B389      IN	R24,0x19
    00F0 3D8F      CPI	R24,0xDF
    00F1 F411      BNE	0x00F4
(0075) 		LED_P0RT=0x20;
    00F2 E280      LDI	R24,0x20
    00F3 BB88      OUT	0x18,R24
(0076) 	if(KEY_PIN==0xBF) 
    00F4 B389      IN	R24,0x19
    00F5 3B8F      CPI	R24,0xBF
    00F6 F411      BNE	0x00F9
(0077) 		LED_P0RT=0x40;
    00F7 E480      LDI	R24,0x40
    00F8 BB88      OUT	0x18,R24
(0078) 	if(KEY_PIN==0x7F) 
    00F9 B389      IN	R24,0x19
    00FA 378F      CPI	R24,0x7F
    00FB F411      BNE	0x00FE
(0079) 		LED_P0RT=0x80;
    00FC E880      LDI	R24,0x80
    00FD BB88      OUT	0x18,R24
(0080)  }
    00FE 9508      RET
(0081) /*--------------------------------------------------------------------
(0082) 函数名称:
(0083) 函数功能:
(0084) 注意事项:
(0085) 提示说明:
(0086) 输    入:
(0087) 返    回:
(0088) --------------------------------------------------------------------*/
(0089) void main()
(0090) {
(0091) 	LED_DDR=0XFF;
_main:
    00FF EF8F      LDI	R24,0xFF
    0100 BB87      OUT	0x17,R24
    0101 C001      RJMP	0x0103
(0092) 	while(1)
(0093) 		scanKey();
    0102 DFCF      RCALL	_scanKey
    0103 CFFE      RJMP	0x0102
(0094) }
FILE: <library>
    0104 9508      RET
push_arg4:
    0105 933A      ST	R19,-Y
    0106 932A      ST	R18,-Y
push_arg2:
    0107 931A      ST	R17,-Y
    0108 930A      ST	R16,-Y
    0109 9508      RET
div32u:
    010A 94E8      BCLR	6
    010B C001      RJMP	0x010D
mod32u:
    010C 9468      BSET	6
    010D D02F      RCALL	long_div_prolog
    010E 24CC      CLR	R12
    010F C008      RJMP	0x0118
div32s:
    0110 94E8      BCLR	6
    0111 C001      RJMP	0x0113
mod32s:
    0112 9468      BSET	6
    0113 D029      RCALL	long_div_prolog
    0114 FD37      SBRC	R19,7
    0115 D053      RCALL	neg_R16_R19
    0116 FDB7      SBRC	R27,7
    0117 D05A      RCALL	neg_R24_R27
    0118 2477      CLR	R7
    0119 2488      CLR	R8
    011A 2499      CLR	R9
    011B 24AA      CLR	R10
    011C 24BB      CLR	R11
    011D D041      RCALL	tst_R16_R19
    011E F0C1      BEQ	0x0137
    011F D044      RCALL	tst_R24_R27
    0120 F0B1      BEQ	0x0137
    0121 E2E8      LDI	R30,0x28
    0122 0F00      LSL	R16
    0123 1F11      ROL	R17
    0124 1F22      ROL	R18
    0125 1F33      ROL	R19
    0126 1C77      ROL	R7
    0127 1C88      ROL	R8
    0128 1C99      ROL	R9
    0129 1CAA      ROL	R10
    012A 1CBB      ROL	R11
    012B 1688      CP	R8,R24
    012C 0699      CPC	R9,R25
    012D 06AA      CPC	R10,R26
    012E 06BB      CPC	R11,R27
    012F F028      BCS	0x0135
    0130 1A88      SUB	R8,R24
    0131 0A99      SBC	R9,R25
    0132 0AAA      SBC	R10,R26
    0133 0ABB      SBC	R11,R27
    0134 9503      INC	R16
    0135 95EA      DEC	R30
    0136 F759      BNE	0x0122
    0137 F426      BRTC	0x013C
    0138 2D08      MOV	R16,R8
    0139 2D19      MOV	R17,R9
    013A 2D2A      MOV	R18,R10
    013B 2D3B      MOV	R19,R11
    013C C013      RJMP	long_div_epilog
long_div_prolog:
    013D 927A      ST	R7,-Y
    013E 928A      ST	R8,-Y
    013F 929A      ST	R9,-Y
    0140 92AA      ST	R10,-Y
    0141 92BA      ST	R11,-Y
    0142 92CA      ST	R12,-Y
    0143 93EA      ST	R30,-Y
    0144 938A      ST	R24,-Y
    0145 939A      ST	R25,-Y
    0146 93AA      ST	R26,-Y
    0147 93BA      ST	R27,-Y
    0148 858B      LDD	R24,Y+11
    0149 859C      LDD	R25,Y+12
    014A 85AD      LDD	R26,Y+13
    014B 85BE      LDD	R27,Y+14
    014C 2EC3      MOV	R12,R19
    014D F00E      BRTS	0x014F
    014E 26CB      EOR	R12,R27
    014F 9508      RET
long_div_epilog:
    0150 FCC7      SBRC	R12,7
    0151 D017      RCALL	neg_R16_R19
    0152 91B9      LD	R27,Y+
    0153 91A9      LD	R26,Y+
    0154 9199      LD	R25,Y+
    0155 9189      LD	R24,Y+
    0156 91E9      LD	R30,Y+
    0157 90C9      LD	R12,Y+
    0158 90B9      LD	R11,Y+
    0159 90A9      LD	R10,Y+
    015A 9099      LD	R9,Y+
    015B 9089      LD	R8,Y+
    015C 9079      LD	R7,Y+
    015D 9624      ADIW	R28,4
    015E 9508      RET
tst_R16_R19:
    015F 2FE0      MOV	R30,R16
    0160 2BE1      OR	R30,R17
    0161 2BE2      OR	R30,R18
    0162 2BE3      OR	R30,R19
    0163 9508      RET
tst_R24_R27:
    0164 2FE8      MOV	R30,R24
    0165 2BE9      OR	R30,R25
    0166 2BEA      OR	R30,R26
    0167 2BEB      OR	R30,R27
    0168 9508      RET
neg_R16_R19:
    0169 9500      COM	R16
    016A 9510      COM	R17
    016B 9520      COM	R18
    016C 9530      COM	R19
    016D 5F0F      SUBI	R16,0xFF
    016E 4F1F      SBCI	R17,0xFF
    016F 4F2F      SBCI	R18,0xFF
    0170 4F3F      SBCI	R19,0xFF
    0171 9508      RET
neg_R24_R27:
    0172 9580      COM	R24
    0173 9590      COM	R25
    0174 95A0      COM	R26
    0175 95B0      COM	R27
    0176 5F8F      SUBI	R24,0xFF
    0177 4F9F      SBCI	R25,0xFF
    0178 4FAF      SBCI	R26,0xFF
    0179 4FBF      SBCI	R27,0xFF
    017A 9508      RET
empy32s:
empy32u:
    017B 940E01D1  CALL	long_prolog
    017D 927F      PUSH	R7
    017E 940E01EA  CALL	tstzero1
    0180 F139      BEQ	0x01A8
    0181 2477      CLR	R7
    0182 940E01F0  CALL	tstzero2
    0184 F419      BNE	0x0188
    0185 018C      MOVW	R16,R24
    0186 019D      MOVW	R18,R26
    0187 C020      RJMP	0x01A8
    0188 9F08      MUL	R16,R24
    0189 2CB0      MOV	R11,R0
    018A 2CA1      MOV	R10,R1
    018B 9F28      MUL	R18,R24
    018C 2C90      MOV	R9,R0
    018D 2C81      MOV	R8,R1
    018E 9F18      MUL	R17,R24
    018F 0CA0      ADD	R10,R0
    0190 1C91      ADC	R9,R1
    0191 1C87      ADC	R8,R7
    0192 9F09      MUL	R16,R25
    0193 0CA0      ADD	R10,R0
    0194 1C91      ADC	R9,R1
    0195 1C87      ADC	R8,R7
    0196 9F19      MUL	R17,R25
    0197 0C90      ADD	R9,R0
    0198 1C81      ADC	R8,R1
    0199 9F0A      MUL	R16,R26
    019A 0C90      ADD	R9,R0
    019B 1C81      ADC	R8,R1
    019C 9F38      MUL	R19,R24
    019D 0C80      ADD	R8,R0
    019E 9F29      MUL	R18,R25
    019F 0C80      ADD	R8,R0
    01A0 9F1A      MUL	R17,R26
    01A1 0C80      ADD	R8,R0
    01A2 9F0B      MUL	R16,R27
    01A3 0C80      ADD	R8,R0
    01A4 2D0B      MOV	R16,R11
    01A5 2D1A      MOV	R17,R10
    01A6 2D29      MOV	R18,R9
    01A7 2D38      MOV	R19,R8
    01A8 907F      POP	R7
    01A9 940C01DF  JMP	long_epilog
pop_gset4:
    01AB E0E8      LDI	R30,0x8
    01AC 940C01B2  JMP	pop
push_gset1:
    01AE 935A      ST	R21,-Y
    01AF 934A      ST	R20,-Y
    01B0 9508      RET
pop_gset1:
    01B1 E0E1      LDI	R30,1
pop:
    01B2 9149      LD	R20,Y+
    01B3 9159      LD	R21,Y+
    01B4 FDE0      SBRC	R30,0
    01B5 9508      RET
    01B6 9169      LD	R22,Y+
    01B7 9179      LD	R23,Y+
    01B8 FDE1      SBRC	R30,1
    01B9 9508      RET
    01BA 90A9      LD	R10,Y+
    01BB 90B9      LD	R11,Y+
    01BC FDE2      SBRC	R30,2
    01BD 9508      RET
    01BE 90C9      LD	R12,Y+
    01BF 90D9      LD	R13,Y+
    01C0 FDE3      SBRC	R30,3
    01C1 9508      RET
    01C2 90E9      LD	R14,Y+
    01C3 90F9      LD	R15,Y+
    01C4 9508      RET
push_gset2:
    01C5 937A      ST	R23,-Y
    01C6 936A      ST	R22,-Y
    01C7 940C01AE  JMP	push_gset1
push_gset3:
    01C9 92BA      ST	R11,-Y
    01CA 92AA      ST	R10,-Y
    01CB 940C01C5  JMP	push_gset2
push_gset4:
    01CD 92DA      ST	R13,-Y
    01CE 92CA      ST	R12,-Y
    01CF 940C01C9  JMP	push_gset3
long_prolog:
    01D1 928A      ST	R8,-Y
    01D2 929A      ST	R9,-Y
    01D3 92AA      ST	R10,-Y
    01D4 92BA      ST	R11,-Y
    01D5 93EA      ST	R30,-Y
    01D6 938A      ST	R24,-Y
    01D7 939A      ST	R25,-Y
    01D8 93AA      ST	R26,-Y
    01D9 93BA      ST	R27,-Y
    01DA 8589      LDD	R24,Y+9
    01DB 859A      LDD	R25,Y+10
    01DC 85AB      LDD	R26,Y+11
    01DD 85BC      LDD	R27,Y+12
    01DE 9508      RET
long_epilog:
    01DF 91B9      LD	R27,Y+
    01E0 91A9      LD	R26,Y+
    01E1 9199      LD	R25,Y+
    01E2 9189      LD	R24,Y+
    01E3 91E9      LD	R30,Y+
    01E4 90B9      LD	R11,Y+
    01E5 90A9      LD	R10,Y+
    01E6 9099      LD	R9,Y+
    01E7 9089      LD	R8,Y+
    01E8 9624      ADIW	R28,4
    01E9 9508      RET
tstzero1:
    01EA 27EE      CLR	R30
    01EB 2BE0      OR	R30,R16
    01EC 2BE1      OR	R30,R17
    01ED 2BE2      OR	R30,R18
    01EE 2BE3      OR	R30,R19
    01EF 9508      RET
tstzero2:
    01F0 27EE      CLR	R30
    01F1 2BE8      OR	R30,R24
    01F2 2BE9      OR	R30,R25
    01F3 2BEA      OR	R30,R26
    01F4 2BEB      OR	R30,R27
    01F5 9508      RET

⌨️ 快捷键说明

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