📄 shuma.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 + -