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

📄 lesson4.lis

📁 AVR单片机视频教程的课件和每一次课的源程序是学习AVR单片机的首选 第4节
💻 LIS
字号:
                        .module lesson4.c
                        .area code(ram, con, rel)
                        .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                   .dbfile I:\AVR视频教程\视频教程\lesson4\lesson4\lesson4.c
 0020                   .dbsym e table _table A[32:16]I
                        .area text(rom, con, rel)
 0000                   .dbfile I:\AVR视频教程\视频教程\lesson4\lesson4\lesson4.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_gset2
 0004                   .dbline -1
 0004                   .dbline 9
 0004           ; #include <iom16v.h>
 0004           ; #include <macros.h>
 0004           ; #define  uchar unsigned char
 0004           ; #define  uint  unsigned int
 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           ; void delay(uint ms)
 0004           ; {
 0004                   .dbline 11
 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 12
 000A           ;          {
 000A                   .dbline 13
 000A 6627              clr R22
 000C 7727              clr R23
 000E 02C0              xjmp L9
 0010           L6:
 0010                   .dbline 13
 0010           L7:
 0010                   .dbline 13
 0010 6F5F              subi R22,255  ; offset = 1
 0012 7F4F              sbci R23,255
 0014           L9:
 0014                   .dbline 13
 0014 6537              cpi R22,117
 0016 E4E0              ldi R30,4
 0018 7E07              cpc R23,R30
 001A D0F3              brlo L6
 001C                   .dbline 14
 001C           L3:
 001C                   .dbline 11
 001C 4F5F              subi R20,255  ; offset = 1
 001E 5F4F              sbci R21,255
 0020           L5:
 0020                   .dbline 11
 0020 4017              cp R20,R16
 0022 5107              cpc R21,R17
 0024 90F3              brlo L2
 0026                   .dbline -2
 0026                   .dbline 15
 0026           ;          for(j=0;j<1141;j++);
 0026           ;        }
 0026           ; }
 0026           L1:
 0026 0E940000          xcall pop_gset2
 002A                   .dbline 0 ; func end
 002A 0895              ret
 002C                   .dbsym r i 20 i
 002C                   .dbsym r j 22 i
 002C                   .dbsym r ms 16 i
 002C                   .dbend
 002C                   .dbfunc e show _show fV
 002C           ;              k -> R20
 002C           ;              j -> R22
                        .even
 002C           _show::
 002C 0E940000          xcall push_gset2
 0030 422F              mov R20,R18
 0032 602F              mov R22,R16
 0034                   .dbline -1
 0034                   .dbline 17
 0034           ; void show(uchar j,uchar k)
 0034           ; {
 0034                   .dbline 18
 0034           ;     PORTA|=BIT(3);
 0034 DB9A              sbi 0x1b,3
 0036                   .dbline 19
 0036           ;       PORTB=table[j];
 0036 82E0              ldi R24,2
 0038 869F              mul R24,R22
 003A F001              movw R30,R0
 003C 80E0              ldi R24,<_table
 003E 90E0              ldi R25,>_table
 0040 E80F              add R30,R24
 0042 F91F              adc R31,R25
 0044 0590              lpm R0,Z+
 0046 1490              lpm R1,Z
 0048 F001              movw R30,R0
 004A E8BB              out 0x18,R30
 004C                   .dbline 20
 004C           ;       PORTA&=~BIT(3);
 004C DB98              cbi 0x1b,3
 004E                   .dbline 22
 004E           ;       
 004E           ;       PORTB=0XFF;
 004E 8FEF              ldi R24,255
 0050 88BB              out 0x18,R24
 0052                   .dbline 23
 0052           ;       PORTB&=~BIT(k);
 0052 01E0              ldi R16,1
 0054 142F              mov R17,R20
 0056 0E940000          xcall lsl8
 005A 202E              mov R2,R16
 005C 2094              com R2
 005E 38B2              in R3,0x18
 0060 3220              and R3,R2
 0062 38BA              out 0x18,R3
 0064                   .dbline 24
 0064           ;       PORTA|=BIT(4);
 0064 DC9A              sbi 0x1b,4
 0066                   .dbline 25
 0066           ;       PORTA&=~BIT(4);
 0066 DC98              cbi 0x1b,4
 0068                   .dbline 26
 0068           ;       delay(1);
 0068 01E0              ldi R16,1
 006A 10E0              ldi R17,0
 006C C9DF              xcall _delay
 006E                   .dbline -2
 006E                   .dbline 27
 006E           ; }
 006E           L10:
 006E 0E940000          xcall pop_gset2
 0072                   .dbline 0 ; func end
 0072 0895              ret
 0074                   .dbsym r k 20 c
 0074                   .dbsym r j 22 c
 0074                   .dbend
 0074                   .dbfunc e main _main fV
 0074           ;              i -> R20
                        .even
 0074           _main::
 0074                   .dbline -1
 0074                   .dbline 29
 0074           ; void main()
 0074           ; {
 0074                   .dbline 31
 0074           ;     uchar i;
 0074           ;     DDRA|=BIT(3);
 0074 D39A              sbi 0x1a,3
 0076                   .dbline 32
 0076           ;       DDRA|=BIT(4);
 0076 D49A              sbi 0x1a,4
 0078                   .dbline 33
 0078           ;       DDRB=0XFF;
 0078 8FEF              ldi R24,255
 007A 87BB              out 0x17,R24
 007C 09C0              xjmp L13
 007E           L12:
 007E                   .dbline 35
 007E           ;       while(1)
 007E           ;       {
 007E                   .dbline 36
 007E           ;       for(i=1;i<7;i++)
 007E 41E0              ldi R20,1
 0080 05C0              xjmp L18
 0082           L15:
 0082                   .dbline 37
 0082                   .dbline 38
 0082 242F              mov R18,R20
 0084 2150              subi R18,1
 0086 042F              mov R16,R20
 0088 D1DF              xcall _show
 008A                   .dbline 39
 008A           L16:
 008A                   .dbline 36
 008A 4395              inc R20
 008C           L18:
 008C                   .dbline 36
 008C 4730              cpi R20,7
 008E C8F3              brlo L15
 0090                   .dbline 40
 0090           L13:
 0090                   .dbline 34
 0090 F6CF              xjmp L12
 0092           X0:
 0092                   .dbline -2
 0092                   .dbline 41
 0092           ;       {
 0092           ;          show(i,i-1);
 0092           ;       }
 0092           ;       }
 0092           ; }
 0092           L11:
 0092                   .dbline 0 ; func end
 0092 0895              ret
 0094                   .dbsym r i 20 c
 0094                   .dbend

⌨️ 快捷键说明

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