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

📄 key_scan.lis

📁 环保型IC卡门禁系统的C程序
💻 LIS
字号:
                        .module Key_Scan.C
                        .area text(rom, con, rel)
 0000                   .dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Key_Scan.C
 0000                   .dbfunc e Key_Scan _Key_Scan fc
 0000           ;          Key_1 -> R22
 0000           ;          Key_2 -> R20
                        .even
 0000           _Key_Scan::
 0000 00D0              rcall push_gset2
 0002                   .dbline -1
 0002                   .dbline 6
 0002           ; #include <iom8v.h>
 0002           ; #include <macros.h>
 0002           ; #include "lcd1602.h"
 0002           ; 
 0002           ; unsigned char Key_Scan(void)
 0002           ; {
 0002                   .dbline 7
 0002           ;   unsigned char Key_1 = 0 , Key_2 = 0 ;
 0002 6627              clr R22
 0004                   .dbline 7
 0004 4427              clr R20
 0006                   .dbline 11
 0006           ;   
 0006           ;   //CLI();
 0006           ;   
 0006           ;   if((PIND&0x04)==0)     
 0006 8299              sbic 0x10,2
 0008 02C0              rjmp L2
 000A                   .dbline 12
 000A           ;     Key_1 = 1 ;
 000A 61E0              ldi R22,1
 000C 07C0              rjmp L3
 000E           L2:
 000E                   .dbline 13
 000E           ;   else if((PIND&0x02)==0) 
 000E 8199              sbic 0x10,1
 0010 02C0              rjmp L4
 0012                   .dbline 14
 0012           ;     Key_1 = 2 ;
 0012 62E0              ldi R22,2
 0014 03C0              rjmp L5
 0016           L4:
 0016                   .dbline 15
 0016           ;   else if((PIND&0x01)==0)
 0016 8099              sbic 0x10,0
 0018 01C0              rjmp L6
 001A                   .dbline 16
 001A           ;     Key_1 = 3 ;
 001A 63E0              ldi R22,3
 001C           L6:
 001C           L5:
 001C           L3:
 001C                   .dbline 18
 001C           ;   
 001C           ;   PORTD = 0xf0 ;
 001C 80EF              ldi R24,240
 001E 82BB              out 0x12,R24
 0020                   .dbline 19
 0020           ;   DDRD  = 0x0f ;
 0020 8FE0              ldi R24,15
 0022 81BB              out 0x11,R24
 0024                   .dbline 21
 0024           ;   
 0024           ;   if((PIND&0x80)==0)       
 0024 8799              sbic 0x10,7
 0026 01C0              rjmp L8
 0028                   .dbline 22
 0028           ;     Key_1 += 0 ;
 0028 0BC0              rjmp L9
 002A           L8:
 002A                   .dbline 23
 002A           ;   else if((PIND&0x40)==0)  
 002A 8699              sbic 0x10,6
 002C 02C0              rjmp L10
 002E                   .dbline 24
 002E           ;     Key_1 += 3 ;
 002E 6D5F              subi R22,253    ; addi 3
 0030 07C0              rjmp L11
 0032           L10:
 0032                   .dbline 25
 0032           ;   else if((PIND&0x20)==0)  
 0032 8599              sbic 0x10,5
 0034 02C0              rjmp L12
 0036                   .dbline 26
 0036           ;     Key_1 += 6 ;
 0036 6A5F              subi R22,250    ; addi 6
 0038 03C0              rjmp L13
 003A           L12:
 003A                   .dbline 27
 003A           ;   else if((PIND&0x10)==0)  
 003A 8499              sbic 0x10,4
 003C 01C0              rjmp L14
 003E                   .dbline 28
 003E           ;     Key_1 += 9 ;
 003E 675F              subi R22,247    ; addi 9
 0040           L14:
 0040           L13:
 0040           L11:
 0040           L9:
 0040                   .dbline 30
 0040           ;       
 0040           ;   PORTD = 0x0f ;         // 要先写 PORT , 后写 DDR
 0040 8FE0              ldi R24,15
 0042 82BB              out 0x12,R24
 0044                   .dbline 31
 0044           ;   DDRD  = 0xf0 ;
 0044 80EF              ldi R24,240
 0046 81BB              out 0x11,R24
 0048                   .dbline 33
 0048           ;   
 0048           ;   delay_nms(80);
 0048 00E5              ldi R16,80
 004A 10E0              ldi R17,0
 004C 00D0              rcall _delay_nms
 004E                   .dbline 35
 004E           ;   
 004E           ;   if((PIND&0x04)==0)     
 004E 8299              sbic 0x10,2
 0050 02C0              rjmp L16
 0052                   .dbline 36
 0052           ;     Key_2 = 1 ;
 0052 41E0              ldi R20,1
 0054 07C0              rjmp L17
 0056           L16:
 0056                   .dbline 37
 0056           ;   else if((PIND&0x02)==0) 
 0056 8199              sbic 0x10,1
 0058 02C0              rjmp L18
 005A                   .dbline 38
 005A           ;     Key_2 = 2 ;
 005A 42E0              ldi R20,2
 005C 03C0              rjmp L19
 005E           L18:
 005E                   .dbline 39
 005E           ;   else if((PIND&0x01)==0)
 005E 8099              sbic 0x10,0
 0060 01C0              rjmp L20
 0062                   .dbline 40
 0062           ;     Key_2 = 3 ;
 0062 43E0              ldi R20,3
 0064           L20:
 0064           L19:
 0064           L17:
 0064                   .dbline 42
 0064           ;       
 0064           ;   PORTD = 0xf0 ;
 0064 80EF              ldi R24,240
 0066 82BB              out 0x12,R24
 0068                   .dbline 43
 0068           ;   DDRD  = 0x0f ;
 0068 8FE0              ldi R24,15
 006A 81BB              out 0x11,R24
 006C                   .dbline 45
 006C           ;   
 006C           ;   if((PIND&0x80)==0)       
 006C 8799              sbic 0x10,7
 006E 01C0              rjmp L22
 0070                   .dbline 46
 0070           ;     Key_2 += 0 ;
 0070 0BC0              rjmp L23
 0072           L22:
 0072                   .dbline 47
 0072           ;   else if((PIND&0x40)==0)  
 0072 8699              sbic 0x10,6
 0074 02C0              rjmp L24
 0076                   .dbline 48
 0076           ;     Key_2 += 3 ;
 0076 4D5F              subi R20,253    ; addi 3
 0078 07C0              rjmp L25
 007A           L24:
 007A                   .dbline 49
 007A           ;   else if((PIND&0x20)==0)  
 007A 8599              sbic 0x10,5
 007C 02C0              rjmp L26
 007E                   .dbline 50
 007E           ;     Key_2 += 6 ;
 007E 4A5F              subi R20,250    ; addi 6
 0080 03C0              rjmp L27
 0082           L26:
 0082                   .dbline 51
 0082           ;   else if((PIND&0x10)==0)  
 0082 8499              sbic 0x10,4
 0084 01C0              rjmp L28
 0086                   .dbline 52
 0086           ;     Key_2 += 9 ;
 0086 475F              subi R20,247    ; addi 9
 0088           L28:
 0088           L27:
 0088           L25:
 0088           L23:
 0088                   .dbline 54
 0088           ;       
 0088           ;   PORTD = 0x0f ;         // 要先写 PORT , 后写 DDR
 0088 8FE0              ldi R24,15
 008A 82BB              out 0x12,R24
 008C                   .dbline 55
 008C           ;   DDRD  = 0xf0 ;
 008C 80EF              ldi R24,240
 008E 81BB              out 0x11,R24
 0090                   .dbline 59
 0090           ;   
 0090           ;   //SEI();
 0090           ;   
 0090           ;   if(Key_1==Key_2)
 0090 6417              cp R22,R20
 0092 11F4              brne L30
 0094                   .dbline 60
 0094           ;   {
 0094                   .dbline 61
 0094           ;     return Key_2 ;
 0094 042F              mov R16,R20
 0096 01C0              rjmp L1
 0098           L30:
 0098                   .dbline 64
 0098           ;   }
 0098           ;   else
 0098           ;   {
 0098                   .dbline 65
 0098           ;     return 0 ;
 0098 0027              clr R16
 009A                   .dbline -2
 009A           L1:
 009A 00D0              rcall pop_gset2
 009C                   .dbline 0 ; func end
 009C 0895              ret
 009E                   .dbsym r Key_1 22 c
 009E                   .dbsym r Key_2 20 c
 009E                   .dbend

⌨️ 快捷键说明

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