📄 horselight.lis
字号:
.module HorseLight.c
.area text(rom, con, rel)
0000 .dbfile F:\Learn\AVR\Pro_Mega8\LED\Horse_Light\HorseLight.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
002E .dbfunc e main _main fV
002E ; i -> R20
.even
002E _main::
002E .dbline -1
002E .dbline 32
002E ;
002E ; //主函数,依次顺序打开LED
002E ; void main()
002E ; {
002E .dbline 34
002E ; unsigned char i;
002E ; DDRD=0xFF; //设置D口为输出模式
002E 8FEF ldi R24,255
0030 81BB out 0x11,R24
0032 .dbline 35
0032 ; PORTD=0xFF; //置高电平
0032 82BB out 0x12,R24
0034 0EC0 rjmp L12
0036 L11:
0036 .dbline 38
0036 ;
0036 ; while (1)
0036 ; {
0036 .dbline 39
0036 ; for(i=0;i<8;i++) //顺序打开LED
0036 4427 clr R20
0038 0AC0 rjmp L17
003A L14:
003A .dbline 40
003A .dbline 41
003A 01E0 ldi R16,1
003C 142F mov R17,R20
003E 00D0 rcall lsl8
0040 202E mov R2,R16
0042 2094 com R2
0044 22BA out 0x12,R2
0046 .dbline 42
0046 08EC ldi R16,200
0048 10E0 ldi R17,0
004A E4DF rcall _delay_ms
004C .dbline 43
004C L15:
004C .dbline 39
004C 4395 inc R20
004E L17:
004E .dbline 39
004E 4830 cpi R20,8
0050 A0F3 brlo L14
0052 .dbline 44
0052 L12:
0052 .dbline 37
0052 F1CF rjmp L11
0054 X0:
0054 .dbline -2
0054 .dbline 45
0054 ; {
0054 ; PORTD=~(1<<i);
0054 ; delay_ms(200);
0054 ; }
0054 ; }
0054 ; }
0054 L10:
0054 .dbline 0 ; func end
0054 0895 ret
0056 .dbsym r i 20 c
0056 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -