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 + -
显示快捷键?