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

📄 key_board.lis

📁 数控电压源程序数控电压源程序数控电压源程序数控电压源程序
💻 LIS
字号:
                        .module key_board.c
                        .area data(ram, con, rel)
 0000           _key_return::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile E:\张秋伟\我的实验\数控电压源\key_board.c
 0001                   .dbsym e key_return _key_return c
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\张秋伟\我的实验\数控电压源\key_board.c
 0000           L2:
 0000                   .blkb 1
 0001           L3:
 0001                   .blkb 1
                        .area text(rom, con, rel)
 0000                   .dbfile E:\张秋伟\我的实验\数控电压源\key_board.c
 0000                   .dbfunc e read_keyboard _read_keyboard fc
 0000                   .dbsym s key_line L3 c
 0000                   .dbsym s key_value L2 c
 0000           ;              i -> R20
                        .even
 0000           _read_keyboard::
 0000 00D0              rcall push_gset1
 0002                   .dbline -1
 0002                   .dbline 14
 0002           ; //包含所需头文件
 0002           ; #include <ioM16v.h>
 0002           ; #include <macros.h>
 0002           ; #include "delay.h"
 0002           ; /*------宏定义------*/
 0002           ; #define uchar unsigned char
 0002           ; #define uint  unsigned int
 0002           ; 
 0002           ; #define key_mask  0b00001111
 0002           ; 
 0002           ; //static uchar keyvalue;
 0002           ; uchar key_return=0;
 0002           ; uchar read_keyboard()
 0002           ; {
 0002                   .dbline 17
 0002           ;  static uchar key_value,key_line;
 0002           ;  uchar i;
 0002           ;  DDRD=0xf0;
 0002 80EF              ldi R24,240
 0004 81BB              out 0x11,R24
 0006                   .dbline 18
 0006           ;    key_line=0b00010000;
 0006 80E1              ldi R24,16
 0008 80930100          sts L3,R24
 000C                   .dbline 19
 000C           ;    for(i=1;i<=4;i++)
 000C 41E0              ldi R20,1
 000E 14C0              rjmp L7
 0010           L4:
 0010                   .dbline 20
 0010           ;    {
 0010                   .dbline 21
 0010           ;    PORTD=~key_line;
 0010 20900100          lds R2,L3
 0014 2094              com R2
 0016 22BA              out 0x12,R2
 0018                   .dbline 22
 0018           ;    PORTD=~key_line;
 0018 20900100          lds R2,L3
 001C 2094              com R2
 001E 22BA              out 0x12,R2
 0020                   .dbline 23
 0020           ;    key_value=key_mask&PIND;
 0020 80B3              in R24,0x10
 0022 8F70              andi R24,15
 0024 80930000          sts L2,R24
 0028                   .dbline 24
 0028           ;    if(key_value==key_mask)
 0028 8F30              cpi R24,15
 002A 49F4              brne L6
 002C                   .dbline 25
 002C           ;      key_line<<=1;
 002C 20900100          lds R2,L3
 0030 220C              lsl R2
 0032 20920100          sts L3,R2
 0036                   .dbline 27
 0036           ;      else
 0036           ;        break;
 0036           L9:
 0036                   .dbline 28
 0036           L5:
 0036                   .dbline 19
 0036 4395              inc R20
 0038           L7:
 0038                   .dbline 19
 0038 84E0              ldi R24,4
 003A 8417              cp R24,R20
 003C 48F7              brsh L4
 003E           L6:
 003E                   .dbline 29
 003E           ;    }
 003E           ;       delay_nms(5);
 003E 05E0              ldi R16,5
 0040 10E0              ldi R17,0
 0042 00D0              rcall _delay_nms
 0044                   .dbline 30
 0044           ;   if(key_value==(key_mask&PIND))
 0044 80B3              in R24,0x10
 0046 8F70              andi R24,15
 0048 20900000          lds R2,L2
 004C 2816              cp R2,R24
 004E 09F0              breq X1
 0050 5EC0              rjmp L10
 0052           X1:
 0052                   .dbline 31
 0052           ;    {
 0052                   .dbline 33
 0052           ;     
 0052           ;     switch(key_line|key_value)
 0052 3324              clr R3
 0054 40910100          lds R20,L3
 0058 5527              clr R21
 005A 4229              or R20,R2
 005C 5329              or R21,R3
 005E 4732              cpi R20,39
 0060 E0E0              ldi R30,0
 0062 5E07              cpc R21,R30
 0064 09F4              brne X2
 0066 48C0              rjmp L22
 0068           X2:
 0068 4B32              cpi R20,43
 006A E0E0              ldi R30,0
 006C 5E07              cpc R21,R30
 006E 09F4              brne X3
 0070 3FC0              rjmp L21
 0072           X3:
 0072 4D32              cpi R20,45
 0074 E0E0              ldi R30,0
 0076 5E07              cpc R21,R30
 0078 B9F1              breq L20
 007A 4E32              cpi R20,46
 007C E0E0              ldi R30,0
 007E 5E07              cpc R21,R30
 0080 79F1              breq L19
 0082 8EE2              ldi R24,46
 0084 90E0              ldi R25,0
 0086 8417              cp R24,R20
 0088 9507              cpc R25,R21
 008A 8CF0              brlt L26
 008C           L25:
 008C 4731              cpi R20,23
 008E E0E0              ldi R30,0
 0090 5E07              cpc R21,R30
 0092 11F1              breq L18
 0094 4B31              cpi R20,27
 0096 E0E0              ldi R30,0
 0098 5E07              cpc R21,R30
 009A D1F0              breq L17
 009C 4D31              cpi R20,29
 009E E0E0              ldi R30,0
 00A0 5E07              cpc R21,R30
 00A2 91F0              breq L16
 00A4 4E31              cpi R20,30
 00A6 E0E0              ldi R30,0
 00A8 5E07              cpc R21,R30
 00AA 51F0              breq L15
 00AC 30C0              rjmp L12
 00AE           L26:
 00AE 4D34              cpi R20,77
 00B0 E0E0              ldi R30,0
 00B2 5E07              cpc R21,R30
 00B4 49F1              breq L24
 00B6 4E34              cpi R20,78
 00B8 E0E0              ldi R30,0
 00BA 5E07              cpc R21,R30
 00BC 09F1              breq L23
 00BE 27C0              rjmp L12
 00C0           X0:
 00C0                   .dbline 34
 00C0           ;     {
 00C0           L15:
 00C0                   .dbline 35
 00C0           ;     case 0b00011110:key_return=1;
 00C0 81E0              ldi R24,1
 00C2 80930000          sts _key_return,R24
 00C6                   .dbline 36
 00C6           ;                       break;
 00C6 23C0              rjmp L13
 00C8           L16:
 00C8                   .dbline 37
 00C8           ;       case 0b00011101:key_return=2;
 00C8 82E0              ldi R24,2
 00CA 80930000          sts _key_return,R24
 00CE                   .dbline 38
 00CE           ;                       break;
 00CE 1FC0              rjmp L13
 00D0           L17:
 00D0                   .dbline 39
 00D0           ;       case 0b00011011:key_return=3;
 00D0 83E0              ldi R24,3
 00D2 80930000          sts _key_return,R24
 00D6                   .dbline 40
 00D6           ;                       break;  
 00D6 1BC0              rjmp L13
 00D8           L18:
 00D8                   .dbline 41
 00D8           ;       case 0b00010111:key_return=4;
 00D8 84E0              ldi R24,4
 00DA 80930000          sts _key_return,R24
 00DE                   .dbline 42
 00DE           ;                       break;  
 00DE 17C0              rjmp L13
 00E0           L19:
 00E0                   .dbline 43
 00E0           ;       case 0b00101110:key_return=5;
 00E0 85E0              ldi R24,5
 00E2 80930000          sts _key_return,R24
 00E6                   .dbline 44
 00E6           ;                       break;  
 00E6 13C0              rjmp L13
 00E8           L20:
 00E8                   .dbline 45
 00E8           ;       case 0b00101101:key_return=6;
 00E8 86E0              ldi R24,6
 00EA 80930000          sts _key_return,R24
 00EE                   .dbline 46
 00EE           ;                       break;
 00EE 0FC0              rjmp L13
 00F0           L21:
 00F0                   .dbline 47
 00F0           ;     case 0b00101011:key_return=7;
 00F0 87E0              ldi R24,7
 00F2 80930000          sts _key_return,R24
 00F6                   .dbline 48
 00F6           ;                       break;  
 00F6 0BC0              rjmp L13
 00F8           L22:
 00F8                   .dbline 49
 00F8           ;       case 0b00100111:key_return=8;
 00F8 88E0              ldi R24,8
 00FA 80930000          sts _key_return,R24
 00FE                   .dbline 50
 00FE           ;                       break;          
 00FE 07C0              rjmp L13
 0100           L23:
 0100                   .dbline 51
 0100           ;       case 0b01001110:key_return=9;
 0100 89E0              ldi R24,9
 0102 80930000          sts _key_return,R24
 0106                   .dbline 52
 0106           ;                       break;  
 0106 03C0              rjmp L13
 0108           L24:
 0108                   .dbline 53
 0108           ;       case 0b01001101:key_return=0;
 0108 2224              clr R2
 010A 20920000          sts _key_return,R2
 010E                   .dbline 54
 010E           ;                       break;                                                                                                                                                                                                                          
 010E           L12:
 010E           L13:
 010E                   .dbline 56
 010E           ;      }
 010E           ;   }
 010E           L10:
 010E                   .dbline 57
 010E           ;     return key_return;
 010E 00910000          lds R16,_key_return
 0112                   .dbline -2
 0112           L1:
 0112 00D0              rcall pop_gset1
 0114                   .dbline 0 ; func end
 0114 0895              ret
 0116                   .dbsym r i 20 c
 0116                   .dbend

⌨️ 快捷键说明

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