📄 lednum.lst
字号:
__text_start:
__start:
0018 E5CF LDI R28,0x5F
0019 E0D4 LDI R29,4
001A BFCD OUT 0x3D,R28
001B BFDE OUT 0x3E,R29
001C 51C0 SUBI R28,0x10
001D 40D0 SBCI R29,0
001E EA0A LDI R16,0xAA
001F 8308 STD Y+0,R16
0020 2400 CLR R0
0021 E6E0 LDI R30,0x60
0022 E0F0 LDI R31,0
0023 E010 LDI R17,0
0024 36E0 CPI R30,0x60
0025 07F1 CPC R31,R17
0026 F011 BEQ 0x0029
0027 9201 ST R0,Z+
0028 CFFB RJMP 0x0024
0029 8300 STD Z+0,R16
002A E3E0 LDI R30,0x30
002B E0F0 LDI R31,0
002C E6A0 LDI R26,0x60
002D E0B0 LDI R27,0
002E E010 LDI R17,0
002F 33E0 CPI R30,0x30
0030 07F1 CPC R31,R17
0031 F021 BEQ 0x0036
0032 95C8 LPM
0033 9631 ADIW R30,1
0034 920D ST R0,X+
0035 CFF9 RJMP 0x002F
0036 D018 RCALL _main
_exit:
0037 CFFF RJMP _exit
FILE: F:\Learn\AVR\Pro_Mega8\LED\Led_Num\LedNum.c
(0001) /******************************************/
(0002) //文件名:HorseLight.c
(0003) //功能: LED的控制
(0004) //作者: young
(0005) //时间: 2006.10.1
(0006) //目标MCU:ATmega8
(0007) //晶振: 8MHZ
(0008) /******************************************/
(0009) #include <iom8v.h>
(0010)
(0011) //延时1MS
(0012) void delay_1ms(void)
(0013) {
(0014) unsigned int i;
(0015) for(i=1;i<(unsigned int)(1144-2);i++)
_delay_1ms:
i --> R16
0038 E001 LDI R16,1
0039 E010 LDI R17,0
003A C002 RJMP 0x003D
003B 5F0F SUBI R16,0xFF
003C 4F1F SBCI R17,0xFF
003D 3706 CPI R16,0x76
003E E0E4 LDI R30,4
003F 071E CPC R17,R30
0040 F3D0 BCS 0x003B
(0016) ;
(0017) }
0041 9508 RET
_delay_ms:
i --> R20
n --> R22
0042 D046 RCALL push_gset2
0043 01B8 MOVW R22,R16
(0018)
(0019) //延时nMS
(0020) void delay_ms(unsigned int n)
(0021) {
(0022) unsigned int i=0;
0044 2744 CLR R20
0045 2755 CLR R21
0046 C003 RJMP 0x004A
(0023) while(i<n)
(0024) {
(0025) delay_1ms();
0047 DFF0 RCALL _delay_1ms
(0026) i++;
0048 5F4F SUBI R20,0xFF
0049 4F5F SBCI R21,0xFF
004A 1746 CP R20,R22
004B 0757 CPC R21,R23
004C F3D0 BCS 0x0047
(0027) }
(0028) }
004D D022 RCALL pop_gset2
004E 9508 RET
_main:
num --> Y+0
i --> R20
004F 972A SBIW R28,0xA
(0029)
(0030) //主函数,依次顺序打开LED
(0031) void main()
(0032) {
(0033) unsigned char i;
(0034) unsigned char num[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
0050 E286 LDI R24,0x26
0051 E090 LDI R25,0
0052 01FE MOVW R30,R28
0053 E00A LDI R16,0xA
0054 E010 LDI R17,0
0055 93FA ST R31,-Y
0056 93EA ST R30,-Y
0057 939A ST R25,-Y
0058 938A ST R24,-Y
0059 D032 RCALL asgncblk
(0035) DDRD=0xFF; //设置D口为输出模式
005A EF8F LDI R24,0xFF
005B BB81 OUT 0x11,R24
(0036) PORTD=0xFF; //置高电平
005C BB82 OUT 0x12,R24
005D C00F RJMP 0x006D
(0037)
(0038) while (1)
(0039) {
(0040) for(i=0;i<10;i++) //顺序打开LED
005E 2744 CLR R20
005F C00B RJMP 0x006B
(0041) {
(0042) PORTD=num[i];
0060 01CE MOVW R24,R28
0061 2FE4 MOV R30,R20
0062 27FF CLR R31
0063 0FE8 ADD R30,R24
0064 1FF9 ADC R31,R25
0065 8020 LDD R2,Z+0
0066 BA22 OUT 0x12,R2
(0043) delay_ms(500);
0067 EF04 LDI R16,0xF4
0068 E011 LDI R17,1
0069 DFD8 RCALL _delay_ms
006A 9543 INC R20
006B 304A CPI R20,0xA
006C F398 BCS 0x0060
006D CFF0 RJMP 0x005E
(0044) }
(0045) }
(0046) }
FILE: <library>
006E 962A ADIW R28,0xA
006F 9508 RET
pop_gset2:
0070 E0E2 LDI R30,2
0071 C004 RJMP pop
push_gset1:
0072 935A ST R21,-Y
0073 934A ST R20,-Y
0074 9508 RET
pop_gset1:
0075 E0E1 LDI R30,1
pop:
0076 9149 LD R20,Y+
0077 9159 LD R21,Y+
0078 FDE0 SBRC R30,0
0079 9508 RET
007A 9169 LD R22,Y+
007B 9179 LD R23,Y+
007C FDE1 SBRC R30,1
007D 9508 RET
007E 90A9 LD R10,Y+
007F 90B9 LD R11,Y+
0080 FDE2 SBRC R30,2
0081 9508 RET
0082 90C9 LD R12,Y+
0083 90D9 LD R13,Y+
0084 FDE3 SBRC R30,3
0085 9508 RET
0086 90E9 LD R14,Y+
0087 90F9 LD R15,Y+
0088 9508 RET
push_gset2:
0089 937A ST R23,-Y
008A 936A ST R22,-Y
008B CFE6 RJMP push_gset1
asgncblk:
008C 93AA ST R26,-Y
008D 93BA ST R27,-Y
008E 93EA ST R30,-Y
008F 93FA ST R31,-Y
0090 920A ST R0,-Y
0091 81AF LDD R26,Y+7
0092 85B8 LDD R27,Y+8
0093 81ED LDD R30,Y+5
0094 81FE LDD R31,Y+6
0095 3000 CPI R16,0
0096 0701 CPC R16,R17
0097 F031 BEQ 0x009E
0098 95C8 LPM
0099 920D ST R0,X+
009A 9631 ADIW R30,1
009B 5001 SUBI R16,1
009C 4010 SBCI R17,0
009D CFF7 RJMP 0x0095
009E 9009 LD R0,Y+
009F 91F9 LD R31,Y+
00A0 91E9 LD R30,Y+
00A1 91B9 LD R27,Y+
00A2 91A9 LD R26,Y+
00A3 9624 ADIW R28,4
00A4 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -