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

📄 matrixkey_.lis

📁 ATmega16应用例子
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 010E 00FF              sbrs R16,0
 0110 02C0              rjmp L25
 0112                   .dbline 81
 0112 D89A              sbi 0x1b,0
 0114 01C0              xjmp L26
 0116           L25:
 0116                   .dbline 83
 0116 D898              cbi 0x1b,0
 0118           L26:
 0118                   .dbline 85
 0118 01FF              sbrs R16,1
 011A 02C0              rjmp L27
 011C                   .dbline 86
 011C D99A              sbi 0x1b,1
 011E 01C0              xjmp L28
 0120           L27:
 0120                   .dbline 88
 0120 D998              cbi 0x1b,1
 0122           L28:
 0122                   .dbline 90
 0122 02FF              sbrs R16,2
 0124 02C0              rjmp L29
 0126                   .dbline 91
 0126 DA9A              sbi 0x1b,2
 0128 01C0              xjmp L30
 012A           L29:
 012A                   .dbline 93
 012A DA98              cbi 0x1b,2
 012C           L30:
 012C                   .dbline 95
 012C 03FF              sbrs R16,3
 012E 02C0              rjmp L31
 0130                   .dbline 96
 0130 DB9A              sbi 0x1b,3
 0132 01C0              xjmp L32
 0134           L31:
 0134                   .dbline 98
 0134 DB98              cbi 0x1b,3
 0136           L32:
 0136                   .dbline -2
 0136                   .dbline 99
 0136           L24:
 0136                   .dbline 0 ; func end
 0136 0895              ret
 0138                   .dbsym r status 16 c
 0138                   .dbend
 0138                   .dbfunc e KeyBoard_getSta _KeyBoard_getSta fc
 0138           ;         status -> R16
                        .even
 0138           _KeyBoard_getSta::
 0138                   .dbline -1
 0138                   .dbline 102
 0138                   .dbline 103
 0138 00EF              ldi R16,240
 013A                   .dbline 105
 013A CC99              sbic 0x19,4
 013C 01C0              rjmp L34
 013E                   .dbline 106
 013E 00EE              ldi R16,224
 0140           L34:
 0140                   .dbline 108
 0140 CD99              sbic 0x19,5
 0142 01C0              rjmp L36
 0144                   .dbline 109
 0144 00ED              ldi R16,208
 0146           L36:
 0146                   .dbline 111
 0146 CE99              sbic 0x19,6
 0148 01C0              rjmp L38
 014A                   .dbline 112
 014A 00EB              ldi R16,176
 014C           L38:
 014C                   .dbline 114
 014C CF99              sbic 0x19,7
 014E 01C0              rjmp L40
 0150                   .dbline 115
 0150 00E7              ldi R16,112
 0152           L40:
 0152                   .dbline 117
 0152                   .dbline -2
 0152           L33:
 0152                   .dbline 0 ; func end
 0152 0895              ret
 0154                   .dbsym r status 16 c
 0154                   .dbend
                        .area lit(rom, con, rel)
 0000           _setSta_::
 0000 FEFD              .byte 254,253
 0002 FBF7              .byte 251,247
 0004                   .dbsym e setSta_ _setSta_ A[4:4]kc
 0004           _getSta_::
 0004 70B0              .byte 'p,176
 0006 D0E0              .byte 208,224
 0008                   .dbsym e getSta_ _getSta_ A[4:4]kc
                        .area text(rom, con, rel)
 0154                   .dbfile E:\ProductPro\M16SD\ICCAVR\MatrixKeyBoard\MatrixKeyBoard\MatrixKey_.c
 0154                   .dbfunc e GetKeyVal _GetKeyVal fc
 0154           ;         keyVal -> R12
 0154           ;              i -> R20
 0154           ;         getSta -> R10
 0154           ;              j -> R22
                        .even
 0154           _GetKeyVal::
 0154 0E940000          xcall push_gset4
 0158                   .dbline -1
 0158                   .dbline 144
 0158           ; 函数名称:
 0158           ; 函数功能:查询按键
 0158           ; 注意事项:
 0158           ; 提示说明:
 0158           ; 输    入:
 0158           ; 返    回:
 0158           ; --------------------------------------------------------------------*/
 0158           ; /*
 0158           ;       K4-----K5-----K6-----K7
 0158           ;      |      |      |      |
 0158           ;       03H----02H----01H----00H -K0
 0158           ;       07H----06H----05H----04H -K1
 0158           ;       0BH----0AH----09H----08H -K2
 0158           ;       0FH----0EH----0DH----0CH -K3
 0158           ; */
 0158           ; const uint8 setSta_[4]={0xfe,0xfd,0xfb,0xf7}; 
 0158           ; const uint8 getSta_[4]={0x70,0xb0,0xd0,0xe0};   
 0158           ; uint8 GetKeyVal()
 0158           ; {
 0158                   .dbline 147
 0158           ;       uint8 i,j,getSta,keyVal;
 0158           ; 
 0158           ;       for(i=0;i<4;i++)              
 0158 4427              clr R20
 015A 24C0              xjmp L46
 015C           L43:
 015C                   .dbline 148
 015C           ;       {                                                       
 015C                   .dbline 150
 015C           ;               //KEY_PORT = setSta_[i];
 015C           ;               KeyBoard_setSta(setSta_[i]);
 015C 80E0              ldi R24,<_setSta_
 015E 90E0              ldi R25,>_setSta_
 0160 E42F              mov R30,R20
 0162 FF27              clr R31
 0164 E80F              add R30,R24
 0166 F91F              adc R31,R25
 0168 0491              lpm R16,Z
 016A D1DF              xcall _KeyBoard_setSta
 016C                   .dbline 151
 016C           ;               delay50us(1);           
 016C 01E0              ldi R16,1
 016E 10E0              ldi R17,0
 0170 A6DF              xcall _delay50us
 0172                   .dbline 153
 0172           ;               //if(KEY_PIN!=setSta_[i])
 0172           ;               getSta = KeyBoard_getSta();
 0172 E2DF              xcall _KeyBoard_getSta
 0174 A02E              mov R10,R16
 0176                   .dbline 155
 0176           ;               //if( getSta!=setSta_[i] )
 0176           ;               if( getSta!=0xF0 )
 0176 003F              cpi R16,240
 0178 A1F0              breq L47
 017A                   .dbline 156
 017A           ;               {
 017A                   .dbline 159
 017A           ;                       //getSta = KEY_PIN&0xf0;
 017A           ;                       //getSta = KeyBoard_getSta();
 017A           ;                       for(j=0;j<4;j++)    
 017A 6627              clr R22
 017C 10C0              xjmp L52
 017E           L49:
 017E                   .dbline 160
 017E           ;                               if(getSta==getSta_[j])                                 
 017E 80E0              ldi R24,<_getSta_
 0180 90E0              ldi R25,>_getSta_
 0182 E62F              mov R30,R22
 0184 FF27              clr R31
 0186 E80F              add R30,R24
 0188 F91F              adc R31,R25
 018A E491              lpm R30,Z
 018C AE16              cp R10,R30
 018E 31F4              brne L53
 0190                   .dbline 161
 0190           ;                               {
 0190                   .dbline 162
 0190           ;                                       keyVal=j+i*4;
 0190 84E0              ldi R24,4
 0192 849F              mul R24,R20
 0194 C62E              mov R12,R22
 0196 C00C              add R12,R0
 0198                   .dbline 163
 0198           ;                                       return keyVal;
 0198 0C2D              mov R16,R12
 019A 07C0              xjmp L42
 019C           L53:
 019C           L50:
 019C                   .dbline 159
 019C 6395              inc R22
 019E           L52:
 019E                   .dbline 159
 019E 6430              cpi R22,4
 01A0 70F3              brlo L49
 01A2                   .dbline 165
 01A2           ;                               }
 01A2           ;               }
 01A2           L47:
 01A2                   .dbline 166
 01A2           L44:
 01A2                   .dbline 147
 01A2 4395              inc R20
 01A4           L46:
 01A4                   .dbline 147
 01A4 4430              cpi R20,4
 01A6 D0F2              brlo L43
 01A8                   .dbline 167
 01A8           ;       }
 01A8           ;       return 0xFF;
 01A8 0FEF              ldi R16,255
 01AA                   .dbline -2
 01AA           L42:
 01AA 0E940000          xcall pop_gset4
 01AE                   .dbline 0 ; func end
 01AE 0895              ret
 01B0                   .dbsym r keyVal 12 c
 01B0                   .dbsym r i 20 c
 01B0                   .dbsym r getSta 10 c
 01B0                   .dbsym r j 22 c
 01B0                   .dbend
 01B0                   .dbfunc e KeyBoard_init _KeyBoard_init fV
                        .even
 01B0           _KeyBoard_init::
 01B0                   .dbline -1
 01B0                   .dbline 178
 01B0           ; }
 01B0           ; /*--------------------------------------------------------------------
 01B0           ; 函数名称:
 01B0           ; 函数功能:
 01B0           ; 注意事项:
 01B0           ; 提示说明:
 01B0           ; 输    入:
 01B0           ; 返    回:
 01B0           ; --------------------------------------------------------------------*/
 01B0           ; void KeyBoard_init()
 01B0           ; {
 01B0                   .dbline 179
 01B0           ;       OUT_K0;    
 01B0 D09A              sbi 0x1a,0
 01B2                   .dbline 180
 01B2           ;       OUT_K1;    
 01B2 D19A              sbi 0x1a,1
 01B4                   .dbline 181
 01B4           ;       OUT_K2;         
 01B4 D29A              sbi 0x1a,2
 01B6                   .dbline 182
 01B6           ;       OUT_K3;         
 01B6 D39A              sbi 0x1a,3
 01B8                   .dbline 183
 01B8           ;       IN_K4;          
 01B8 D498              cbi 0x1a,4
 01BA                   .dbline 184
 01BA           ;       IN_K5;    
 01BA D598              cbi 0x1a,5
 01BC                   .dbline 185
 01BC           ;       IN_K6;   
 01BC D698              cbi 0x1a,6
 01BE                   .dbline 186
 01BE           ;       IN_K7;    
 01BE D798              cbi 0x1a,7
 01C0                   .dbline 187
 01C0           ;       SET_K4;         
 01C0 DC9A              sbi 0x1b,4
 01C2                   .dbline 188
 01C2           ;       SET_K5;         
 01C2 DD9A              sbi 0x1b,5
 01C4                   .dbline 189
 01C4           ;       SET_K6;         
 01C4 DE9A              sbi 0x1b,6
 01C6                   .dbline 190
 01C6           ;       SET_K7;         
 01C6 DF9A              sbi 0x1b,7
 01C8                   .dbline -2
 01C8                   .dbline 191
 01C8           ; }
 01C8           L55:
 01C8                   .dbline 0 ; func end
 01C8 0895              ret
 01CA                   .dbend
 01CA                   .dbfunc e main _main fV
 01CA           ;         keyVal -> R20
                        .even
 01CA           _main::
 01CA                   .dbline -1
 01CA                   .dbline 201
 01CA           ; /*--------------------------------------------------------------------
 01CA           ; 函数名称:
 01CA           ; 函数功能:
 01CA           ; 注意事项:
 01CA           ; 提示说明:
 01CA           ; 输    入:
 01CA           ; 返    回:
 01CA           ; --------------------------------------------------------------------*/
 01CA           ; void main()
 01CA           ; {
 01CA                   .dbline 203
 01CA           ;       uint8 keyVal;
 01CA           ;       LED_DDR = 0XFF;
 01CA 8FEF              ldi R24,255
 01CC 87BB              out 0x17,R24
 01CE                   .dbline 204
 01CE           ;       KeyBoard_init();                
 01CE F0DF              xcall _KeyBoard_init
 01D0 05C0              xjmp L58
 01D2           L57:
 01D2                   .dbline 206
 01D2           ;       while(1)
 01D2           ;       {
 01D2                   .dbline 207
 01D2           ;               keyVal = GetKeyVal();
 01D2 C0DF              xcall _GetKeyVal
 01D4 402F              mov R20,R16
 01D6                   .dbline 208
 01D6           ;               if( keyVal!=0xFF )              
 01D6 0F3F              cpi R16,255
 01D8 09F0              breq L60
 01DA                   .dbline 209
 01DA           ;                       LED_PORT = keyVal;
 01DA 08BB              out 0x18,R16
 01DC           L60:
 01DC                   .dbline 210
 01DC           L58:
 01DC                   .dbline 205
 01DC FACF              xjmp L57
 01DE           X1:
 01DE                   .dbline -2
 01DE                   .dbline 211
 01DE           ;       }
 01DE           ; }
 01DE           L56:
 01DE                   .dbline 0 ; func end
 01DE 0895              ret
 01E0                   .dbsym r keyVal 20 c
 01E0                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\ProductPro\M16SD\ICCAVR\MatrixKeyBoard\MatrixKeyBoard\MatrixKey_.c
 0000           _dataElem::
 0000                   .blkb 6
 0006                   .dbfile E:\ICC_H\SoftExt.H
 0006                   .dbsym e dataElem _dataElem A[6:6]c

⌨️ 快捷键说明

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