?? ex_support.lis
字號:
0144 8E63 ori R24,62
0146 85BB out 0x15,R24
0148 .dbline 275
0148 ; BIT(4) | BIT(5); //全部端口拉高
0148 ; NOP();
0148 0000 nop
014A .dbline 276
014A ; NOP();
014A 0000 nop
014C .dbline 279
014C ;
014C ;
014C ; if (!(PINC & (BIT(1)))) //讀取pc1端口,如果返回值是0則表明按鍵被按下,
014C 9999 sbic 0x13,1
014E 02C0 rjmp L45
0150 X17:
0150 .dbline 281
0150 ; //則返回按鍵的值
0150 ; {
0150 .dbline 282
0150 ; chTempKeyCode = 21;
0150 .dbline 283
0150 ; return chTempKeyCode;
0150 05E1 ldi R16,21
0152 B1C0 rjmp L44
0154 L45:
0154 .dbline 285
0154 ; }
0154 ; else if (!(PINC & (BIT(2)))) //讀取pc2端口,如果返回值是0則表明按鍵被按下,
0154 9A99 sbic 0x13,2
0156 02C0 rjmp L47
0158 X18:
0158 .dbline 287
0158 ; //則返回按鍵的值,下面以此類推。
0158 ; {
0158 .dbline 288
0158 ; chTempKeyCode = 22;
0158 .dbline 289
0158 ; return chTempKeyCode;
0158 06E1 ldi R16,22
015A ADC0 rjmp L44
015C L47:
015C .dbline 291
015C ; }
015C ; else if (!(PINC & (BIT(3))))
015C 9B99 sbic 0x13,3
015E 02C0 rjmp L49
0160 X19:
0160 .dbline 292
0160 ; {
0160 .dbline 293
0160 ; chTempKeyCode = 23;
0160 .dbline 294
0160 ; return chTempKeyCode;
0160 07E1 ldi R16,23
0162 A9C0 rjmp L44
0164 L49:
0164 .dbline 296
0164 ; }
0164 ; else if (!(PINC & (BIT(4))))
0164 9C99 sbic 0x13,4
0166 02C0 rjmp L51
0168 X20:
0168 .dbline 297
0168 ; {
0168 .dbline 298
0168 ; chTempKeyCode = 24;
0168 .dbline 299
0168 ; return chTempKeyCode;
0168 08E1 ldi R16,24
016A A5C0 rjmp L44
016C L51:
016C .dbline 301
016C ; }
016C ; else if (!(PINC & (BIT(5))))
016C 9D99 sbic 0x13,5
016E 02C0 rjmp L53
0170 X21:
0170 .dbline 302
0170 ; {
0170 .dbline 303
0170 ; chTempKeyCode = 25;
0170 .dbline 304
0170 ; return chTempKeyCode;
0170 09E1 ldi R16,25
0172 A1C0 rjmp L44
0174 L53:
0174 .dbline 309
0174 ; }
0174 ;
0174 ; //////////////////////////////////////////////////////////////
0174 ; //對1-4按鈕進行掃描
0174 ; DDRC &= ~(BIT(2) | BIT(3) |
0174 84B3 in R24,0x14
0176 837C andi R24,195
0178 84BB out 0x14,R24
017A .dbline 311
017A ; BIT(4) | BIT(5)); //把端口pc2-pc5設置為輸入
017A ; DDRC |= BIT(1); //把pc1端口設為輸出
017A A19A sbi 0x14,1
017C .dbline 313
017C ;
017C ; PORTC |= BIT(1) | BIT(2) | BIT(3) |
017C 85B3 in R24,0x15
017E 8E63 ori R24,62
0180 85BB out 0x15,R24
0182 .dbline 316
0182 ; BIT(4) | BIT(5);
0182 ;
0182 ; PORTC &=~ BIT(1); //把pc1端口拉低
0182 A998 cbi 0x15,1
0184 .dbline 317
0184 ; NOP();
0184 0000 nop
0186 .dbline 318
0186 ; NOP();
0186 0000 nop
0188 .dbline 321
0188 ;
0188 ;
0188 ; if (!(PINC & (BIT(2)))) //讀取pc2端口,如果返回值是0則表明按鍵被按下,
0188 9A99 sbic 0x13,2
018A 02C0 rjmp L55
018C X22:
018C .dbline 325
018C ; //則返回按鍵的值
018C ; //以下依次對pc3、pc4、pc5逐個讀取值,如果返回值為0
018C ; //則返回相應按鍵值
018C ; {
018C .dbline 326
018C ; chTempKeyCode = 1;
018C .dbline 327
018C ; return chTempKeyCode;
018C 01E0 ldi R16,1
018E 93C0 rjmp L44
0190 L55:
0190 .dbline 329
0190 ; }
0190 ; else if (!(PINC & (BIT(3))))
0190 9B99 sbic 0x13,3
0192 02C0 rjmp L57
0194 X23:
0194 .dbline 330
0194 ; {
0194 .dbline 331
0194 ; chTempKeyCode = 2;
0194 .dbline 332
0194 ; return chTempKeyCode;
0194 02E0 ldi R16,2
0196 8FC0 rjmp L44
0198 L57:
0198 .dbline 334
0198 ; }
0198 ; else if (!(PINC & (BIT(4))))
0198 9C99 sbic 0x13,4
019A 02C0 rjmp L59
019C X24:
019C .dbline 335
019C ; {
019C .dbline 336
019C ; chTempKeyCode = 3;
019C .dbline 337
019C ; return chTempKeyCode;
019C 03E0 ldi R16,3
019E 8BC0 rjmp L44
01A0 L59:
01A0 .dbline 339
01A0 ; }
01A0 ; else if (!(PINC & (BIT(5))))
01A0 9D99 sbic 0x13,5
01A2 02C0 rjmp L61
01A4 X25:
01A4 .dbline 340
01A4 ; {
01A4 .dbline 341
01A4 ; chTempKeyCode = 4;
01A4 .dbline 342
01A4 ; return chTempKeyCode;
01A4 04E0 ldi R16,4
01A6 87C0 rjmp L44
01A8 L61:
01A8 .dbline 349
01A8 ; }
01A8 ;
01A8 ;
01A8 ; //////////////////////////////////////////////////////////////
01A8 ;
01A8 ; //對6-7按鈕進行掃描
01A8 ; DDRC &= ~(BIT(1) | BIT(3) |
01A8 84B3 in R24,0x14
01AA 857C andi R24,197
01AC 84BB out 0x14,R24
01AE .dbline 352
01AE ; BIT(4) | BIT(5));//把端口pc1,pc3-pc5設置為輸入
01AE ;
01AE ; DDRC |= BIT(2);//把pc2端口設為輸出
01AE A29A sbi 0x14,2
01B0 .dbline 354
01B0 ;
01B0 ; PORTC |= BIT(1) | BIT(2) | BIT(3) |
01B0 85B3 in R24,0x15
01B2 8E63 ori R24,62
01B4 85BB out 0x15,R24
01B6 .dbline 357
01B6 ; BIT(4) | BIT(5);
01B6 ;
01B6 ; PORTC &= ~BIT(2); //把pc2端口拉低
01B6 AA98 cbi 0x15,2
01B8 .dbline 358
01B8 ; NOP();
01B8 0000 nop
01BA .dbline 359
01BA ; NOP();
01BA 0000 nop
01BC .dbline 362
01BC ;
01BC ;
01BC ; if (!(PINC & (BIT(3)))) //讀取pc3端口,如果返回值是0則表明按鍵被按下,
01BC 9B99 sbic 0x13,3
01BE 02C0 rjmp L63
01C0 X26:
01C0 .dbline 366
01C0 ; //則返回按鍵的值
01C0 ; //以下依次對pc4、pc5逐個讀取值,如果返回值為0
01C0 ; //則返回相應按鍵值
01C0 ; {
01C0 .dbline 367
01C0 ; chTempKeyCode = 6;
01C0 .dbline 368
01C0 ; return chTempKeyCode;
01C0 06E0 ldi R16,6
01C2 79C0 rjmp L44
01C4 L63:
01C4 .dbline 370
01C4 ; }
01C4 ; else if (!(PINC & (BIT(4))))
01C4 9C99 sbic 0x13,4
01C6 02C0 rjmp L65
01C8 X27:
01C8 .dbline 371
01C8 ; {
01C8 .dbline 372
01C8 ; chTempKeyCode = 7;
01C8 .dbline 373
01C8 ; return chTempKeyCode;
01C8 07E0 ldi R16,7
01CA 75C0 rjmp L44
01CC L65:
01CC .dbline 375
01CC ; }
01CC ; else if (!(PINC & (BIT(5))))
01CC 9D99 sbic 0x13,5
01CE 02C0 rjmp L67
01D0 X28:
01D0 .dbline 376
01D0 ; {
01D0 .dbline 377
01D0 ; chTempKeyCode = 8;
01D0 .dbline 378
01D0 ; return chTempKeyCode;
01D0 08E0 ldi R16,8
01D2 71C0 rjmp L44
01D4 L67:
01D4 .dbline 384
01D4 ; }
01D4 ;
01D4 ; //////////////////////////////////////////////////////////////
01D4 ;
01D4 ; //對11-12按鈕進行掃描
01D4 ; DDRC &= ~(BIT(2) | BIT(1) |
01D4 84B3 in R24,0x14
01D6 897C andi R24,201
01D8 84BB out 0x14,R24
01DA .dbline 387
01DA ; BIT(4) | BIT(5));//把端口pc1-pc2,pc4-pc5設置為輸入
01DA ;
01DA ; DDRC |= BIT(3);//把pc3端口設為輸出
01DA A39A sbi 0x14,3
01DC .dbline 389
01DC ;
01DC ; PORTC |= BIT(1) | BIT(2) | BIT(3) |
01DC 85B3 in R24,0x15
01DE 8E63 ori R24,62
01E0 85BB out 0x15,R24
01E2 .dbline 392
01E2 ; BIT(4) | BIT(5);
01E2 ;
01E2 ; PORTC &= ~BIT(3);//把pc2端口拉低
01E2 AB98 cbi 0x15,3
01E4 .dbline 393
01E4 ; NOP();
01E4 0000 nop
01E6 .dbline 394
01E6 ; NOP();
01E6 0000 nop
01E8 .dbline 396
01E8 ;
01E8 ; if (!(PINC & (BIT(4)))) //讀取pc4端口,如果返回值是0則表明按鍵被按下,
01E8 9C99 sbic 0x13,4
01EA 02C0 rjmp L69
01EC X29:
01EC .dbline 399
01EC ; //則返回按鍵的值
01EC ;
01EC ; {
01EC .dbline 400
01EC ; chTempKeyCode = 11;
01EC .dbline 401
01EC ; return chTempKeyCode;
01EC 0BE0 ldi R16,11
01EE 63C0 rjmp L44
01F0 L69:
01F0 .dbline 403
01F0 ; }
01F0 ; else if (!(PINC & (BIT(5))))//讀取pc5端口,如果返回值是0則表明按鍵被按下,
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -