📄 linkkey.lis
字号:
.module LinkKey.c
.area text(rom, con, rel)
0000 .dbfile E:\ICC_H\SoftExt.H
0000 .dbfunc e speaData _speaData fV
0000 ; y -> y+4
0000 ; j -> y+0
0000 ; i -> R10
0000 ; len -> R12
0000 ; dat -> y+16
.even
0000 _speaData::
0000 0E940000 xcall push_arg4
0004 0E940000 xcall push_gset4
0008 2897 sbiw R28,8
000A CC88 ldd R12,y+20
000C .dbline -1
000C .dbline 116
000C ; /*********************************************************************
000C ; 微 雪 电 子 WaveShare http://www.waveShare.net
000C ;
000C ; 目 的: 测试"LinkKeyBoard"模块
000C ;
000C ; 目标系统: 基于任何AVR单片机
000C ;
000C ; 应用软件: ICCAVR
000C ;
000C ; 版 本: Version 1.0
000C ;
000C ; 圆版时间: 2005-03-2
000C ;
000C ; 开发人员: SEE
000C ;
000C ; 说 明: 若用于商业用途,请保留此段文字或注明代码来源
000C ;
000C ; 深 圳 微 雪 电 子 保 留 所 有 的 版 权
000C ; *********************************************************************/
000C ;
000C ; /*01010101010101010101010101010101010101010101010101010101010101010101
000C ; ----------------------------------------------------------------------
000C ; 版本更新记录:
000C ;
000C ; ----------------------------------------------------------------------
000C ;
000C ; 接入模块: LinkKeyBoard
000C ; 接口说明: LinkKeyBoard M16SmartGuider
000C ; K0 --------- PA0
000C ; K1 --------- PA1
000C ; K2 --------- PA2
000C ; K3 --------- PA3
000C ; K4 --------- PA4
000C ; K5 --------- PA5
000C ; K6 --------- PA6
000C ; K7 --------- PA7
000C ; ----------------------------------------------------------------------
000C ; 注意事项:
000C ; * 将相应的LED-SW短接使能
000C ; ----------------------------------------------------------------------
000C ; 10101010101010101010101010101010101010101010101010101010101010101010*/
000C ;
000C ; #include <iom16v.h>
000C ; #include "E:\ICC_H\CmmICC.H"
000C ;
000C ; #define LED_DDR DDRB
000C ; #define LED_PORT PORTB
000C ; #define KEY_DDR DDRA
000C ; #define KEY_PORT PORTA
000C ; #define KEY_PIN PINA
000C ;
000C ; /*--------------------------------------------------------------------
000C ; 函数名称:
000C ; 函数功能:键盘检测
000C ; 注意事项:
000C ; 提示说明:
000C ; 输 入:
000C ; 返 回:
000C ; --------------------------------------------------------------------*/
000C ; void scanKey()
000C ; {
000C ;
000C ; KEY_DDR = 0X01;
000C ; KEY_PORT = 0xFE;
000C ; delay50us(1);
000C ; if(KEY_PIN==0xFC)
000C ; LED_PORT=0x01;
000C ; if(KEY_PIN==0xFA)
000C ; LED_PORT=0x02;
000C ; if(KEY_PIN==0xF6)
000C ; LED_PORT=0x03;
000C ; if(KEY_PIN==0xEE)
000C ; LED_PORT=0x04;
000C ; if(KEY_PIN==0xDE)
000C ; LED_PORT=0x05;
000C ; if(KEY_PIN==0xBE)
000C ; LED_PORT=0x06;
000C ; if(KEY_PIN==0x7E)
000C ; LED_PORT=0x07;
000C ;
000C ; KEY_DDR = 0X02;
000C ; KEY_PORT = 0xFD;
000C ; delay50us(1);
000C ; if(KEY_PIN==0xF9)
000C ; LED_PORT=0x08;
000C ; if(KEY_PIN==0xF5)
000C ; LED_PORT=0x09;
000C ; if(KEY_PIN==0xED)
000C ; LED_PORT=0x0A;
000C ; if(KEY_PIN==0xDD)
000C ; LED_PORT=0x0B;
000C ; if(KEY_PIN==0xBD)
000C ; LED_PORT=0x0C;
000C ; if(KEY_PIN==0x7D)
000C ; LED_PORT=0x0D;
000C ;
000C ; KEY_DDR = 0X04;
000C ; KEY_PORT = 0xFB;
000C ; delay50us(1);
000C ; if(KEY_PIN==0xF3)
000C ; LED_PORT=0x0E;
000C ; if(KEY_PIN==0xEB)
000C ; LED_PORT=0x10;
000C ; if(KEY_PIN==0xDB)
000C ; LED_PORT=0x11;
000C ; if(KEY_PIN==0xBB)
000C ; LED_PORT=0x12;
000C ; if(KEY_PIN==0x7B)
000C ; LED_PORT=0x13;
000C ;
000C ; KEY_DDR = 0X08;
000C ; KEY_PORT = 0xF7;
000C ; delay50us(1);
000C ; if(KEY_PIN==0xE7)
000C ; LED_PORT=0x14;
000C ; if(KEY_PIN==0xD7)
000C .dbline 119
000C ; LED_PORT=0x15;
000C ; if(KEY_PIN==0xB7)
000C ; LED_PORT=0x16;
000C AA24 clr R10
000E 41E0 ldi R20,1
0010 50E0 ldi R21,0
0012 60E0 ldi R22,0
0014 70E0 ldi R23,0
0016 FE01 movw R30,R28
0018 4083 std z+0,R20
001A 5183 std z+1,R21
001C 6283 std z+2,R22
001E 7383 std z+3,R23
0020 46C0 xjmp L5
0022 L2:
0022 .dbline 120
0022 .dbline 121
0022 FE01 movw R30,R28
0024 2080 ldd R2,z+0
0026 3180 ldd R3,z+1
0028 4280 ldd R4,z+2
002A 5380 ldd R5,z+3
002C FE01 movw R30,R28
002E 6088 ldd R6,z+16
0030 7188 ldd R7,z+17
0032 8288 ldd R8,z+18
0034 9388 ldd R9,z+19
0036 5A92 st -y,R5
0038 4A92 st -y,R4
003A 3A92 st -y,R3
003C 2A92 st -y,R2
003E 8301 movw R16,R6
0040 9401 movw R18,R8
0042 0E940000 xcall div32u
0046 FE01 movw R30,R28
0048 0483 std z+4,R16
004A 1583 std z+5,R17
004C 2683 std z+6,R18
004E 3783 std z+7,R19
0050 .dbline 122
0050 4AE0 ldi R20,10
0052 50E0 ldi R21,0
0054 60E0 ldi R22,0
0056 70E0 ldi R23,0
0058 FE01 movw R30,R28
005A 2480 ldd R2,z+4
005C 3580 ldd R3,z+5
005E 4680 ldd R4,z+6
0060 5780 ldd R5,z+7
0062 7A93 st -y,R23
0064 6A93 st -y,R22
0066 5A93 st -y,R21
0068 4A93 st -y,R20
006A 8101 movw R16,R2
006C 9201 movw R18,R4
006E 0E940000 xcall mod32u
0072 80E0 ldi R24,<_dataElem
0074 90E0 ldi R25,>_dataElem
0076 EA2D mov R30,R10
0078 FF27 clr R31
007A E80F add R30,R24
007C F91F adc R31,R25
007E 0083 std z+0,R16
0080 .dbline 123
0080 FE01 movw R30,R28
0082 2080 ldd R2,z+0
0084 3180 ldd R3,z+1
0086 4280 ldd R4,z+2
0088 5380 ldd R5,z+3
008A 4AE0 ldi R20,10
008C 50E0 ldi R21,0
008E 60E0 ldi R22,0
0090 70E0 ldi R23,0
0092 5A92 st -y,R5
0094 4A92 st -y,R4
0096 3A92 st -y,R3
0098 2A92 st -y,R2
009A 8A01 movw R16,R20
009C 9B01 movw R18,R22
009E 0E940000 xcall empy32u
00A2 FE01 movw R30,R28
00A4 0083 std z+0,R16
00A6 1183 std z+1,R17
00A8 2283 std z+2,R18
00AA 3383 std z+3,R19
00AC .dbline 124
00AC L3:
00AC .dbline 119
00AC A394 inc R10
00AE L5:
00AE .dbline 119
00AE AC14 cp R10,R12
00B0 08F4 brsh X0
00B2 B7CF xjmp L2
00B4 X0:
00B4 .dbline -2
00B4 .dbline 125
00B4 ; if(KEY_PIN==0x77)
00B4 ; LED_PORT=0x17;
00B4 ;
00B4 ; KEY_DDR = 0X10;
00B4 ; KEY_PORT = 0xEF;
00B4 ; delay50us(1);
00B4 L1:
00B4 2896 adiw R28,8
00B6 0E940000 xcall pop_gset4
00BA 2496 adiw R28,4
00BC .dbline 0 ; func end
00BC 0895 ret
00BE .dbsym l y 4 l
00BE .dbsym l j 0 l
00BE .dbsym r i 10 c
00BE .dbsym r len 12 C
00BE .dbsym l dat 16 l
00BE .dbend
00BE .dbfile E:\ICC_H\HardExt.H
00BE .dbfunc e delay50us _delay50us fV
00BE ; j -> R20
00BE ; t -> R16,R17
.even
00BE _delay50us::
00BE 0E940000 xcall push_gset1
00C2 .dbline -1
00C2 .dbline 98
00C2 .dbline 100
00C2 07C0 xjmp L10
00C4 L7:
00C4 .dbline 101
00C4 4427 clr R20
00C6 01C0 xjmp L14
00C8 L11:
00C8 .dbline 102
00C8 L12:
00C8 .dbline 101
00C8 4395 inc R20
00CA L14:
00CA .dbline 101
00CA 4634 cpi R20,70
00CC E8F3 brlo L11
00CE L8:
00CE .dbline 100
00CE 0150 subi R16,1
00D0 1040 sbci R17,0
00D2 L10:
00D2 .dbline 100
00D2 2224 clr R2
00D4 3324 clr R3
00D6 2016 cp R2,R16
00D8 3106 cpc R3,R17
00DA A4F3 brlt L7
00DC .dbline -2
00DC .dbline 103
00DC L6:
00DC 0E940000 xcall pop_gset1
00E0 .dbline 0 ; func end
00E0 0895 ret
00E2 .dbsym r j 20 c
00E2 .dbsym r t 16 I
00E2 .dbend
00E2 .dbfunc e delay50ms _delay50ms fV
00E2 ; i -> R20,R21
00E2 ; t -> R16,R17
.even
00E2 _delay50ms::
00E2 0E940000 xcall push_gset1
00E6 .dbline -1
00E6 .dbline 113
00E6 .dbline 115
00E6 0BC0 xjmp L19
00E8 L16:
00E8 .dbline 116
00E8 4427 clr R20
00EA 5527 clr R21
00EC 02C0 xjmp L23
00EE L20:
00EE .dbline 117
00EE L21:
00EE .dbline 116
00EE 4F5F subi R20,255 ; offset = 1
00F0 5F4F sbci R21,255
00F2 L23:
00F2 .dbline 116
00F2 423A cpi R20,162
00F4 EDEC ldi R30,205
00F6 5E07 cpc R21,R30
00F8 D0F3 brlo L20
00FA L17:
00FA .dbline 115
00FA 0150 subi R16,1
00FC 1040 sbci R17,0
00FE L19:
00FE .dbline 115
00FE 2224 clr R2
0100 3324 clr R3
0102 2016 cp R2,R16
0104 3106 cpc R3,R17
0106 84F3 brlt L16
0108 .dbline -2
0108 .dbline 118
0108 L15:
0108 0E940000 xcall pop_gset1
010C .dbline 0 ; func end
010C 0895 ret
010E .dbsym r i 20 i
010E .dbsym r t 16 I
010E .dbend
010E .dbfile E:\ProductPro\M16SD\ICCAVR\LinkKeyBoard\LinkKeyBoard\LinkKey.c
010E .dbfunc e scanKey _scanKey fV
.even
010E _scanKey::
010E .dbline -1
010E .dbline 61
010E .dbline 63
010E 81E0 ldi R24,1
0110 8ABB out 0x1a,R24
0112 .dbline 64
0112 8EEF ldi R24,254
0114 8BBB out 0x1b,R24
0116 .dbline 65
0116 01E0 ldi R16,1
0118 10E0 ldi R17,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -