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

📄 键盘.lis

📁 基于AVR实验平台下ATMega128芯片实习作业
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module _键盘.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\user\MYDOCU~1\李智(正)\键盘\键盘.c
 0000                   .dbfunc e delay _delay fV
 0000           ;              i -> R20
 0000           ;              t -> R16,R17
                        .even
 0000           _delay::
 0000 0E940000          xcall push_gset1
 0004                   .dbline -1
 0004                   .dbline 11
 0004           ; #include <iom128v.h>
 0004           ; #define req asm("sbi 0x03,6")
 0004           ; #define cl_req asm("cbi 0x03,6")
 0004           ; #define dat asm("sbi 0x18,0")
 0004           ; #define cl_dat asm("cbi 0x18,0")
 0004           ; #define cl_reset asm("cbi 0x15,3")
 0004           ; #define set_reset asm("sbi 0x15,3")
 0004           ; #define LCD 0x9000
 0004           ; 
 0004           ; void delay (unsigned int t)
 0004           ; {
 0004                   .dbline 13
 0004 41E0              ldi R20,1
 0006 01C0              xjmp L5
 0008           L2:
 0008                   .dbline 13
 0008           L3:
 0008                   .dbline 13
 0008 4395              inc R20
 000A           L5:
 000A                   .dbline 13
 000A           ; unsigned char i;
 000A           ; for (i=1;i<t;i++);
 000A 242E              mov R2,R20
 000C 3324              clr R3
 000E 2016              cp R2,R16
 0010 3106              cpc R3,R17
 0012 D0F3              brlo L2
 0014                   .dbline -2
 0014           L1:
 0014 0E940000          xcall pop_gset1
 0018                   .dbline 0 ; func end
 0018 0895              ret
 001A                   .dbsym r i 20 c
 001A                   .dbsym r t 16 i
 001A                   .dbend
 001A                   .dbfunc e delay_1ms _delay_1ms fV
 001A           ;              i -> R16,R17
                        .even
 001A           _delay_1ms::
 001A                   .dbline -1
 001A                   .dbline 16
 001A           ; }
 001A           ; void delay_1ms(void)                
 001A           ;   {
 001A                   .dbline 18
 001A 0027              clr R16
 001C 1127              clr R17
 001E 02C0              xjmp L10
 0020           L7:
 0020                   .dbline 18
 0020           L8:
 0020                   .dbline 18
 0020 0F5F              subi R16,255  ; offset = 1
 0022 1F4F              sbci R17,255
 0024           L10:
 0024                   .dbline 18
 0024           ;    unsigned int i;
 0024           ;    for (i=0;i<2286;i++);
 0024 0E3E              cpi R16,238
 0026 E8E0              ldi R30,8
 0028 1E07              cpc R17,R30
 002A D0F3              brlo L7
 002C                   .dbline -2
 002C           L6:
 002C                   .dbline 0 ; func end
 002C 0895              ret
 002E                   .dbsym r i 16 i
 002E                   .dbend
 002E                   .dbfunc e delay_nms _delay_nms fV
 002E           ;              i -> R20,R21
 002E           ;              n -> R22,R23
                        .even
 002E           _delay_nms::
 002E 0E940000          xcall push_gset2
 0032 B801              movw R22,R16
 0034                   .dbline -1
 0034                   .dbline 21
 0034           ;   }
 0034           ; void delay_nms(unsigned int n)      
 0034           ;   {
 0034                   .dbline 22
 0034           ;    unsigned int i=0;
 0034 4427              clr R20
 0036 5527              clr R21
 0038                   .dbline 23
 0038           ;    for (i=0;i<n;i++)
 0038 03C0              xjmp L15
 003A           L12:
 003A                   .dbline 24
 003A EFDF              xcall _delay_1ms
 003C           L13:
 003C                   .dbline 23
 003C 4F5F              subi R20,255  ; offset = 1
 003E 5F4F              sbci R21,255
 0040           L15:
 0040                   .dbline 23
 0040 4617              cp R20,R22
 0042 5707              cpc R21,R23
 0044 D0F3              brlo L12
 0046                   .dbline -2
 0046           L11:
 0046 0E940000          xcall pop_gset2
 004A                   .dbline 0 ; func end
 004A 0895              ret
 004C                   .dbsym r i 20 i
 004C                   .dbsym r n 22 i
 004C                   .dbend
 004C                   .dbfunc e l_delay _l_delay fV
 004C           ;              i -> R16
                        .even
 004C           _l_delay::
 004C                   .dbline -1
 004C                   .dbline 28
 004C           ;    delay_1ms();
 004C           ;   }
 004C           ;   
 004C           ; void l_delay()                                     /* 延时  */
 004C           ; {
 004C                   .dbline 29
 004C           ;     unsigned char i=33;
 004C 01E2              ldi R16,33
 004E 01C0              xjmp L18
 0050           L17:
 0050                   .dbline 32
 0050                   .dbline 33
 0050 0A95              dec R16
 0052                   .dbline 34
 0052           L18:
 0052                   .dbline 31
 0052           ;       
 0052           ;     while(i!=0)
 0052 0023              tst R16
 0054 E9F7              brne L17
 0056                   .dbline -2
 0056           L16:
 0056                   .dbline 0 ; func end
 0056 0895              ret
 0058                   .dbsym r i 16 c
 0058                   .dbend
 0058                   .dbfunc e s_delay _s_delay fV
 0058           ;              i -> R16
                        .even
 0058           _s_delay::
 0058                   .dbline -1
 0058                   .dbline 38
 0058           ;     {
 0058           ;       i--;
 0058           ;       }
 0058           ; }
 0058           ; 
 0058           ; void s_delay()                                      /* 延时  */
 0058           ; {
 0058                   .dbline 39
 0058           ;     unsigned char i=11;
 0058 0BE0              ldi R16,11
 005A 01C0              xjmp L22
 005C           L21:
 005C                   .dbline 42
 005C                   .dbline 43
 005C 0A95              dec R16
 005E                   .dbline 44
 005E           L22:
 005E                   .dbline 41
 005E           ;       
 005E           ;     while(i!=0)
 005E 0023              tst R16
 0060 E9F7              brne L21
 0062                   .dbline -2
 0062           L20:
 0062                   .dbline 0 ; func end
 0062 0895              ret
 0064                   .dbsym r i 16 c
 0064                   .dbend
 0064                   .dbfunc e move _move fV
 0064           ;              i -> R20,R21
                        .even
 0064           _move::
 0064 0E940000          xcall push_gset1
 0068                   .dbline -1
 0068                   .dbline 48
 0068           ;     {
 0068           ;     i--;
 0068           ;     }
 0068           ; }  
 0068           ; 
 0068           ; void move()
 0068           ; {int i;
 0068                   .dbline 49
 0068           ;  for(i=0;i<128;i++)
 0068 4427              clr R20
 006A 5527              clr R21
 006C           L25:
 006C                   .dbline 50
 006C                   .dbline 50
 006C 08EF              ldi R16,248
 006E 10E0              ldi R17,0
 0070 1FD0              xcall _lcd_w
 0072                   .dbline 51
 0072 02E0              ldi R16,2
 0074 10E0              ldi R17,0
 0076 DBDF              xcall _delay_nms
 0078                   .dbline 51
 0078           L26:
 0078                   .dbline 49
 0078 4F5F              subi R20,255  ; offset = 1
 007A 5F4F              sbci R21,255
 007C                   .dbline 49
 007C 4038              cpi R20,128
 007E E0E0              ldi R30,0
 0080 5E07              cpc R21,R30
 0082 A4F3              brlt L25
 0084                   .dbline -2
 0084           L24:
 0084 0E940000          xcall pop_gset1
 0088                   .dbline 0 ; func end
 0088 0895              ret
 008A                   .dbsym r i 20 I
 008A                   .dbend
 008A                   .dbfunc e move1 _move1 fV
 008A           ;              i -> R20,R21
                        .even
 008A           _move1::
 008A 0E940000          xcall push_gset1
 008E                   .dbline -1
 008E                   .dbline 55
 008E           ; {lcd_w(0xf8);
 008E           ; delay_nms(2);}
 008E           ;   }
 008E           ;   
 008E           ; void move1()
 008E           ; {int i;
 008E                   .dbline 56
 008E           ;  for(i=0;i<64;i++)
 008E 4427              clr R20
 0090 5527              clr R21
 0092           L30:
 0092                   .dbline 57
 0092                   .dbline 57
 0092 06EF              ldi R16,246
 0094 10E0              ldi R17,0
 0096 0CD0              xcall _lcd_w
 0098                   .dbline 58
 0098 02E0              ldi R16,2
 009A 10E0              ldi R17,0
 009C C8DF              xcall _delay_nms
 009E                   .dbline 58
 009E           L31:
 009E                   .dbline 56
 009E 4F5F              subi R20,255  ; offset = 1
 00A0 5F4F              sbci R21,255
 00A2                   .dbline 56
 00A2 4034              cpi R20,64
 00A4 E0E0              ldi R30,0
 00A6 5E07              cpc R21,R30
 00A8 A4F3              brlt L30
 00AA                   .dbline -2
 00AA           L29:
 00AA 0E940000          xcall pop_gset1
 00AE                   .dbline 0 ; func end
 00AE 0895              ret
 00B0                   .dbsym r i 20 I
 00B0                   .dbend
 00B0                   .dbfunc e lcd_w _lcd_w fV
 00B0           ;              p -> R20,R21
 00B0           ;           data -> R16
                        .even
 00B0           _lcd_w::
 00B0 0E940000          xcall push_gset1
 00B4                   .dbline -1
 00B4                   .dbline 61
 00B4           ; {lcd_w(0xf6);
 00B4           ; delay_nms(2);}
 00B4           ;   }
 00B4           ; void lcd_w(unsigned char data)
 00B4           ; {unsigned char *p=(unsigned char *)(LCD);
 00B4                   .dbline 61
 00B4 40E0              ldi R20,36864
 00B6 50E9              ldi R21,144
 00B8           L35:
 00B8                   .dbline 62
 00B8           L36:
 00B8                   .dbline 62
 00B8           ; while((PINE&0x80)!=0x00);
 00B8 81B1              in R24,0x1
 00BA 8078              andi R24,128
 00BC E9F7              brne L35
 00BE                   .dbline 63
 00BE           ; dat;
 00BE C09A              sbi 0x18,0
 00C0                   .dbline 64
 00C0           ; *p=data;
 00C0 FA01              movw R30,R20
 00C2 0083              std z+0,R16
 00C4                   .dbline 65
 00C4           ; cl_dat;

⌨️ 快捷键说明

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