📄 singlekey.lst
字号:
(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 + -