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

📄 mykey.lis

📁 AVR单片机C语言编程及应用实例 适合初学者的学习研究 其中包含Atmega16中文资料及Protel部分电路图
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00DC 0E940000          xcall lsl8
 00E0 202E              mov R2,R16
 00E2 2094              com R2
 00E4 28BA              out 0x18,R2
 00E6                   .dbline 49
 00E6           ;       PORTA&=~BIT(4);
 00E6 DC98              cbi 0x1b,4
 00E8                   .dbline 50
 00E8           ;       delay(1);
 00E8 01E0              ldi R16,1
 00EA 10E0              ldi R17,0
 00EC 89DF              xcall _delay
 00EE                   .dbline -2
 00EE           L10:
 00EE                   .dbline 0 ; func end
 00EE 6991              ld R22,y+
 00F0 4991              ld R20,y+
 00F2 0895              ret
 00F4                   .dbsym r k 22 c
 00F4                   .dbsym r j 20 c
 00F4                   .dbend
 00F4                   .dbfunc e key_press _key_press fc
 00F4           ;              j -> R16
                        .even
 00F4           _key_press::
 00F4                   .dbline -1
 00F4                   .dbline 54
 00F4           ; }
 00F4           ; 
 00F4           ; uchar key_press()
 00F4           ; {
 00F4                   .dbline 56
 00F4           ;     uchar j;
 00F4           ;     DDRD|=0X0F;
 00F4 81B3              in R24,0x11
 00F6 8F60              ori R24,15
 00F8 81BB              out 0x11,R24
 00FA                   .dbline 57
 00FA           ;       PORTD|=0X0F;
 00FA 82B3              in R24,0x12
 00FC 8F60              ori R24,15
 00FE 82BB              out 0x12,R24
 0100                   .dbline 59
 0100           ;       
 0100           ;       DDRD&=0XF0;
 0100 81B3              in R24,0x11
 0102 807F              andi R24,240
 0104 81BB              out 0x11,R24
 0106                   .dbline 61
 0106           ;       
 0106           ;       j=PIND;
 0106 00B3              in R16,0x10
 0108                   .dbline 62
 0108           ;       j=j&0X0F;//00001111
 0108 0F70              andi R16,15
 010A                   .dbline 63
 010A           ;       if(j==0X0F)
 010A 0F30              cpi R16,15
 010C 11F4              brne L30
 010E           X8:
 010E                   .dbline 64
 010E           ;       {
 010E                   .dbline 65
 010E           ;         return 0;
 010E 0027              clr R16
 0110 01C0              xjmp L29
 0112           L30:
 0112                   .dbline 68
 0112           ;       }
 0112           ;       else
 0112           ;       {
 0112                   .dbline 69
 0112           ;        return 1;
 0112 01E0              ldi R16,1
 0114                   .dbline -2
 0114           L29:
 0114                   .dbline 0 ; func end
 0114 0895              ret
 0116                   .dbsym r j 16 c
 0116                   .dbend
 0116                   .dbfunc e key_scan _key_scan fc
 0116           ;            key -> R20
                        .even
 0116           _key_scan::
 0116 0E940000          xcall push_xgsetF000
 011A                   .dbline -1
 011A                   .dbline 75
 011A           ;       }
 011A           ;       
 011A           ; }
 011A           ; 
 011A           ; uchar key_scan()
 011A           ; {
 011A                   .dbline 77
 011A           ;     uchar key;
 011A           ;     delay(10);
 011A 0AE0              ldi R16,10
 011C 10E0              ldi R17,0
 011E 70DF              xcall _delay
 0120                   .dbline 78
 0120           ;       if(key_press())
 0120 E9DF              xcall _key_press
 0122 0023              tst R16
 0124 11F1              breq L33
 0126           X9:
 0126                   .dbline 79
 0126           ;       {
 0126                   .dbline 80
 0126           ;       key=PIND;
 0126 40B3              in R20,0x10
 0128                   .dbline 81
 0128           ;       key&=0X0F;
 0128 4F70              andi R20,15
 012A                   .dbline 82
 012A           ;       switch(key)
 012A 642F              mov R22,R20
 012C 7727              clr R23
 012E 6730              cpi R22,7
 0130 E0E0              ldi R30,0
 0132 7E07              cpc R23,R30
 0134 99F0              breq L41
 0136           X10:
 0136 6B30              cpi R22,11
 0138 E0E0              ldi R30,0
 013A 7E07              cpc R23,R30
 013C 69F0              breq L40
 013E           X11:
 013E 6D30              cpi R22,13
 0140 E0E0              ldi R30,0
 0142 7E07              cpc R23,R30
 0144 39F0              breq L39
 0146           X12:
 0146 6E30              cpi R22,14
 0148 E0E0              ldi R30,0
 014A 7E07              cpc R23,R30
 014C 09F0              breq L38
 014E           X13:
 014E 08C0              xjmp L35
 0150           L38:
 0150                   .dbline 85
 0150           ;       {
 0150           ;          case 0X0E: 
 0150           ;              key=1;
 0150 41E0              ldi R20,1
 0152                   .dbline 86
 0152           ;                  break;
 0152 07C0              xjmp L43
 0154           L39:
 0154                   .dbline 88
 0154           ;          case 0X0D:
 0154           ;              key=2;
 0154 42E0              ldi R20,2
 0156                   .dbline 89
 0156           ;                  break;
 0156 05C0              xjmp L43
 0158           L40:
 0158                   .dbline 91
 0158           ;                case 0X0B: 
 0158           ;              key=3;
 0158 43E0              ldi R20,3
 015A                   .dbline 92
 015A           ;                  break;
 015A 03C0              xjmp L43
 015C           L41:
 015C                   .dbline 94
 015C           ;          case 0X07:
 015C           ;              key=4;
 015C 44E0              ldi R20,4
 015E                   .dbline 95
 015E           ;                  break; 
 015E 01C0              xjmp L43
 0160           L35:
 0160                   .dbline 97
 0160           ;          default:     
 0160           ;              key=16;             
 0160 40E1              ldi R20,16
 0162                   .dbline 98
 0162           ;       }
 0162           L42:
 0162                   .dbline 99
 0162           ;         while(key_press());
 0162           L43:
 0162                   .dbline 99
 0162 C8DF              xcall _key_press
 0164 0023              tst R16
 0166 E9F7              brne L42
 0168           X14:
 0168                   .dbline 100
 0168           ;       }
 0168 01C0              xjmp L34
 016A           L33:
 016A                   .dbline 102
 016A           ;       else
 016A           ;       {
 016A                   .dbline 103
 016A           ;         key=16;
 016A 40E1              ldi R20,16
 016C                   .dbline 104
 016C           ;       }
 016C           L34:
 016C                   .dbline 105
 016C           ;       return key;
 016C 042F              mov R16,R20
 016E                   .dbline -2
 016E           L32:
 016E                   .dbline 0 ; func end
 016E 0C940000          xjmp pop_xgsetF000
 0172                   .dbsym r key 20 c
 0172                   .dbend
 0172                   .dbfunc e main _main fV
 0172           ;              l -> R20
 0172           ;              i -> R10
                        .even
 0172           _main::
 0172                   .dbline -1
 0172                   .dbline 108
 0172           ; }
 0172           ; void main()
 0172           ; {
 0172                   .dbline 110
 0172           ;     uchar i,l;
 0172           ;     DDRA=0X18;//0001 1000
 0172 88E1              ldi R24,24
 0174 8ABB              out 0x1a,R24
 0176                   .dbline 111
 0176           ;       DDRB=0XFF;
 0176 8FEF              ldi R24,255
 0178 87BB              out 0x17,R24
 017A 09C0              xjmp L47
 017C           L46:
 017C                   .dbline 113
 017C           ;       while(1)
 017C           ;       {
 017C                   .dbline 114
 017C           ;         i=key_press();
 017C BBDF              xcall _key_press
 017E A02E              mov R10,R16
 0180                   .dbline 115
 0180           ;         if(i)
 0180 0023              tst R16
 0182 29F0              breq L49
 0184           X15:
 0184                   .dbline 116
 0184           ;         {
 0184                   .dbline 117
 0184           ;            l=key_scan();
 0184 C8DF              xcall _key_scan
 0186 402F              mov R20,R16
 0188                   .dbline 118
 0188           ;                show(l-1,0);
 0188 2227              clr R18
 018A 0150              subi R16,1
 018C 4EDF              xcall _show
 018E                   .dbline 119
 018E           ;         }
 018E           L49:
 018E                   .dbline 120
 018E           ;       }
 018E           L47:
 018E                   .dbline 112
 018E F6CF              xjmp L46
 0190           X16:
 0190                   .dbline -2
 0190           L45:
 0190                   .dbline 0 ; func end
 0190 0895              ret
 0192                   .dbsym r l 20 c
 0192                   .dbsym r i 10 c
 0192                   .dbend
 0192           ; }

⌨️ 快捷键说明

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