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

📄 key.lis

📁 本次设计的自动往返电动小汽车
💻 LIS
字号:
                        .module Key.C
                        .area code(ram, con, rel)
                        .area lit(rom, con, rel)
 0000           _keyset::
 0000 0C0D              .byte 12,13
 0002 0E0F              .byte 14,15
 0004 0809              .byte 8,9
 0006 0A0B              .byte 10,11
 0008 0405              .byte 4,5
 000A 0607              .byte 6,7
 000C 0001              .byte 0,1
 000E 0203              .byte 2,3
 0010                   .dbfile C:\DOCUME~1\Administrator\桌面\Car&Lcd\Key.C
 0010                   .dbsym e keyset _keyset A[16:16]kc
                        .area data(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\Car&Lcd\Key.C
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\Car&Lcd\Key.C
 0000                   .dbfunc e key_init _key_init fV
                        .even
 0000           _key_init::
 0000                   .dbline -1
 0000                   .dbline 23
 0000           ; /********************************************
 0000           ; /* 键盘扫描函数
 0000           ; /* PROTC口用于扫描键盘
 0000           ; /* 函数返回键值,无按键时返回0x7F
 0000           ; /* 在其他文件中调用函数时应做以下说明
 0000           ; /* extern unsigned char scan_key(void); 
 0000           ; /* extern unsigned char keypad(void);
 0000           ; ********************************************/
 0000           ; #include <io8515v.h>
 0000           ; #include <Key.h>
 0000           ; 
 0000           ; #pragma data:code
 0000           ; const  char keyset[]=
 0000           ;             {
 0000           ;                        12,13,14,15,
 0000           ;                        8, 9, 10,11,
 0000           ;                        4, 5,  6, 7,
 0000           ;                        0, 1,  2, 3
 0000           ;                       };      
 0000           ; #pragma data:data     
 0000           ; 
 0000           ; void key_init(void)
 0000           ;        {
 0000                   .dbline 24
 0000           ;        JP = 0xFF;
 0000 8FEF              ldi R24,255
 0002 85BB              out 0x15,R24
 0004                   .dbline 25
 0004           ;          JP_FX  = 0x00;
 0004 2224              clr R2
 0006 24BA              out 0x14,R2
 0008                   .dbline -2
 0008                   .dbline 26
 0008           ;        }
 0008           L1:
 0008                   .dbline 0 ; func end
 0008 0895              ret
 000A                   .dbend
 000A                   .dbfunc e scan_key _scan_key fc
 000A           ;              i -> R22
 000A           ;           temp -> R10
                        .even
 000A           _scan_key::
 000A 00D0              rcall push_gset3
 000C                   .dbline -1
 000C                   .dbline 29
 000C           ;        
 000C           ; unsigned char scan_key(void)
 000C           ;        {
 000C                   .dbline 31
 000C           ;        unsigned char i,temp;
 000C           ;        JP_FX=0x0F;
 000C 8FE0              ldi R24,15
 000E 84BB              out 0x14,R24
 0010                   .dbline 32
 0010           ;        JP=0xFF;
 0010 8FEF              ldi R24,255
 0012 85BB              out 0x15,R24
 0014                   .dbline 33
 0014           ;        for(i=0;i<4;i++)
 0014 6627              clr R22
 0016 69C0              rjmp L6
 0018           L3:
 0018                   .dbline 34
 0018           ;               {
 0018                   .dbline 35
 0018           ;                JP=~(1<<i);
 0018 01E0              ldi R16,1
 001A 162F              mov R17,R22
 001C 00D0              rcall lsl8
 001E 202E              mov R2,R16
 0020 2094              com R2
 0022 25BA              out 0x15,R2
 0024                   .dbline 36
 0024           ;                delay_nus(100);
 0024 04E6              ldi R16,100
 0026 10E0              ldi R17,0
 0028 00D0              rcall _delay_nus
 002A                   .dbline 37
 002A           ;                temp=JP_IN&0xF0;
 002A 83B3              in R24,0x13
 002C 807F              andi R24,240
 002E A82E              mov R10,R24
 0030                   .dbline 38
 0030           ;                if(temp!=0xF0)
 0030 803F              cpi R24,240
 0032 09F4              brne X1
 0034 57C0              rjmp L7
 0036           X1:
 0036                   .dbline 39
 0036           ;                       {
 0036                   .dbline 40
 0036           ;                       delay_nms(15);
 0036 0FE0              ldi R16,15
 0038 10E0              ldi R17,0
 003A 00D0              rcall _delay_nms
 003C                   .dbline 41
 003C           ;                       temp=JP_IN&0xF0;
 003C 83B3              in R24,0x13
 003E 807F              andi R24,240
 0040 A82E              mov R10,R24
 0042                   .dbline 42
 0042           ;                       if(temp!=0xF0)
 0042 803F              cpi R24,240
 0044 09F4              brne X2
 0046 4EC0              rjmp L9
 0048           X2:
 0048                   .dbline 43
 0048           ;                               {
 0048                   .dbline 44
 0048           ;                               temp&=0xF0;
 0048 807F              andi R24,240
 004A A82E              mov R10,R24
 004C                   .dbline 45
 004C           ;                               switch(temp)
 004C 482F              mov R20,R24
 004E 5527              clr R21
 0050 403B              cpi R20,176
 0052 E0E0              ldi R30,0
 0054 5E07              cpc R21,R30
 0056 01F1              breq L15
 0058 80EB              ldi R24,176
 005A 90E0              ldi R25,0
 005C 8417              cp R24,R20
 005E 9507              cpc R25,R21
 0060 2CF0              brlt L19
 0062           L18:
 0062 4037              cpi R20,112
 0064 E0E0              ldi R30,0
 0066 5E07              cpc R21,R30
 0068 79F0              breq L14
 006A 2EC0              rjmp L11
 006C           L19:
 006C 403D              cpi R20,208
 006E E0E0              ldi R30,0
 0070 5E07              cpc R21,R30
 0072 D1F0              breq L16
 0074 403D              cpi R20,208
 0076 E0E0              ldi R30,0
 0078 5E07              cpc R21,R30
 007A 0CF4              brge X3
 007C 25C0              rjmp L11
 007E           X3:
 007E           L20:
 007E 403E              cpi R20,224
 0080 E0E0              ldi R30,0
 0082 5E07              cpc R21,R30
 0084 C9F0              breq L17
 0086 20C0              rjmp L11
 0088           X0:
 0088                   .dbline 46
 0088           ;                                       {
 0088           L14:
 0088                   .dbline 47
 0088           ;                                       case 0x70:temp=15-(3-i)*4;break;
 0088 83E0              ldi R24,3
 008A 861B              sub R24,R22
 008C 880F              lsl R24
 008E 880F              lsl R24
 0090 9FE0              ldi R25,15
 0092 A92E              mov R10,R25
 0094 A81A              sub R10,R24
 0096                   .dbline 47
 0096 1AC0              rjmp L12
 0098           L15:
 0098                   .dbline 48
 0098           ;                                       case 0xb0:temp=14-(3-i)*4;break;
 0098 83E0              ldi R24,3
 009A 861B              sub R24,R22
 009C 880F              lsl R24
 009E 880F              lsl R24
 00A0 9EE0              ldi R25,14
 00A2 A92E              mov R10,R25
 00A4 A81A              sub R10,R24
 00A6                   .dbline 48
 00A6 12C0              rjmp L12
 00A8           L16:
 00A8                   .dbline 49
 00A8           ;                                       case 0xd0:temp=13-(3-i)*4;break;
 00A8 83E0              ldi R24,3
 00AA 861B              sub R24,R22
 00AC 880F              lsl R24
 00AE 880F              lsl R24
 00B0 9DE0              ldi R25,13
 00B2 A92E              mov R10,R25
 00B4 A81A              sub R10,R24
 00B6                   .dbline 49
 00B6 0AC0              rjmp L12
 00B8           L17:
 00B8                   .dbline 50
 00B8           ;                                       case 0xe0:temp=12-(3-i)*4;break;
 00B8 83E0              ldi R24,3
 00BA 861B              sub R24,R22
 00BC 880F              lsl R24
 00BE 880F              lsl R24
 00C0 9CE0              ldi R25,12
 00C2 A92E              mov R10,R25
 00C4 A81A              sub R10,R24
 00C6                   .dbline 50
 00C6 02C0              rjmp L12
 00C8           L11:
 00C8                   .dbline 51
 00C8           ;                                       default:temp=0x7F;                                      
 00C8 8FE7              ldi R24,127
 00CA A82E              mov R10,R24
 00CC                   .dbline 52
 00CC           ;                                       }
 00CC           L12:
 00CC                   .dbline 53
 00CC           ;                               temp=keyset[temp];                              
 00CC 80E0              ldi R24,<_keyset
 00CE 90E0              ldi R25,>_keyset
 00D0 2A2C              mov R2,R10
 00D2 3324              clr R3
 00D4 280E              add R2,R24
 00D6 391E              adc R3,R25
 00D8 E22D              mov R30,R2
 00DA F32D              mov R31,R3
 00DC C895              lpm
 00DE A02C              mov R10,R0
 00E0                   .dbline 54
 00E0           ;                               return temp;
 00E0 0A2D              mov R16,R10
 00E2 07C0              rjmp L2
 00E4           L9:
 00E4                   .dbline 56
 00E4           ;                               }                       
 00E4           ;                       }
 00E4           L7:
 00E4                   .dbline 57
 00E4 8FE7              ldi R24,127
 00E6 85BB              out 0x15,R24
 00E8                   .dbline 58
 00E8           L4:
 00E8                   .dbline 33
 00E8 6395              inc R22
 00EA           L6:
 00EA                   .dbline 33
 00EA 6430              cpi R22,4
 00EC 08F4              brsh X4
 00EE 94CF              rjmp L3
 00F0           X4:
 00F0                   .dbline 59
 00F0           ;               JP=0x7F;                
 00F0           ;               }        
 00F0           ;        return 0x7F;
 00F0 0FE7              ldi R16,127
 00F2                   .dbline -2
 00F2           L2:
 00F2 00D0              rcall pop_gset3
 00F4                   .dbline 0 ; func end
 00F4 0895              ret
 00F6                   .dbsym r i 22 c
 00F6                   .dbsym r temp 10 c
 00F6                   .dbend
 00F6                   .dbfunc e keypad _keypad fc
 00F6           ;          temp1 -> R20
 00F6           ;          temp2 -> R22
                        .even
 00F6           _keypad::
 00F6 00D0              rcall push_gset2
 00F8                   .dbline -1
 00F8                   .dbline 62
 00F8           ;        }       
 00F8           ; unsigned char keypad(void)
 00F8           ;       {
 00F8                   .dbline 64
 00F8           ;       unsigned char temp1,temp2;
 00F8           ;       temp1=scan_key();
 00F8 88DF              rcall _scan_key
 00FA 402F              mov R20,R16
 00FC                   .dbline 65
 00FC           ;       if(temp1==0x7F)
 00FC 0F37              cpi R16,127
 00FE 11F4              brne L22
 0100                   .dbline 66
 0100           ;               return 0x7F;
 0100 0FE7              ldi R16,127
 0102 05C0              rjmp L21
 0104           L22:
 0104           L24:
 0104                   .dbline 68
 0104           ;       do 
 0104           ;           temp2=scan_key();
 0104 82DF              rcall _scan_key
 0106 602F              mov R22,R16
 0108           L25:
 0108                   .dbline 69
 0108           ;       while(temp1==temp2);
 0108 4617              cp R20,R22
 010A E1F3              breq L24
 010C                   .dbline 70
 010C           ;       return temp1;           
 010C 042F              mov R16,R20
 010E                   .dbline -2
 010E           L21:
 010E 00D0              rcall pop_gset2
 0110                   .dbline 0 ; func end
 0110 0895              ret
 0112                   .dbsym r temp1 20 c
 0112                   .dbsym r temp2 22 c
 0112                   .dbend

⌨️ 快捷键说明

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