📄 matrixkey_.lis
字号:
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 + -