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

📄 zdsmjp.lis

📁 AVR单片机C语言编程及应用实例 适合初学者的学习研究 其中包含Atmega16中文资料及Protel部分电路图
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module zdsmjp.c
                        .area text(rom, con, rel)
 0000                   .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\中断扫描键盘\zdsmjp.c
                        .area data(ram, con, rel)
 0000                   .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\中断扫描键盘\zdsmjp.c
 0000           _num::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\中断扫描键盘\zdsmjp.c
 0001                   .dbsym e num _num c
                        .area vector(rom, abs)
                        .org 32
 0020 0C94E900          jmp _miao
                        .area data(ram, con, rel)
 0001                   .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\中断扫描键盘\zdsmjp.c
                        .area code(ram, con, rel)
 0000                   .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\中断扫描键盘\zdsmjp.c
                        .area lit(rom, con, rel)
 0000           _table::
 0000 3F00              .word 63
 0002 0600              .word 6
 0004 5B00              .word 91
 0006 4F00              .word 79
 0008 6600              .word 102
 000A 6D00              .word 109
 000C 7D00              .word 125
 000E 0700              .word 7
 0010 7F00              .word 127
 0012 6F00              .word 111
 0014 7700              .word 119
 0016 7C00              .word 124
 0018 3900              .word 57
 001A 5E00              .word 94
 001C 7900              .word 121
 001E 7100              .word 113
 0020                   .dbsym e table _table A[32:16]kI
                        .area text(rom, con, rel)
 0000                   .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\中断扫描键盘\zdsmjp.c
 0000                   .dbfunc e delay _delay fV
 0000           ;              i -> R20,R21
 0000           ;              j -> R22,R23
 0000           ;             ms -> R16,R17
                        .even
 0000           _delay::
 0000 0E940000          xcall push_xgsetF000
 0004                   .dbline -1
 0004                   .dbline 12
 0004           ; #include <iom16v.h>
 0004           ; #include <macros.h>
 0004           ; #define  uchar unsigned char
 0004           ; #define  uint  unsigned int
 0004           ; uchar num=0;uchar l;
 0004           ; #pragma interrupt_handler miao:9
 0004           ; #pragma data:code 
 0004           ; const  table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
 0004           ;                          0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
 0004           ; 
 0004           ; void delay(uint ms)
 0004           ; {
 0004                   .dbline 14
 0004           ;         uint i,j;
 0004           ;       for(i=0;i<ms;i++)
 0004 4427              clr R20
 0006 5527              clr R21
 0008 0BC0              xjmp L5
 000A           L2:
 000A                   .dbline 15
 000A           ;          {
 000A                   .dbline 16
 000A           ;          for(j=0;j<1141;j++);
 000A 6627              clr R22
 000C 7727              clr R23
 000E 02C0              xjmp L9
 0010           L6:
 0010                   .dbline 16
 0010           L7:
 0010                   .dbline 16
 0010 6F5F              subi R22,255  ; offset = 1
 0012 7F4F              sbci R23,255
 0014           L9:
 0014                   .dbline 16
 0014 6537              cpi R22,117
 0016 E4E0              ldi R30,4
 0018 7E07              cpc R23,R30
 001A D0F3              brlo L6
 001C           X0:
 001C                   .dbline 17
 001C           ;        }
 001C           L3:
 001C                   .dbline 14
 001C 4F5F              subi R20,255  ; offset = 1
 001E 5F4F              sbci R21,255
 0020           L5:
 0020                   .dbline 14
 0020 4017              cp R20,R16
 0022 5107              cpc R21,R17
 0024 90F3              brlo L2
 0026           X1:
 0026                   .dbline -2
 0026           L1:
 0026                   .dbline 0 ; func end
 0026 0C940000          xjmp pop_xgsetF000
 002A                   .dbsym r i 20 i
 002A                   .dbsym r j 22 i
 002A                   .dbsym r ms 16 i
 002A                   .dbend
 002A                   .dbfunc e show _show fV
 002A           ;              k -> R10
 002A           ;              j -> R12
                        .even
 002A           _show::
 002A AA92              st -y,R10
 002C CA92              st -y,R12
 002E A22E              mov R10,R18
 0030 C02E              mov R12,R16
 0032                   .dbline -1
 0032                   .dbline 20
 0032           ; }
 0032           ; void show(uchar j,uchar k)
 0032           ; {
 0032                   .dbline 21
 0032           ;         PORTA|=BIT(3);
 0032 DB9A              sbi 0x1b,3
 0034                   .dbline 22
 0034           ;       PORTB=table[j];
 0034 80E0              ldi R24,<_table
 0036 90E0              ldi R25,>_table
 0038 EC2D              mov R30,R12
 003A FF27              clr R31
 003C EE0F              lsl R30
 003E FF1F              rol R31
 0040 E80F              add R30,R24
 0042 F91F              adc R31,R25
 0044 2590              lpm R2,Z+
 0046 3490              lpm R3,Z
 0048 28BA              out 0x18,R2
 004A                   .dbline 23
 004A           ;       PORTA&=~BIT(3);
 004A DB98              cbi 0x1b,3
 004C                   .dbline 25
 004C           ;       
 004C           ;       PORTB=0XFF;
 004C 8FEF              ldi R24,255
 004E 88BB              out 0x18,R24
 0050                   .dbline 26
 0050           ;       PORTB&=~BIT(k);
 0050 01E0              ldi R16,1
 0052 1A2D              mov R17,R10
 0054 0E940000          xcall lsl8
 0058 202E              mov R2,R16
 005A 2094              com R2
 005C 38B2              in R3,0x18
 005E 3220              and R3,R2
 0060 38BA              out 0x18,R3
 0062                   .dbline 27
 0062           ;       PORTA|=BIT(4);
 0062 DC9A              sbi 0x1b,4
 0064                   .dbline 28
 0064           ;       PORTA&=~BIT(4);
 0064 DC98              cbi 0x1b,4
 0066                   .dbline 29
 0066           ;       delay(80);//delay(1);
 0066 00E5              ldi R16,80
 0068 10E0              ldi R17,0
 006A CADF              xcall _delay
 006C                   .dbline -2
 006C           L10:
 006C                   .dbline 0 ; func end
 006C C990              ld R12,y+
 006E A990              ld R10,y+
 0070 0895              ret
 0072                   .dbsym r k 10 c
 0072                   .dbsym r j 12 c
 0072                   .dbend
 0072                   .dbfunc e key_press _key_press fc
 0072           ;              i -> R16
                        .even
 0072           _key_press::
 0072                   .dbline -1
 0072                   .dbline 32
 0072           ; }
 0072           ; uchar key_press()
 0072           ; {
 0072                   .dbline 34
 0072           ;      uchar i;
 0072           ;      DDRD=0XFF;
 0072 8FEF              ldi R24,255
 0074 81BB              out 0x11,R24
 0076                   .dbline 35
 0076           ;        PORTD=0XF0;
 0076 80EF              ldi R24,240
 0078 82BB              out 0x12,R24
 007A                   .dbline 37
 007A           ;        
 007A           ;        DDRD=0X0F;
 007A 8FE0              ldi R24,15
 007C 81BB              out 0x11,R24
 007E                   .dbline 39
 007E           ;        
 007E           ;        i=PIND;
 007E 00B3              in R16,0x10
 0080                   .dbline 40
 0080           ;        if(i==0XF0)
 0080 003F              cpi R16,240
 0082 21F4              brne L12
 0084           X2:
 0084                   .dbline 41
 0084           ;        {
 0084                   .dbline 42
 0084           ;          DDRD=0XFF;
 0084 8FEF              ldi R24,255
 0086 81BB              out 0x11,R24
 0088                   .dbline 43
 0088           ;          return 0;
 0088 0027              clr R16
 008A 03C0              xjmp L11
 008C           L12:
 008C                   .dbline 46
 008C           ;        }
 008C           ;        else
 008C           ;        {
 008C                   .dbline 47
 008C           ;          DDRD=0XFF;
 008C 8FEF              ldi R24,255
 008E 81BB              out 0x11,R24
 0090                   .dbline 48
 0090           ;          return 1;
 0090 01E0              ldi R16,1
 0092                   .dbline -2
 0092           L11:
 0092                   .dbline 0 ; func end
 0092 0895              ret
 0094                   .dbsym r i 16 c
 0094                   .dbend
 0094                   .dbfunc e key_scan _key_scan fc
 0094           ;              j -> R10
 0094           ;            key -> R20
 0094           ;              i -> R22
                        .even
 0094           _key_scan::
 0094 0E940000          xcall push_xgsetF00C
 0098                   .dbline -1
 0098                   .dbline 53
 0098           ;        }
 0098           ; }
 0098           ; 
 0098           ; uchar key_scan()
 0098           ; {
 0098                   .dbline 54
 0098           ;      uchar key,i=0X7F,j;
 0098 6FE7              ldi R22,127
 009A                   .dbline 55
 009A           ;      delay(10);
 009A 0AE0              ldi R16,10
 009C 10E0              ldi R17,0
 009E B0DF              xcall _delay
 00A0                   .dbline 56
 00A0           ;        if(key_press())
 00A0 E8DF              xcall _key_press
 00A2 0023              tst R16
 00A4 09F4              brne X24
 00A6 91C0              xjmp L15
 00A8           X24:
 00A8           X3:
 00A8                   .dbline 57
 00A8           ;        {
 00A8           L17:
 00A8                   .dbline 59
 00A8           ;           do
 00A8           ;               {
 00A8                   .dbline 60
 00A8           ;                i=(i<<1|i>>7);
 00A8 262E              mov R2,R22
 00AA 2694              lsr R2
 00AC 2694              lsr R2
 00AE 2694              lsr R2
 00B0 2694              lsr R2
 00B2 2694              lsr R2
 00B4 2694              lsr R2
 00B6 2694              lsr R2
 00B8 362E              mov R3,R22
 00BA 330C              lsl R3
 00BC 3228              or R3,R2
 00BE 632D              mov R22,R3
 00C0                   .dbline 61
 00C0           ;                PORTD=i;
 00C0 32BA              out 0x12,R3
 00C2                   .dbline 62
 00C2           ;                DDRD=0X0F;
 00C2 8FE0              ldi R24,15
 00C4 81BB              out 0x11,R24
 00C6                   .dbline 64
 00C6           ;                
 00C6           ;                key=PIND;
 00C6 40B3              in R20,0x10
 00C8                   .dbline 65
 00C8           ;                j=key&0XF0;
 00C8 842F              mov R24,R20
 00CA 807F              andi R24,240
 00CC A82E              mov R10,R24
 00CE                   .dbline 67
 00CE           ;                
 00CE           ;           }while(j==0XF0);
 00CE           L18:
 00CE                   .dbline 67
 00CE 8A2D              mov R24,R10
 00D0 803F              cpi R24,240
 00D2 51F3              breq L17
 00D4           X4:
 00D4           L20:
 00D4                   .dbline 69
 00D4           ;               
 00D4           ;               while(key_press());
 00D4           L21:
 00D4                   .dbline 69
 00D4 CEDF              xcall _key_press
 00D6 0023              tst R16
 00D8 E9F7              brne L20
 00DA           X5:
 00DA                   .dbline 70
 00DA           ;               switch(key)
 00DA 642F              mov R22,R20
 00DC 7727              clr R23
 00DE 673B              cpi R22,183
 00E0 E0E0              ldi R30,0
 00E2 7E07              cpc R23,R30
 00E4 09F4              brne X25
 00E6 6BC0              xjmp L40
 00E8           X25:
 00E8           X6:
 00E8 6B3B              cpi R22,187
 00EA E0E0              ldi R30,0
 00EC 7E07              cpc R23,R30
 00EE 09F4              brne X26
 00F0 5EC0              xjmp L36
 00F2           X26:
 00F2           X7:
 00F2 6D3B              cpi R22,189
 00F4 E0E0              ldi R30,0
 00F6 7E07              cpc R23,R30
 00F8 09F4              brne X27
 00FA 51C0              xjmp L32
 00FC           X27:
 00FC           X8:
 00FC 6E3B              cpi R22,190
 00FE E0E0              ldi R30,0
 0100 7E07              cpc R23,R30
 0102 09F4              brne X28
 0104 44C0              xjmp L28
 0106           X28:
 0106           X9:
 0106 8EEB              ldi R24,190
 0108 90E0              ldi R25,0
 010A 8617              cp R24,R22
 010C 9707              cpc R25,R23
 010E A4F0              brlt L43
 0110           X10:
 0110           L42:
 0110 6737              cpi R22,119
 0112 E0E0              ldi R30,0
 0114 7E07              cpc R23,R30
 0116 09F4              brne X29
 0118 54C0              xjmp L41
 011A           X29:
 011A           X11:
 011A 6B37              cpi R22,123
 011C E0E0              ldi R30,0
 011E 7E07              cpc R23,R30
 0120 09F4              brne X30
 0122 47C0              xjmp L37
 0124           X30:
 0124           X12:
 0124 6D37              cpi R22,125
 0126 E0E0              ldi R30,0
 0128 7E07              cpc R23,R30
 012A 09F4              brne X31
 012C 3AC0              xjmp L33
 012E           X31:
 012E           X13:
 012E 6E37              cpi R22,126
 0130 E0E0              ldi R30,0
 0132 7E07              cpc R23,R30
 0134 71F1              breq L29
 0136           X14:
 0136 47C0              xjmp L23
 0138           L43:
 0138 673D              cpi R22,215

⌨️ 快捷键说明

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