📄 lednum.lis
字号:
.module LedNum.c
.area text(rom, con, rel)
0000 .dbfile F:\Learn\AVR\Pro_Mega8\LED\Led_Num\LedNum.c
0000 .dbfunc e delay_1ms _delay_1ms fV
0000 ; i -> R16,R17
.even
0000 _delay_1ms::
0000 .dbline -1
0000 .dbline 13
0000 ; /******************************************/
0000 ; //文件名:HorseLight.c
0000 ; //功能: LED的控制
0000 ; //作者: young
0000 ; //时间: 2006.10.1
0000 ; //目标MCU:ATmega8
0000 ; //晶振: 8MHZ
0000 ; /******************************************/
0000 ; #include <iom8v.h>
0000 ;
0000 ; //延时1MS
0000 ; void delay_1ms(void)
0000 ; {
0000 .dbline 15
0000 ; unsigned int i;
0000 ; for(i=1;i<(unsigned int)(1144-2);i++)
0000 01E0 ldi R16,1
0002 10E0 ldi R17,0
0004 02C0 rjmp L5
0006 L2:
0006 .dbline 16
0006 L3:
0006 .dbline 15
0006 0F5F subi R16,255 ; offset = 1
0008 1F4F sbci R17,255
000A L5:
000A .dbline 15
000A 0637 cpi R16,118
000C E4E0 ldi R30,4
000E 1E07 cpc R17,R30
0010 D0F3 brlo L2
0012 .dbline -2
0012 .dbline 17
0012 ; ;
0012 ; }
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbsym r i 16 i
0014 .dbend
0014 .dbfunc e delay_ms _delay_ms fV
0014 ; i -> R20,R21
0014 ; n -> R22,R23
.even
0014 _delay_ms::
0014 00D0 rcall push_gset2
0016 B801 movw R22,R16
0018 .dbline -1
0018 .dbline 21
0018 ;
0018 ; //延时nMS
0018 ; void delay_ms(unsigned int n)
0018 ; {
0018 .dbline 22
0018 ; unsigned int i=0;
0018 4427 clr R20
001A 5527 clr R21
001C 03C0 rjmp L8
001E L7:
001E .dbline 24
001E .dbline 25
001E F0DF rcall _delay_1ms
0020 .dbline 26
0020 4F5F subi R20,255 ; offset = 1
0022 5F4F sbci R21,255
0024 .dbline 27
0024 L8:
0024 .dbline 23
0024 ; while(i<n)
0024 4617 cp R20,R22
0026 5707 cpc R21,R23
0028 D0F3 brlo L7
002A .dbline -2
002A .dbline 28
002A ; {
002A ; delay_1ms();
002A ; i++;
002A ; }
002A ; }
002A L6:
002A 00D0 rcall pop_gset2
002C .dbline 0 ; func end
002C 0895 ret
002E .dbsym r i 20 i
002E .dbsym r n 22 i
002E .dbend
.area lit(rom, con, rel)
0000 L11:
0000 3F06 .byte 63,6
0002 5B4F .byte 91,'O
0004 666D .byte 'f,'m
0006 7D07 .byte 125,7
0008 7F6F .byte 127,'o
.area text(rom, con, rel)
002E .dbfile F:\Learn\AVR\Pro_Mega8\LED\Led_Num\LedNum.c
002E .dbfunc e main _main fV
002E ; num -> y+0
002E ; i -> R20
.even
002E _main::
002E 2A97 sbiw R28,10
0030 .dbline -1
0030 .dbline 32
0030 ;
0030 ; //主函数,依次顺序打开LED
0030 ; void main()
0030 ; {
0030 .dbline 34
0030 ; unsigned char i;
0030 ; unsigned char num[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
0030 80E0 ldi R24,<L11
0032 90E0 ldi R25,>L11
0034 FE01 movw R30,R28
0036 0AE0 ldi R16,10
0038 10E0 ldi R17,0
003A FA93 st -y,R31
003C EA93 st -y,R30
003E 9A93 st -y,R25
0040 8A93 st -y,R24
0042 00D0 rcall asgncblk
0044 .dbline 35
0044 ; DDRD=0xFF; //设置D口为输出模式
0044 8FEF ldi R24,255
0046 81BB out 0x11,R24
0048 .dbline 36
0048 ; PORTD=0xFF; //置高电平
0048 82BB out 0x12,R24
004A 0FC0 rjmp L13
004C L12:
004C .dbline 39
004C ;
004C ; while (1)
004C ; {
004C .dbline 40
004C ; for(i=0;i<10;i++) //顺序打开LED
004C 4427 clr R20
004E 0BC0 rjmp L18
0050 L15:
0050 .dbline 41
0050 .dbline 42
0050 CE01 movw R24,R28
0052 E42F mov R30,R20
0054 FF27 clr R31
0056 E80F add R30,R24
0058 F91F adc R31,R25
005A 2080 ldd R2,z+0
005C 22BA out 0x12,R2
005E .dbline 43
005E 04EF ldi R16,500
0060 11E0 ldi R17,1
0062 D8DF rcall _delay_ms
0064 .dbline 44
0064 L16:
0064 .dbline 40
0064 4395 inc R20
0066 L18:
0066 .dbline 40
0066 4A30 cpi R20,10
0068 98F3 brlo L15
006A .dbline 45
006A L13:
006A .dbline 38
006A F0CF rjmp L12
006C X0:
006C .dbline -2
006C .dbline 46
006C ; {
006C ; PORTD=num[i];
006C ; delay_ms(500);
006C ; }
006C ; }
006C ; }
006C L10:
006C 2A96 adiw R28,10
006E .dbline 0 ; func end
006E 0895 ret
0070 .dbsym l num 0 A[10:10]c
0070 .dbsym r i 20 c
0070 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -