lesson4.lis

来自「AVR单片机C语言编程及应用实例 适合初学者的学习研究 其中包含Atmega」· LIS 代码 · 共 238 行

LIS
238
字号
                        .module lesson4.c
                        .area text(rom, con, rel)
 0000                   .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\lesson4\lesson4.c
                        .area code(ram, con, rel)
 0000                   .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\lesson4\lesson4.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\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 00D0              rcall push_xgsetF000
 0002                   .dbline -1
 0002                   .dbline 9
 0002           ; #include <iom16v.h>
 0002           ; #include <macros.h>
 0002           ; #define  uchar unsigned char
 0002           ; #define  uint  unsigned int
 0002           ; #pragma data:code 
 0002           ; const  table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
 0002           ;                          0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
 0002           ; void delay(uint ms)
 0002           ; {
 0002                   .dbline 11
 0002           ;         uint i,j;
 0002           ;       for(i=0;i<ms;i++)
 0002 4427              clr R20
 0004 5527              clr R21
 0006 0BC0              rjmp L5
 0008           L2:
 0008                   .dbline 12
 0008           ;          {
 0008                   .dbline 13
 0008           ;          for(j=0;j<1141;j++);
 0008 6627              clr R22
 000A 7727              clr R23
 000C 02C0              rjmp L9
 000E           L6:
 000E                   .dbline 13
 000E           L7:
 000E                   .dbline 13
 000E 6F5F              subi R22,255  ; offset = 1
 0010 7F4F              sbci R23,255
 0012           L9:
 0012                   .dbline 13
 0012 6537              cpi R22,117
 0014 E4E0              ldi R30,4
 0016 7E07              cpc R23,R30
 0018 D0F3              brlo L6
 001A           X0:
 001A                   .dbline 14
 001A           ;        }
 001A           L3:
 001A                   .dbline 11
 001A 4F5F              subi R20,255  ; offset = 1
 001C 5F4F              sbci R21,255
 001E           L5:
 001E                   .dbline 11
 001E 4017              cp R20,R16
 0020 5107              cpc R21,R17
 0022 90F3              brlo L2
 0024           X1:
 0024                   .dbline -2
 0024           L1:
 0024                   .dbline 0 ; func end
 0024 00C0              rjmp pop_xgsetF000
 0026                   .dbsym r i 20 i
 0026                   .dbsym r j 22 i
 0026                   .dbsym r ms 16 i
 0026                   .dbend
 0026                   .dbfunc e show _show fV
 0026           ;              k -> R10
 0026           ;              j -> R12
                        .even
 0026           _show::
 0026 AA92              st -y,R10
 0028 CA92              st -y,R12
 002A A22E              mov R10,R18
 002C C02E              mov R12,R16
 002E                   .dbline -1
 002E                   .dbline 17
 002E           ; }
 002E           ; void show(uchar j,uchar k)
 002E           ; {
 002E                   .dbline 18
 002E           ;     PORTA|=BIT(3);
 002E DB9A              sbi 0x1b,3
 0030                   .dbline 19
 0030           ;       PORTB=table[j];
 0030 80E0              ldi R24,<_table
 0032 90E0              ldi R25,>_table
 0034 EC2D              mov R30,R12
 0036 FF27              clr R31
 0038 EE0F              lsl R30
 003A FF1F              rol R31
 003C E80F              add R30,R24
 003E F91F              adc R31,R25
 0040 2590              lpm R2,Z+
 0042 3490              lpm R3,Z
 0044 28BA              out 0x18,R2
 0046                   .dbline 20
 0046           ;       PORTA&=~BIT(3);
 0046 DB98              cbi 0x1b,3
 0048                   .dbline 21
 0048           ;       PORTB=0XFF;
 0048 8FEF              ldi R24,255
 004A 88BB              out 0x18,R24
 004C                   .dbline 22
 004C           ;       PORTB&=~BIT(k);
 004C 01E0              ldi R16,1
 004E 1A2D              mov R17,R10
 0050 00D0              rcall lsl8
 0052 202E              mov R2,R16
 0054 2094              com R2
 0056 38B2              in R3,0x18
 0058 3220              and R3,R2
 005A 38BA              out 0x18,R3
 005C                   .dbline 23
 005C           ;       PORTA|=BIT(4);
 005C DC9A              sbi 0x1b,4
 005E                   .dbline 24
 005E           ;       PORTA&=~BIT(4);
 005E DC98              cbi 0x1b,4
 0060                   .dbline 25
 0060           ;       delay(50);
 0060 02E3              ldi R16,50
 0062 10E0              ldi R17,0
 0064 CDDF              rcall _delay
 0066                   .dbline -2
 0066           L10:
 0066                   .dbline 0 ; func end
 0066 C990              ld R12,y+
 0068 A990              ld R10,y+
 006A 0895              ret
 006C                   .dbsym r k 10 c
 006C                   .dbsym r j 12 c
 006C                   .dbend
 006C                   .dbfunc e main _main fV
 006C           ;              j -> R20
 006C           ;              i -> R22
                        .even
 006C           _main::
 006C                   .dbline -1
 006C                   .dbline 28
 006C           ; }
 006C           ; void main()
 006C           ; {
 006C                   .dbline 30
 006C           ;         uchar i,j;
 006C           ;         DDRA|=BIT(3);
 006C D39A              sbi 0x1a,3
 006E                   .dbline 31
 006E           ;       DDRA|=BIT(4);
 006E D49A              sbi 0x1a,4
 0070                   .dbline 32
 0070           ;       DDRB=0XFF;
 0070 8FEF              ldi R24,255
 0072 87BB              out 0x17,R24
 0074 14C0              rjmp L13
 0076           L12:
 0076                   .dbline 34
 0076           ;       while(1)
 0076           ;       {
 0076                   .dbline 35
 0076           ;        for(j=0;j<600;j++)
 0076 4427              clr R20
 0078 10C0              rjmp L18
 007A           L15:
 007A                   .dbline 36
 007A           ;         for(i=0;i<6;i++)
 007A 6627              clr R22
 007C 0BC0              rjmp L22
 007E           L19:
 007E                   .dbline 37
 007E           ;          show((i+j/100)%6,i);
 007E 262F              mov R18,R22
 0080 14E6              ldi R17,100
 0082 042F              mov R16,R20
 0084 00D0              rcall div8u
 0086 202E              mov R2,R16
 0088 062F              mov R16,R22
 008A 020D              add R16,R2
 008C 16E0              ldi R17,6
 008E 00D0              rcall mod8u
 0090 CADF              rcall _show
 0092           L20:
 0092                   .dbline 36
 0092 6395              inc R22
 0094           L22:
 0094                   .dbline 36
 0094 6630              cpi R22,6
 0096 98F3              brlo L19
 0098           X2:
 0098           L16:
 0098                   .dbline 35
 0098 4395              inc R20
 009A           L18:
 009A                   .dbline 35
 009A 4835              cpi R20,88
 009C 70F3              brlo L15
 009E           X3:
 009E                   .dbline 39
 009E           ;          
 009E           ;       }
 009E           L13:
 009E                   .dbline 33
 009E EBCF              rjmp L12
 00A0           X4:
 00A0                   .dbline -2
 00A0           L11:
 00A0                   .dbline 0 ; func end
 00A0 0895              ret
 00A2                   .dbsym r j 20 c
 00A2                   .dbsym r i 22 c
 00A2                   .dbend
 00A2           ; }

⌨️ 快捷键说明

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