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