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

📄 shuma.lis

📁 AVR单片机视频教程的课件和每一次课的源程序是学习AVR单片机的首选 第4节
💻 LIS
字号:
                        .module shuma.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 C:\icc\examples.avr\learn\shumaguan\shuma.c
 0020                   .dbsym e table _table A[32:16]I
                        .area text(rom, con, rel)
 0000                   .dbfile C:\icc\examples.avr\learn\shumaguan\shuma.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 10
 0004           ; #include <iom16v.h>
 0004           ; #include <macros.h>
 0004           ; 
 0004           ; #define uchar unsigned char
 0004           ; #define uint  unsigned int
 0004           ; #pragma data:code 
 0004           ; const table[16]={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 12
 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 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           L3:
 001C                   .dbline 12
 001C 4F5F              subi R20,255  ; offset = 1
 001E 5F4F              sbci R21,255
 0020           L5:
 0020                   .dbline 12
 0020 4017              cp R20,R16
 0022 5107              cpc R21,R17
 0024 90F3              brlo L2
 0026                   .dbline -2
 0026                   .dbline 14
 0026           ;  for(j=0;j<1141;j++); //1141是在8MHz晶振下,通过软件仿真反复实验得到的数值
 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           ;            num -> R20
 002C           ;           data -> 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           ; 
 0034           ; void show(uchar data,uchar num)
 0034           ; {
 0034                   .dbline 18
 0034           ;         PORTB=table[data];
 0034 82E0              ldi R24,2
 0036 869F              mul R24,R22
 0038 F001              movw R30,R0
 003A 80E0              ldi R24,<_table
 003C 90E0              ldi R25,>_table
 003E E80F              add R30,R24
 0040 F91F              adc R31,R25
 0042 0590              lpm R0,Z+
 0044 1490              lpm R1,Z
 0046 F001              movw R30,R0
 0048 E8BB              out 0x18,R30
 004A                   .dbline 19
 004A           ;       PORTA|=BIT(3);//00001000
 004A DB9A              sbi 0x1b,3
 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(num);//0XFE;
 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 num 20 c
 0074                   .dbsym r data 22 c
 0074                   .dbend
 0074                   .dbfunc e main _main fV
 0074           ;              j -> R20,R21
 0074           ;              i -> R22,R23
                        .even
 0074           _main::
 0074                   .dbline -1
 0074                   .dbline 29
 0074           ; void main()
 0074           ; {
 0074                   .dbline 31
 0074           ;      uint i,j;
 0074           ;      DDRA=0XFF;
 0074 8FEF              ldi R24,255
 0076 8ABB              out 0x1a,R24
 0078                   .dbline 32
 0078           ;      DDRB=0XFF;
 0078 87BB              out 0x17,R24
 007A                   .dbline 33
 007A           ;      PORTA|=BIT(6);
 007A DE9A              sbi 0x1b,6
 007C 2BC0              xjmp L13
 007E           L12:
 007E                   .dbline 43
 007E           ;      
 007E           ; /*     PORTB=0X3F;
 007E           ;      PORTA|=BIT(3);//00001000
 007E           ;      PORTA&=~BIT(3);
 007E           ;      
 007E           ;      PORTB=0XFE;
 007E           ;      PORTA|=BIT(4);
 007E           ;      PORTA&=~BIT(4);*/
 007E           ;      while(1)
 007E           ;      {
 007E                   .dbline 44
 007E           ;       for(j=0;j<600;j++)
 007E 4427              clr R20
 0080 5527              clr R21
 0082 24C0              xjmp L18
 0084           L15:
 0084                   .dbline 45
 0084           ;        {
 0084                   .dbline 46
 0084           ;         for(i=0;i<6;i++)
 0084 6627              clr R22
 0086 7727              clr R23
 0088 1BC0              xjmp L22
 008A           L19:
 008A                   .dbline 47
 008A                   .dbline 48
 008A 262F              mov R18,R22
 008C 84E6              ldi R24,100
 008E 90E0              ldi R25,0
 0090 2F93              push R18
 0092 3F93              push R19
 0094 9C01              movw R18,R24
 0096 8A01              movw R16,R20
 0098 0E940000          xcall div16u
 009C 1801              movw R2,R16
 009E 3F91              pop R19
 00A0 2F91              pop R18
 00A2 8B01              movw R16,R22
 00A4 020D              add R16,R2
 00A6 131D              adc R17,R3
 00A8 86E0              ldi R24,6
 00AA 90E0              ldi R25,0
 00AC 2F93              push R18
 00AE 3F93              push R19
 00B0 9C01              movw R18,R24
 00B2 0E940000          xcall mod16u
 00B6 3F91              pop R19
 00B8 2F91              pop R18
 00BA B8DF              xcall _show
 00BC                   .dbline 49
 00BC           L20:
 00BC                   .dbline 46
 00BC 6F5F              subi R22,255  ; offset = 1
 00BE 7F4F              sbci R23,255
 00C0           L22:
 00C0                   .dbline 46
 00C0 6630              cpi R22,6
 00C2 E0E0              ldi R30,0
 00C4 7E07              cpc R23,R30
 00C6 08F3              brlo L19
 00C8                   .dbline 50
 00C8           L16:
 00C8                   .dbline 44
 00C8 4F5F              subi R20,255  ; offset = 1
 00CA 5F4F              sbci R21,255
 00CC           L18:
 00CC                   .dbline 44
 00CC 4835              cpi R20,88
 00CE E2E0              ldi R30,2
 00D0 5E07              cpc R21,R30
 00D2 C0F2              brlo L15
 00D4                   .dbline 51
 00D4           L13:
 00D4                   .dbline 42
 00D4 D4CF              xjmp L12
 00D6           X0:
 00D6                   .dbline -2
 00D6                   .dbline 53
 00D6           ;         {
 00D6           ;         show((i+j/100)%6,i);     
 00D6           ;         }
 00D6           ;        }
 00D6           ;      }
 00D6           ; 
 00D6           ; }
 00D6           L11:
 00D6                   .dbline 0 ; func end
 00D6 0895              ret
 00D8                   .dbsym r j 20 i
 00D8                   .dbsym r i 22 i
 00D8                   .dbend

⌨️ 快捷键说明

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