📄 test.lis
字号:
.module test.c
.area data(ram, con, rel)
0000 _data::
0000 .blkb 1
.area idata
0000 01 .byte 1
.area data(ram, con, rel)
0001 .dbfile F:\工程文件\AVR光盘\例程\m16\步进测试\test.c
0001 .dbsym e data _data c
.area text(rom, con, rel)
0000 .dbfile F:\工程文件\AVR光盘\例程\m16\步进测试\test.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 10
0000 ; //ICC-AVR application builder : 2007-8-2 13:09:26
0000 ; // Target : M16
0000 ; // Crystal: 8.0000Mhz
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; unsigned char data = 0x1;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 11
0000 ; PORTA = 0x00;
0000 2224 clr R2
0002 2BBA out 0x1b,R2
0004 .dbline 12
0004 ; DDRA = 0x00;
0004 2ABA out 0x1a,R2
0006 .dbline 13
0006 ; PORTB = 0xFF;
0006 8FEF ldi R24,255
0008 88BB out 0x18,R24
000A .dbline 14
000A ; DDRB = 0xFF;
000A 87BB out 0x17,R24
000C .dbline 15
000C ; PORTC = 0x00; //m103 output only
000C 25BA out 0x15,R2
000E .dbline 16
000E ; DDRC = 0x00;
000E 24BA out 0x14,R2
0010 .dbline 17
0010 ; PORTD = 0x00;
0010 22BA out 0x12,R2
0012 .dbline 18
0012 ; DDRD = 0x00;
0012 21BA out 0x11,R2
0014 .dbline -2
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e timer1_init _timer1_init fV
.even
0016 _timer1_init::
0016 .dbline -1
0016 .dbline 26
0016 ; }
0016 ;
0016 ; //TIMER1 initialize - prescale:64
0016 ; // WGM: 0) Normal, TOP=0xFFFF
0016 ; // desired value: 200mSec
0016 ; // actual value: 200.000mSec (0.0%)
0016 ; void timer1_init(void)
0016 ; {
0016 .dbline 27
0016 ; TCCR1B = 0x00; //stop
0016 2224 clr R2
0018 2EBC out 0x2e,R2
001A .dbline 28
001A ; TCNT1H = 0xef; //setup
001A 8FEE ldi R24,239
001C 8DBD out 0x2d,R24
001E .dbline 29
001E ; TCNT1L = 0x58;
001E 88E5 ldi R24,88
0020 8CBD out 0x2c,R24
0022 .dbline 30
0022 ; OCR1AH = 0x61;
0022 81E6 ldi R24,97
0024 8BBD out 0x2b,R24
0026 .dbline 31
0026 ; OCR1AL = 0xA8;
0026 88EA ldi R24,168
0028 8ABD out 0x2a,R24
002A .dbline 32
002A ; OCR1BH = 0x61;
002A 81E6 ldi R24,97
002C 89BD out 0x29,R24
002E .dbline 33
002E ; OCR1BL = 0xA8;
002E 88EA ldi R24,168
0030 88BD out 0x28,R24
0032 .dbline 34
0032 ; ICR1H = 0x61;
0032 81E6 ldi R24,97
0034 87BD out 0x27,R24
0036 .dbline 35
0036 ; ICR1L = 0xA8;
0036 88EA ldi R24,168
0038 86BD out 0x26,R24
003A .dbline 36
003A ; TCCR1A = 0x00;
003A 2FBC out 0x2f,R2
003C .dbline 37
003C ; TCCR1B = 0x03; //start Timer
003C 83E0 ldi R24,3
003E 8EBD out 0x2e,R24
0040 .dbline -2
0040 L2:
0040 .dbline 0 ; func end
0040 0895 ret
0042 .dbend
.area vector(rom, abs)
.org 32
0020 0C942100 jmp _timer1_ovf_isr
.area text(rom, con, rel)
0042 .dbfile F:\工程文件\AVR光盘\例程\m16\步进测试\test.c
0042 .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
0042 _timer1_ovf_isr::
0042 2A92 st -y,R2
0044 8A93 st -y,R24
0046 2FB6 in R2,0x3f
0048 2A92 st -y,R2
004A .dbline -1
004A .dbline 42
004A ; }
004A ;
004A ; #pragma interrupt_handler timer1_ovf_isr:9
004A ; void timer1_ovf_isr(void)
004A ; {
004A .dbline 44
004A ; //TIMER1 has overflowed
004A ; TCNT1H = 0xef; //reload counter high value
004A 8FEE ldi R24,239
004C 8DBD out 0x2d,R24
004E .dbline 45
004E ; TCNT1L = 0x58; //reload counter low value
004E 88E5 ldi R24,88
0050 8CBD out 0x2c,R24
0052 .dbline 46
0052 ; if(data == 0x01)
0052 80910000 lds R24,_data
0056 8130 cpi R24,1
0058 21F4 brne L4
005A .dbline 47
005A ; data = 0;
005A 2224 clr R2
005C 20920000 sts _data,R2
0060 03C0 xjmp L5
0062 L4:
0062 .dbline 49
0062 ; else
0062 ; data = 1;
0062 81E0 ldi R24,1
0064 80930000 sts _data,R24
0068 L5:
0068 .dbline 50
0068 ; PORTB = data;
0068 20900000 lds R2,_data
006C 28BA out 0x18,R2
006E .dbline -2
006E L3:
006E 2990 ld R2,y+
0070 2FBE out 0x3f,R2
0072 8991 ld R24,y+
0074 2990 ld R2,y+
0076 .dbline 0 ; func end
0076 1895 reti
0078 .dbend
0078 .dbfunc e init_devices _init_devices fV
.even
0078 _init_devices::
0078 .dbline -1
0078 .dbline 55
0078 ; }
0078 ;
0078 ; //call this routine to initialize all peripherals
0078 ; void init_devices(void)
0078 ; {
0078 .dbline 57
0078 ; //stop errant interrupts until set up
0078 ; CLI(); //disable all interrupts
0078 F894 cli
007A .dbline 58
007A ; port_init();
007A C2DF xcall _port_init
007C .dbline 59
007C ; timer1_init();
007C CCDF xcall _timer1_init
007E .dbline 61
007E ;
007E ; MCUCR = 0x00;
007E 2224 clr R2
0080 25BE out 0x35,R2
0082 .dbline 62
0082 ; GICR = 0x00;
0082 2BBE out 0x3b,R2
0084 .dbline 63
0084 ; TIMSK = 0x04; //timer interrupt sources
0084 84E0 ldi R24,4
0086 89BF out 0x39,R24
0088 .dbline 64
0088 ; SEI(); //re-enable interrupts
0088 7894 sei
008A .dbline -2
008A L6:
008A .dbline 0 ; func end
008A 0895 ret
008C .dbend
008C .dbfunc e main _main fV
.even
008C _main::
008C .dbline -1
008C .dbline 70
008C ; //all peripherals are now initialized
008C ; }
008C ;
008C ; //
008C ; void main(void)
008C ; {
008C .dbline 71
008C ; init_devices();
008C F5DF xcall _init_devices
008E .dbline -2
008E L7:
008E .dbline 0 ; func end
008E 0895 ret
0090 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -