📄 led.lst
字号:
__start:
__text_start:
0019 E5CF LDI R28,0x5F
001A E0D2 LDI R29,2
001B BFCD OUT 0x3D,R28
001C BFDE OUT 0x3E,R29
001D 51C0 SUBI R28,0x10
001E 40D0 SBCI R29,0
001F EA0A LDI R16,0xAA
0020 8308 STD Y+0,R16
0021 2400 CLR R0
0022 E6E0 LDI R30,0x60
0023 E0F0 LDI R31,0
0024 E010 LDI R17,0
0025 36E0 CPI R30,0x60
0026 07F1 CPC R31,R17
0027 F011 BEQ 0x002A
0028 9201 ST R0,Z+
0029 CFFB RJMP 0x0025
002A 8300 STD Z+0,R16
002B E3E2 LDI R30,0x32
002C E0F0 LDI R31,0
002D E6A0 LDI R26,0x60
002E E0B0 LDI R27,0
002F E010 LDI R17,0
0030 33E2 CPI R30,0x32
0031 07F1 CPC R31,R17
0032 F021 BEQ 0x0037
0033 95C8 LPM
0034 9631 ADIW R30,1
0035 920D ST R0,X+
0036 CFF9 RJMP 0x0030
0037 D018 RCALL _main
_exit:
0038 CFFF RJMP _exit
FILE: C:\ATMega8515\LED\init.c
(0001) //ICC-AVR application builder : 2006-4-27 12:39:24
(0002) // Target : M8515
(0003) // Crystal: 11.0592Mhz
(0004)
(0005) #include <iom8515v.h>
(0006) #include <macros.h>
(0007)
(0008) void port_init(void)
(0009) {
(0010) PORTA = 0x00;
_port_init:
0039 2422 CLR R2
003A BA2B OUT 0x1B,R2
(0011) DDRA = 0xFF;
003B EF8F LDI R24,0xFF
003C BB8A OUT 0x1A,R24
(0012) PORTB = 0x00;
003D BA28 OUT 0x18,R2
(0013) DDRB = 0x00;
003E BA27 OUT 0x17,R2
(0014) PORTC = 0x00;
003F BA25 OUT 0x15,R2
(0015) DDRC = 0x20;
0040 E280 LDI R24,0x20
0041 BB84 OUT 0x14,R24
(0016) PORTD = 0x00;
0042 BA22 OUT 0x12,R2
(0017) DDRD = 0x00;
0043 BA21 OUT 0x11,R2
(0018) PORTE = 0x00;
0044 B827 OUT 0x07,R2
(0019) DDRE = 0x00;
0045 B826 OUT 0x06,R2
0046 9508 RET
(0020) }
(0021)
(0022) //call this routine to initialize all peripherals
(0023) void init_devices(void)
(0024) {
(0025) //stop errant interrupts until set up
(0026) CLI(); //disable all interrupts
_init_devices:
0047 94F8 BCLR 7
(0027) port_init();
0048 DFF0 RCALL _port_init
(0028)
(0029) MCUCR = 0x00;
0049 2422 CLR R2
004A BE25 OUT 0x35,R2
(0030) EMCUCR = 0x00;
004B BE26 OUT 0x36,R2
(0031) GICR = 0x00;
004C BE2B OUT 0x3B,R2
(0032) TIMSK = 0x00;
004D BE29 OUT 0x39,R2
(0033) SEI(); //re-enable interrupts
004E 9478 BSET 7
004F 9508 RET
FILE: C:\ATMega8515\LED\main.c
(0001) #include <iom8515v.h>
(0002) #include"ForATmega8515.h"
(0003)
(0004)
(0005) void delay(uint ticks);
(0006)
(0007) void main()
(0008) {
(0009) uchar leddata=1;
_main:
leddata --> R20
0050 E041 LDI R20,1
(0010) init_devices();
0051 DFF5 RCALL _init_devices
(0011) PORTC&=~LED; //开LED显示
0052 98AD CBI 0x15,5
0053 C00A RJMP 0x005E
(0012) while(1)
(0013) {
(0014) PORTA=~leddata;//输出数据
0054 2E24 MOV R2,R20
0055 9420 COM R2
0056 BA2B OUT 0x1B,R2
(0015) leddata<<=1; //LED左移一位
0057 0F44 LSL R20
(0016) delay(5000); //延时
0058 E808 LDI R16,0x88
0059 E113 LDI R17,0x13
005A D005 RCALL _delay
(0017) if(leddata==0)leddata=1;
005B 2344 TST R20
005C F409 BNE 0x005E
005D E041 LDI R20,1
005E CFF5 RJMP 0x0054
005F 9508 RET
_delay:
i --> R20
ticks --> R16
0060 D015 RCALL push_gset1
(0018) }
(0019) }
(0020)
(0021)
(0022) void delay(uint ticks)
(0023) {
(0024) uchar i;
(0025) for(;ticks!=0;ticks--)for(i=200;i!=0;i--);
FILE: <library>
0061 C007 RJMP 0x0069
0062 EC48 LDI R20,0xC8
0063 C001 RJMP 0x0065
0064 954A DEC R20
0065 2344 TST R20
0066 F7E9 BNE 0x0064
0067 5001 SUBI R16,1
0068 4010 SBCI R17,0
0069 3000 CPI R16,0
006A 0701 CPC R16,R17
006B F7B1 BNE 0x0062
006C D00C RCALL pop_gset1
006D 9508 RET
push_gset5:
006E 92FA ST R15,-Y
006F 92EA ST R14,-Y
push_gset4:
0070 92DA ST R13,-Y
0071 92CA ST R12,-Y
push_gset3:
0072 92BA ST R11,-Y
0073 92AA ST R10,-Y
push_gset2:
0074 937A ST R23,-Y
0075 936A ST R22,-Y
push_gset1:
0076 935A ST R21,-Y
0077 934A ST R20,-Y
0078 9508 RET
pop_gset1:
0079 E0E1 LDI R30,1
pop:
007A 9149 LD R20,Y+
007B 9159 LD R21,Y+
007C FDE0 SBRC R30,0
007D 9508 RET
007E 9169 LD R22,Y+
007F 9179 LD R23,Y+
0080 FDE1 SBRC R30,1
0081 9508 RET
0082 90A9 LD R10,Y+
0083 90B9 LD R11,Y+
0084 FDE2 SBRC R30,2
0085 9508 RET
0086 90C9 LD R12,Y+
0087 90D9 LD R13,Y+
0088 FDE3 SBRC R30,3
0089 9508 RET
008A 90E9 LD R14,Y+
008B 90F9 LD R15,Y+
008C 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -