📄 lesson1.lis
字号:
0090 E8DF rcall _All_led
0092 .dbline 79
0092 ; One_led(i,1); //点亮指定的LED
0092 21E0 ldi R18,1
0094 042F mov R16,R20
0096 C7DF rcall _One_led
0098 .dbline 80
0098 ; Delayms(MS); //延时指定的时间
0098 0A2D mov R16,R10
009A 1127 clr R17
009C B1DF rcall _Delayms
009E .dbline 81
009E ; All_led(0); //全部熄灭
009E 0027 clr R16
00A0 E0DF rcall _All_led
00A2 .dbline 82
00A2 ; }
00A2 L18:
00A2 .dbline 76
00A2 4395 inc R20
00A4 L20:
00A4 .dbline 76
00A4 4830 cpi R20,8
00A6 98F3 brlo L17
00A8 X4:
00A8 .dbline -2
00A8 L16:
00A8 .dbline 0 ; func end
00A8 4991 ld R20,y+
00AA A990 ld R10,y+
00AC 0895 ret
00AE .dbsym r i 20 c
00AE .dbsym r MS 10 c
00AE .dbend
00AE .dbfunc e Flash_LED _Flash_LED fV
00AE ; time -> R20
00AE ; MS -> R10
00AE ; number -> R12
.even
00AE _Flash_LED::
00AE 00D0 rcall push_xgset303C
00B0 A22E mov R10,R18
00B2 C02E mov R12,R16
00B4 .dbline -1
00B4 .dbline 92
00B4 ; }
00B4 ; /*******************************************
00B4 ; 函数名称: Flash_led
00B4 ; 功 能: 闪烁指定的LED(第几盏就闪烁几次)
00B4 ; 参 数: number--指定的LED
00B4 ; MS--LED闪烁的时间间隔
00B4 ; 返回值 : 无
00B4 ; /********************************************/
00B4 ; void Flash_LED(uchar number,uchar MS)
00B4 ; {
00B4 .dbline 93
00B4 ; uchar time=6;
00B4 46E0 ldi R20,6
00B6 .dbline 94
00B6 ; for(;time>0;time--)
00B6 11C0 rjmp L25
00B8 L22:
00B8 .dbline 95
00B8 ; {
00B8 .dbline 96
00B8 ; All_led(0); //熄灭所有的LED
00B8 0027 clr R16
00BA D3DF rcall _All_led
00BC .dbline 97
00BC ; One_led(number,1); //点亮指定的LED
00BC 21E0 ldi R18,1
00BE 0C2D mov R16,R12
00C0 B2DF rcall _One_led
00C2 .dbline 98
00C2 ; Delayms(MS); //延时指定的时间
00C2 0A2D mov R16,R10
00C4 1127 clr R17
00C6 9CDF rcall _Delayms
00C8 .dbline 99
00C8 ; All_led(0); //熄灭所有的LED
00C8 0027 clr R16
00CA CBDF rcall _All_led
00CC .dbline 100
00CC ; Delayms(MS); //延时指定的时间
00CC 0A2D mov R16,R10
00CE 1127 clr R17
00D0 97DF rcall _Delayms
00D2 .dbline 101
00D2 ; One_led(number,0); //熄灭指定的LED
00D2 2227 clr R18
00D4 0C2D mov R16,R12
00D6 A7DF rcall _One_led
00D8 .dbline 102
00D8 ; }
00D8 L23:
00D8 .dbline 94
00D8 4A95 dec R20
00DA L25:
00DA .dbline 94
00DA 80E0 ldi R24,0
00DC 8417 cp R24,R20
00DE 60F3 brlo L22
00E0 X5:
00E0 .dbline -2
00E0 L21:
00E0 .dbline 0 ; func end
00E0 00C0 rjmp pop_xgset303C
00E2 .dbsym r time 20 c
00E2 .dbsym r MS 10 c
00E2 .dbsym r number 12 c
00E2 .dbend
00E2 .dbfunc e main _main fV
00E2 ; i -> R22,R23
00E2 ; b -> R20,R21
.even
00E2 _main::
00E2 .dbline -1
00E2 .dbline 111
00E2 ; }
00E2 ; /*******************************************
00E2 ; 函数名称: main
00E2 ; 功 能: 1. 流水灯 2.闪烁指定的LED
00E2 ; 参 数: 无
00E2 ; 返回值 : 无
00E2 ; /********************************************/
00E2 ; void main()
00E2 ; {
00E2 .dbline 113
00E2 ; uint b,i;
00E2 ; b=0;
00E2 4427 clr R20
00E4 5527 clr R21
00E6 .dbline 114
00E6 ; DDRA=0XFF; //b指定闪烁的LED
00E6 8FEF ldi R24,255
00E8 8ABB out 0x1a,R24
00EA 32C0 rjmp L28
00EC L27:
00EC .dbline 116
00EC ; while(1)
00EC ; {
00EC .dbline 117
00EC ; if(b<3600)b++,b++;
00EC 4031 cpi R20,16
00EE EEE0 ldi R30,14
00F0 5E07 cpc R21,R30
00F2 20F4 brsh L30
00F4 X6:
00F4 .dbline 117
00F4 4F5F subi R20,255 ; offset = 1
00F6 5F4F sbci R21,255
00F8 4F5F subi R20,255 ; offset = 1
00FA 5F4F sbci R21,255
00FC L30:
00FC .dbline 118
00FC ; if(b%7==0)b++;
00FC 27E0 ldi R18,7
00FE 30E0 ldi R19,0
0100 8A01 movw R16,R20
0102 00D0 rcall mod16u
0104 0030 cpi R16,0
0106 0107 cpc R16,R17
0108 11F4 brne L32
010A X7:
010A .dbline 118
010A 4F5F subi R20,255 ; offset = 1
010C 5F4F sbci R21,255
010E L32:
010E .dbline 119
010E ; if(b==3600)b=0;
010E 4031 cpi R20,16
0110 EEE0 ldi R30,14
0112 5E07 cpc R21,R30
0114 11F4 brne L34
0116 X8:
0116 .dbline 119
0116 4427 clr R20
0118 5527 clr R21
011A L34:
011A .dbline 120
011A ; i=(int)(b%8>0);
011A CA01 movw R24,R20
011C 8770 andi R24,7
011E 9070 andi R25,0
0120 8030 cpi R24,0
0122 8907 cpc R24,R25
0124 19F0 breq L36
0126 X9:
0126 61E0 ldi R22,1
0128 70E0 ldi R23,0
012A 02C0 rjmp L37
012C L36:
012C 6627 clr R22
012E 7727 clr R23
0130 L37:
0130 .dbline 121
0130 ; switch(i)
0130 6030 cpi R22,0
0132 6707 cpc R22,R23
0134 29F0 breq L40
0136 X10:
0136 6130 cpi R22,1
0138 E0E0 ldi R30,0
013A 7E07 cpc R23,R30
013C 21F0 breq L41
013E X11:
013E 08C0 rjmp L38
0140 L40:
0140 .dbline 124
0140 ; {
0140 ; case 0:
0140 ; Flow_LED(200); //i=0,以流水灯的方式显示
0140 08EC ldi R16,200
0142 A0DF rcall _Flow_LED
0144 .dbline 125
0144 ; break;
0144 05C0 rjmp L39
0146 L41:
0146 .dbline 127
0146 ; case 1:
0146 ; Flash_LED(b%8,100); //i=1,以闪烁灯的方式显示
0146 24E6 ldi R18,100
0148 042F mov R16,R20
014A 0770 andi R16,7
014C 1070 andi R17,0
014E AFDF rcall _Flash_LED
0150 .dbline 128
0150 ; }
0150 L38:
0150 L39:
0150 .dbline 129
0150 ; }
0150 L28:
0150 .dbline 115
0150 CDCF rjmp L27
0152 X12:
0152 .dbline -2
0152 L26:
0152 .dbline 0 ; func end
0152 0895 ret
0154 .dbsym r i 22 i
0154 .dbsym r b 20 i
0154 .dbend
0154 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -