📄 e.lst
字号:
__start:
__text_start:
0032 E5CF LDI R28,0x5F
0033 E0D4 LDI R29,4
0034 BFCD OUT 0x3D,R28
0035 BFDE OUT 0x3E,R29
0036 51C0 SUBI R28,0x10
0037 40D0 SBCI R29,0
0038 EA0A LDI R16,0xAA
0039 8308 STD Y+0,R16
003A 2400 CLR R0
003B E6E0 LDI R30,0x60
003C E0F0 LDI R31,0
003D E010 LDI R17,0
003E 36E1 CPI R30,0x61
003F 07F1 CPC R31,R17
0040 F011 BEQ 0x0043
0041 9201 ST R0,Z+
0042 CFFB RJMP 0x003E
0043 8300 STD Z+0,R16
0044 E6E4 LDI R30,0x64
0045 E0F0 LDI R31,0
0046 E6A0 LDI R26,0x60
0047 E0B0 LDI R27,0
0048 E010 LDI R17,0
0049 36E4 CPI R30,0x64
004A 07F1 CPC R31,R17
004B F021 BEQ 0x0050
004C 95C8 LPM
004D 9631 ADIW R30,1
004E 920D ST R0,X+
004F CFF9 RJMP 0x0049
0050 940E0093 CALL _main
_exit:
0052 CFFF RJMP _exit
FILE: C:\DOCUME~1\Administrator\桌面\456\FF.c
(0001) //ICC-AVR application builder : 2009-5-19 13:21:53
(0002) // Target : M16
(0003) // Crystal: 4.0000Mhz
(0004)
(0005) #include <iom16v.h>
(0006) #include <macros.h>
(0007) flash unsigned char led_7[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
(0008) 0x80,0x90,0x88,0x83,0xC6,0xA1,0x80,0x8E};
(0009) unsigned char counter;
(0010) void port_init(void)
(0011) {
(0012) PORTA = 0xFF;
_port_init:
0053 EF8F LDI R24,0xFF
0054 BB8B OUT 0x1B,R24
(0013) DDRA = 0xFF;
0055 BB8A OUT 0x1A,R24
(0014) PORTB = 0xFF;
0056 BB88 OUT 0x18,R24
(0015) DDRB = 0x00;
0057 2422 CLR R2
0058 BA27 OUT 0x17,R2
(0016) PORTC = 0xFF; //m103 output only
0059 BB85 OUT 0x15,R24
(0017) DDRC = 0x00;
005A BA24 OUT 0x14,R2
(0018) PORTD = 0xFF;
005B BB82 OUT 0x12,R24
(0019) DDRD = 0x00;
005C BA21 OUT 0x11,R2
(0020) }
005D 9508 RET
_int0_isr:
005E 922A ST R2,-Y
005F 938A ST R24,-Y
0060 939A ST R25,-Y
0061 B62F IN R2,0x3F
0062 922A ST R2,-Y
(0021)
(0022) #pragma interrupt_handler int0_isr:2
(0023) void int0_isr(void)
(0024) {
(0025) //external interupt on INT0
(0026) if (++counter>=16) counter = 0;
0063 91800060 LDS R24,_counter
0065 5F8F SUBI R24,0xFF
0066 2E28 MOV R2,R24
0067 92200060 STS _counter,R2
0069 3180 CPI R24,0x10
006A F018 BCS 0x006E
006B 2422 CLR R2
006C 92200060 STS _counter,R2
(0027) }
006E 9029 LD R2,Y+
006F BE2F OUT 0x3F,R2
0070 9199 LD R25,Y+
0071 9189 LD R24,Y+
0072 9029 LD R2,Y+
0073 9518 RETI
_int1_isr:
0074 922A ST R2,-Y
0075 938A ST R24,-Y
0076 B62F IN R2,0x3F
0077 922A ST R2,-Y
(0028)
(0029) #pragma interrupt_handler int1_isr:3
(0030) void int1_isr(void)
(0031) {
(0032) //external interupt on INT1
(0033) if (counter) --counter;
0078 90200060 LDS R2,_counter
007A 2022 TST R2
007B F029 BEQ 0x0081
007C 2D82 MOV R24,R2
007D 5081 SUBI R24,1
007E 93800060 STS _counter,R24
0080 C003 RJMP 0x0084
(0034) else counter = 15;
0081 E08F LDI R24,0xF
0082 93800060 STS _counter,R24
(0035) }
0084 9029 LD R2,Y+
0085 BE2F OUT 0x3F,R2
0086 9189 LD R24,Y+
0087 9029 LD R2,Y+
0088 9518 RETI
(0036)
(0037) //call this routine to initialise all peripherals
(0038) void init_devices(void)
(0039) {
(0040) //stop errant interrupts until set up
(0041) CLI(); //disable all interrupts
_init_devices:
0089 94F8 BCLR 7
(0042) port_init();
008A DFC8 RCALL _port_init
(0043)
(0044) MCUCR = 0x0A;
008B E08A LDI R24,0xA
008C BF85 OUT 0x35,R24
(0045) GICR = 0xC0;
008D EC80 LDI R24,0xC0
008E BF8B OUT 0x3B,R24
(0046) TIMSK = 0x00; //timer interrupt sources
008F 2422 CLR R2
0090 BE29 OUT 0x39,R2
(0047) SEI(); //re-enable interrupts
0091 9478 BSET 7
(0048) //all peripherals are now initialised
(0049) }
0092 9508 RET
(0050) void main(void)
(0051) {
(0052) PORTA=0xFF;
_main:
0093 EF8F LDI R24,0xFF
0094 BB8B OUT 0x1B,R24
(0053) DDRA=0xFF;
0095 BB8A OUT 0x1A,R24
(0054)
(0055) GICR|=0xC0; // 允许INT0、INT1中断
0096 B78B IN R24,0x3B
0097 6C80 ORI R24,0xC0
0098 BF8B OUT 0x3B,R24
(0056) MCUCR=0x0A; // INT0、INT1下降沿触发
0099 E08A LDI R24,0xA
009A BF85 OUT 0x35,R24
(0057) GIFR=0xC0; // 清除INT0、INT1中断标志位
009B EC80 LDI R24,0xC0
009C BF8A OUT 0x3A,R24
(0058)
(0059) counter = 0; // 计数单元初始化为0
009D 2422 CLR R2
009E 92200060 STS _counter,R2
00A0 C00B RJMP 0x00AC
(0060)
(0061) //#asm("sei") // 全局中断允许
(0062)
(0063)
(0064) while (1)
(0065) {
(0066)
(0067) PORTA = led_7[counter]; // 显示计数单元
00A1 E584 LDI R24,0x54
00A2 E090 LDI R25,0
00A3 91E00060 LDS R30,_counter
00A5 27FF CLR R31
00A6 0FE8 ADD R30,R24
00A7 1FF9 ADC R31,R25
00A8 91E4 LPM R30,0(Z)
00A9 BBEB OUT 0x1B,R30
(0068) int0_isr();
00AA DFB3 RCALL _int0_isr
(0069) int1_isr();
00AB DFC8 RCALL _int1_isr
00AC CFF4 RJMP 0x00A1
(0070) }
(0071) }
FILE: <library>
00AD 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -