📄 linkkey.lst
字号:
(0086) //#define UART_RCV_ON() UCR |= 0x10
(0087) //#define UART_RCV_OFF() UCR &= ~0x10
(0088)
(0089) /*--------------------------------------------------------------------
(0090) 函数全称:50us 延时
(0091) 函数功能:当然是 50us延时 啦
(0092) 注意事项:基于7.3728M晶振,稍微有点误差
(0093) 提示说明:调用Delay50us(20),得到1ms延时
(0094) 输 入:
(0095) 返 回:无
(0096) --------------------------------------------------------------------*/
(0097) void delay50us(sint16 t)
(0098) {
(0099) uint8 j;
(0100) for(;t>0;t--)
00AC C007 RJMP 0x00B4
(0101) for(j=0;j<70;j++)
00AD 2744 CLR R20
00AE C001 RJMP 0x00B0
00AF 9543 INC R20
00B0 3446 CPI R20,0x46
00B1 F3E8 BCS 0x00AF
00B2 5001 SUBI R16,1
00B3 4010 SBCI R17,0
00B4 2422 CLR R2
00B5 2433 CLR R3
00B6 1620 CP R2,R16
00B7 0631 CPC R3,R17
00B8 F3A4 BLT 0x00AD
(0102) ;
(0103) }
00B9 940E0242 CALL pop_gset1
00BB 9508 RET
_delay50ms:
i --> R20
t --> R16
00BC 940E023F CALL push_gset1
(0104) /*--------------------------------------------------------------------
(0105) 函数全称:50ms 延时
(0106) 函数功能:当然是 50ms延时 啦
(0107) 注意事项:基于7.3728M晶振,稍微有点误差
(0108) 提示说明:调用delay50ms(20),得到1s延时
(0109) 输 入:
(0110) 返 回:无
(0111) --------------------------------------------------------------------*/
(0112) void delay50ms(sint16 t)
(0113) {
(0114) uint16 i;
(0115) for(;t>0;t--)
00BE C00B RJMP 0x00CA
(0116) for(i=0;i<52642;i++)
00BF 2744 CLR R20
00C0 2755 CLR R21
00C1 C002 RJMP 0x00C4
00C2 5F4F SUBI R20,0xFF
00C3 4F5F SBCI R21,0xFF
00C4 3A42 CPI R20,0xA2
00C5 ECED LDI R30,0xCD
00C6 075E CPC R21,R30
00C7 F3D0 BCS 0x00C2
00C8 5001 SUBI R16,1
00C9 4010 SBCI R17,0
00CA 2422 CLR R2
00CB 2433 CLR R3
00CC 1620 CP R2,R16
00CD 0631 CPC R3,R17
00CE F384 BLT 0x00BF
(0117) ;
(0118) }
00CF 940E0242 CALL pop_gset1
00D1 9508 RET
FILE: E:\ProductPro\M16SD\ICCAVR\LinkKeyBoard\LinkKeyBoard\LinkKey.c
(0001) /*********************************************************************
(0002) 微 雪 电 子 WaveShare http://www.waveShare.net
(0003)
(0004) 目 的: 测试"LinkKeyBoard"模块
(0005)
(0006) 目标系统: 基于任何AVR单片机
(0007)
(0008) 应用软件: ICCAVR
(0009)
(0010) 版 本: Version 1.0
(0011)
(0012) 圆版时间: 2005-03-2
(0013)
(0014) 开发人员: SEE
(0015)
(0016) 说 明: 若用于商业用途,请保留此段文字或注明代码来源
(0017)
(0018) 深 圳 微 雪 电 子 保 留 所 有 的 版 权
(0019) *********************************************************************/
(0020)
(0021) /*01010101010101010101010101010101010101010101010101010101010101010101
(0022) ----------------------------------------------------------------------
(0023) 版本更新记录:
(0024)
(0025) ----------------------------------------------------------------------
(0026)
(0027) 接入模块: LinkKeyBoard
(0028) 接口说明: LinkKeyBoard M16SmartGuider
(0029) K0 --------- PA0
(0030) K1 --------- PA1
(0031) K2 --------- PA2
(0032) K3 --------- PA3
(0033) K4 --------- PA4
(0034) K5 --------- PA5
(0035) K6 --------- PA6
(0036) K7 --------- PA7
(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_PORT 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)
(0063) KEY_DDR = 0X01;
_scanKey:
00D2 E081 LDI R24,1
00D3 BB8A OUT 0x1A,R24
(0064) KEY_PORT = 0xFE;
00D4 EF8E LDI R24,0xFE
00D5 BB8B OUT 0x1B,R24
(0065) delay50us(1);
00D6 E001 LDI R16,1
00D7 E010 LDI R17,0
00D8 DFD1 RCALL _delay50us
(0066) if(KEY_PIN==0xFC)
00D9 B389 IN R24,0x19
00DA 3F8C CPI R24,0xFC
00DB F411 BNE 0x00DE
(0067) LED_PORT=0x01;
00DC E081 LDI R24,1
00DD BB88 OUT 0x18,R24
(0068) if(KEY_PIN==0xFA)
00DE B389 IN R24,0x19
00DF 3F8A CPI R24,0xFA
00E0 F411 BNE 0x00E3
(0069) LED_PORT=0x02;
00E1 E082 LDI R24,2
00E2 BB88 OUT 0x18,R24
(0070) if(KEY_PIN==0xF6)
00E3 B389 IN R24,0x19
00E4 3F86 CPI R24,0xF6
00E5 F411 BNE 0x00E8
(0071) LED_PORT=0x03;
00E6 E083 LDI R24,3
00E7 BB88 OUT 0x18,R24
(0072) if(KEY_PIN==0xEE)
00E8 B389 IN R24,0x19
00E9 3E8E CPI R24,0xEE
00EA F411 BNE 0x00ED
(0073) LED_PORT=0x04;
00EB E084 LDI R24,4
00EC BB88 OUT 0x18,R24
(0074) if(KEY_PIN==0xDE)
00ED B389 IN R24,0x19
00EE 3D8E CPI R24,0xDE
00EF F411 BNE 0x00F2
(0075) LED_PORT=0x05;
00F0 E085 LDI R24,5
00F1 BB88 OUT 0x18,R24
(0076) if(KEY_PIN==0xBE)
00F2 B389 IN R24,0x19
00F3 3B8E CPI R24,0xBE
00F4 F411 BNE 0x00F7
(0077) LED_PORT=0x06;
00F5 E086 LDI R24,6
00F6 BB88 OUT 0x18,R24
(0078) if(KEY_PIN==0x7E)
00F7 B389 IN R24,0x19
00F8 378E CPI R24,0x7E
00F9 F411 BNE 0x00FC
(0079) LED_PORT=0x07;
00FA E087 LDI R24,7
00FB BB88 OUT 0x18,R24
(0080)
(0081) KEY_DDR = 0X02;
00FC E082 LDI R24,2
00FD BB8A OUT 0x1A,R24
(0082) KEY_PORT = 0xFD;
00FE EF8D LDI R24,0xFD
00FF BB8B OUT 0x1B,R24
(0083) delay50us(1);
0100 E001 LDI R16,1
0101 E010 LDI R17,0
0102 DFA7 RCALL _delay50us
(0084) if(KEY_PIN==0xF9)
0103 B389 IN R24,0x19
0104 3F89 CPI R24,0xF9
0105 F411 BNE 0x0108
(0085) LED_PORT=0x08;
0106 E088 LDI R24,0x8
0107 BB88 OUT 0x18,R24
(0086) if(KEY_PIN==0xF5)
0108 B389 IN R24,0x19
0109 3F85 CPI R24,0xF5
010A F411 BNE 0x010D
(0087) LED_PORT=0x09;
010B E089 LDI R24,0x9
010C BB88 OUT 0x18,R24
(0088) if(KEY_PIN==0xED)
010D B389 IN R24,0x19
010E 3E8D CPI R24,0xED
010F F411 BNE 0x0112
(0089) LED_PORT=0x0A;
0110 E08A LDI R24,0xA
0111 BB88 OUT 0x18,R24
(0090) if(KEY_PIN==0xDD)
0112 B389 IN R24,0x19
0113 3D8D CPI R24,0xDD
0114 F411 BNE 0x0117
(0091) LED_PORT=0x0B;
0115 E08B LDI R24,0xB
0116 BB88 OUT 0x18,R24
(0092) if(KEY_PIN==0xBD)
0117 B389 IN R24,0x19
0118 3B8D CPI R24,0xBD
0119 F411 BNE 0x011C
(0093) LED_PORT=0x0C;
011A E08C LDI R24,0xC
011B BB88 OUT 0x18,R24
(0094) if(KEY_PIN==0x7D)
011C B389 IN R24,0x19
011D 378D CPI R24,0x7D
011E F411 BNE 0x0121
(0095) LED_PORT=0x0D;
011F E08D LDI R24,0xD
0120 BB88 OUT 0x18,R24
(0096)
(0097) KEY_DDR = 0X04;
0121 E084 LDI R24,4
0122 BB8A OUT 0x1A,R24
(0098) KEY_PORT = 0xFB;
0123 EF8B LDI R24,0xFB
0124 BB8B OUT 0x1B,R24
(0099) delay50us(1);
0125 E001 LDI R16,1
0126 E010 LDI R17,0
0127 DF82 RCALL _delay50us
(0100) if(KEY_PIN==0xF3)
0128 B389 IN R24,0x19
0129 3F83 CPI R24,0xF3
012A F411 BNE 0x012D
(0101) LED_PORT=0x0E;
012B E08E LDI R24,0xE
012C BB88 OUT 0x18,R24
(0102) if(KEY_PIN==0xEB)
012D B389 IN R24,0x19
012E 3E8B CPI R24,0xEB
012F F411 BNE 0x0132
(0103) LED_PORT=0x10;
0130 E180 LDI R24,0x10
0131 BB88 OUT 0x18,R24
(0104) if(KEY_PIN==0xDB)
0132 B389 IN R24,0x19
0133 3D8B CPI R24,0xDB
0134 F411 BNE 0x0137
(0105) LED_PORT=0x11;
0135 E181 LDI R24,0x11
0136 BB88 OUT 0x18,R24
(0106) if(KEY_PIN==0xBB)
0137 B389 IN R24,0x19
0138 3B8B CPI R24,0xBB
0139 F411 BNE 0x013C
(0107) LED_PORT=0x12;
013A E182 LDI R24,0x12
013B BB88 OUT 0x18,R24
(0108) if(KEY_PIN==0x7B)
013C B389 IN R24,0x19
013D 378B CPI R24,0x7B
013E F411 BNE 0x0141
(0109) LED_PORT=0x13;
013F E183 LDI R24,0x13
0140 BB88 OUT 0x18,R24
(0110)
(0111) KEY_DDR = 0X08;
0141 E088 LDI R24,0x8
0142 BB8A OUT 0x1A,R24
(0112) KEY_PORT = 0xF7;
0143 EF87 LDI R24,0xF7
0144 BB8B OUT 0x1B,R24
(0113) delay50us(1);
0145 E001 LDI R16,1
0146 E010 LDI R17,0
0147 DF62 RCALL _delay50us
(0114) if(KEY_PIN==0xE7)
0148 B389 IN R24,0x19
0149 3E87 CPI R24,0xE7
014A F411 BNE 0x014D
(0115) LED_PORT=0x14;
014B E184 LDI R24,0x14
014C BB88 OUT 0x18,R24
(0116) if(KEY_PIN==0xD7)
014D B389 IN R24,0x19
014E 3D87 CPI R24,0xD7
014F F411 BNE 0x0152
(0117) LED_PORT=0x15;
0150 E185 LDI R24,0x15
0151 BB88 OUT 0x18,R24
(0118) if(KEY_PIN==0xB7)
0152 B389 IN R24,0x19
0153 3B87 CPI R24,0xB7
0154 F411 BNE 0x0157
(0119) LED_PORT=0x16;
0155 E186 LDI R24,0x16
0156 BB88 OUT 0x18,R24
(0120) if(KEY_PIN==0x77)
0157 B389 IN R24,0x19
0158 3787 CPI R24,0x77
0159 F411 BNE 0x015C
(0121) LED_PORT=0x17;
015A E187 LDI R24,0x17
015B BB88 OUT 0x18,R24
(0122)
(0123) KEY_DDR = 0X10;
015C E180 LDI R24,0x10
015D BB8A OUT 0x1A,R24
(0124) KEY_PORT = 0xEF;
015E EE8F LDI R24,0xEF
015F BB8B OUT 0x1B,R24
(0125) delay50us(1);
0160 E001 LDI R16,1
0161 E010 LDI R17,0
0162 DF47 RCALL _delay50us
(0126) if(KEY_PIN==0xCF)
0163 B389 IN R24,0x19
0164 3C8F CPI R24,0xCF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -