?? test.lst
字號:
__start:
__text_start:
002B E5CF LDI R28,0x5F
002C E0D4 LDI R29,4
002D BFCD OUT 0x3D,R28
002E BFDE OUT 0x3E,R29
002F 51C0 SUBI R28,0x10
0030 40D0 SBCI R29,0
0031 EA0A LDI R16,0xAA
0032 8308 STD Y+0,R16
0033 2400 CLR R0
0034 E6E1 LDI R30,0x61
0035 E0F0 LDI R31,0
0036 E010 LDI R17,0
0037 36E1 CPI R30,0x61
0038 07F1 CPC R31,R17
0039 F011 BEQ 0x003C
003A 9201 ST R0,Z+
003B CFFB RJMP 0x0037
003C 8300 STD Z+0,R16
003D E5E4 LDI R30,0x54
003E E0F0 LDI R31,0
003F E6A0 LDI R26,0x60
0040 E0B0 LDI R27,0
0041 E010 LDI R17,0
0042 35E5 CPI R30,0x55
0043 07F1 CPC R31,R17
0044 F021 BEQ 0x0049
0045 95C8 LPM
0046 9631 ADIW R30,1
0047 920D ST R0,X+
0048 CFF9 RJMP 0x0042
0049 940E0092 CALL _main
_exit:
004B CFFF RJMP _exit
FILE: F:\工程文件\AVR光盤\例程\m16\步進測試\test.c
(0001) //ICC-AVR application builder : 2007-8-2 13:09:26
(0002) // Target : M16
(0003) // Crystal: 8.0000Mhz
(0004)
(0005) #include <iom16v.h>
(0006) #include <macros.h>
(0007)
(0008) unsigned char data = 0x1;
(0009) void port_init(void)
(0010) {
(0011) PORTA = 0x00;
_port_init:
004C 2422 CLR R2
004D BA2B OUT 0x1B,R2
(0012) DDRA = 0x00;
004E BA2A OUT 0x1A,R2
(0013) PORTB = 0xFF;
004F EF8F LDI R24,0xFF
0050 BB88 OUT 0x18,R24
(0014) DDRB = 0xFF;
0051 BB87 OUT 0x17,R24
(0015) PORTC = 0x00; //m103 output only
0052 BA25 OUT 0x15,R2
(0016) DDRC = 0x00;
0053 BA24 OUT 0x14,R2
(0017) PORTD = 0x00;
0054 BA22 OUT 0x12,R2
(0018) DDRD = 0x00;
0055 BA21 OUT 0x11,R2
0056 9508 RET
(0019) }
(0020)
(0021) //TIMER1 initialize - prescale:64
(0022) // WGM: 0) Normal, TOP=0xFFFF
(0023) // desired value: 200mSec
(0024) // actual value: 200.000mSec (0.0%)
(0025) void timer1_init(void)
(0026) {
(0027) TCCR1B = 0x00; //stop
_timer1_init:
0057 2422 CLR R2
0058 BC2E OUT 0x2E,R2
(0028) TCNT1H = 0xef; //setup
0059 EE8F LDI R24,0xEF
005A BD8D OUT 0x2D,R24
(0029) TCNT1L = 0x58;
005B E588 LDI R24,0x58
005C BD8C OUT 0x2C,R24
(0030) OCR1AH = 0x61;
005D E681 LDI R24,0x61
005E BD8B OUT 0x2B,R24
(0031) OCR1AL = 0xA8;
005F EA88 LDI R24,0xA8
0060 BD8A OUT 0x2A,R24
(0032) OCR1BH = 0x61;
0061 E681 LDI R24,0x61
0062 BD89 OUT 0x29,R24
(0033) OCR1BL = 0xA8;
0063 EA88 LDI R24,0xA8
0064 BD88 OUT 0x28,R24
(0034) ICR1H = 0x61;
0065 E681 LDI R24,0x61
0066 BD87 OUT 0x27,R24
(0035) ICR1L = 0xA8;
0067 EA88 LDI R24,0xA8
0068 BD86 OUT 0x26,R24
(0036) TCCR1A = 0x00;
0069 BC2F OUT 0x2F,R2
(0037) TCCR1B = 0x03; //start Timer
006A E083 LDI R24,3
006B BD8E OUT 0x2E,R24
006C 9508 RET
_timer1_ovf_isr:
006D 922A ST R2,-Y
006E 938A ST R24,-Y
006F B62F IN R2,0x3F
0070 922A ST R2,-Y
(0038) }
(0039)
(0040) #pragma interrupt_handler timer1_ovf_isr:9
(0041) void timer1_ovf_isr(void)
(0042) {
(0043) //TIMER1 has overflowed
(0044) TCNT1H = 0xef; //reload counter high value
0071 EE8F LDI R24,0xEF
0072 BD8D OUT 0x2D,R24
(0045) TCNT1L = 0x58; //reload counter low value
0073 E588 LDI R24,0x58
0074 BD8C OUT 0x2C,R24
(0046) if(data == 0x01)
0075 91800060 LDS R24,data
0077 3081 CPI R24,1
0078 F421 BNE 0x007D
(0047) data = 0;
0079 2422 CLR R2
007A 92200060 STS data,R2
007C C003 RJMP 0x0080
(0048) else
(0049) data = 1;
007D E081 LDI R24,1
007E 93800060 STS data,R24
(0050) PORTB = data;
0080 90200060 LDS R2,data
0082 BA28 OUT 0x18,R2
0083 9029 LD R2,Y+
0084 BE2F OUT 0x3F,R2
0085 9189 LD R24,Y+
0086 9029 LD R2,Y+
0087 9518 RETI
(0051) }
(0052)
(0053) //call this routine to initialize all peripherals
(0054) void init_devices(void)
(0055) {
(0056) //stop errant interrupts until set up
(0057) CLI(); //disable all interrupts
_init_devices:
0088 94F8 BCLR 7
(0058) port_init();
0089 DFC2 RCALL _port_init
(0059) timer1_init();
008A DFCC RCALL _timer1_init
(0060)
(0061) MCUCR = 0x00;
008B 2422 CLR R2
008C BE25 OUT 0x35,R2
(0062) GICR = 0x00;
008D BE2B OUT 0x3B,R2
(0063) TIMSK = 0x04; //timer interrupt sources
008E E084 LDI R24,4
008F BF89 OUT 0x39,R24
(0064) SEI(); //re-enable interrupts
0090 9478 BSET 7
0091 9508 RET
(0065) //all peripherals are now initialized
(0066) }
(0067)
(0068) //
(0069) void main(void)
(0070) {
(0071) init_devices();
FILE: <library>
_main:
0092 DFF5 RCALL _init_devices
0093 9508 RET
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -