📄 dc.lis
字号:
.module dc.c
.area text(rom, con, rel)
0000 .dbfile F:\单片机教学\调试程序\dcmotor\dc.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 9
0000 ; //ICC-AVR application builder : 2005-3-31 上午 09:37:18
0000 ; // Target : M8
0000 ; // Crystal: 11.059Mhz
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 10
0000 ; PORTB = 0xFF;
0000 8FEF ldi R24,255
0002 88BB out 0x18,R24
0004 .dbline 11
0004 ; DDRB = 0x03;
0004 83E0 ldi R24,3
0006 87BB out 0x17,R24
0008 .dbline 12
0008 ; PORTC = 0x7F; //m103 output only
0008 8FE7 ldi R24,127
000A 85BB out 0x15,R24
000C .dbline 13
000C ; DDRC = 0x00;
000C 2224 clr R2
000E 24BA out 0x14,R2
0010 .dbline 14
0010 ; PORTD = 0xFF;
0010 8FEF ldi R24,255
0012 82BB out 0x12,R24
0014 .dbline 15
0014 ; DDRD = 0x00;
0014 21BA out 0x11,R2
0016 .dbline -2
0016 .dbline 16
0016 ; }
0016 L1:
0016 .dbline 0 ; func end
0016 0895 ret
0018 .dbend
0018 .dbfunc e timer1_init _timer1_init fV
.even
0018 _timer1_init::
0018 .dbline -1
0018 .dbline 23
0018 ;
0018 ; //TIMER1 initialisation - prescale:1
0018 ; // WGM: 2) PWM 9bit phz correct, TOP=0x01FF
0018 ; // desired value: 1Hz
0018 ; // actual value: 10820.938Hz (100.0%)
0018 ; void timer1_init(void)
0018 ; {
0018 .dbline 24
0018 ; TCCR1B = 0x00; //stop
0018 2224 clr R2
001A 2EBC out 0x2e,R2
001C .dbline 25
001C ; TCNT1H = 0xFE; //setup
001C 8EEF ldi R24,254
001E 8DBD out 0x2d,R24
0020 .dbline 26
0020 ; TCNT1L = 0x01;
0020 81E0 ldi R24,1
0022 8CBD out 0x2c,R24
0024 .dbline 28
0024 ;
0024 ; OCR1AH = 0x00;
0024 2BBC out 0x2b,R2
0026 .dbline 29
0026 ; OCR1AL = 0xEF;
0026 8FEE ldi R24,239
0028 8ABD out 0x2a,R24
002A .dbline 30
002A ; OCR1BH = 0x00;
002A 29BC out 0x29,R2
002C .dbline 31
002C ; OCR1BL = 0xEF;
002C 88BD out 0x28,R24
002E .dbline 33
002E ;
002E ; ICR1H = 0x01;
002E 81E0 ldi R24,1
0030 87BD out 0x27,R24
0032 .dbline 34
0032 ; ICR1L = 0xFF;
0032 8FEF ldi R24,255
0034 86BD out 0x26,R24
0036 .dbline 35
0036 ; TCCR1A = 0x82;
0036 82E8 ldi R24,130
0038 8FBD out 0x2f,R24
003A .dbline 36
003A ; TCCR1B = 0x01; //start Timer
003A 81E0 ldi R24,1
003C 8EBD out 0x2e,R24
003E .dbline -2
003E .dbline 37
003E ; }
003E L2:
003E .dbline 0 ; func end
003E 0895 ret
0040 .dbend
.area vector(rom, abs)
.org 12
000C 20C0 rjmp _timer1_compa_isr
.area text(rom, con, rel)
0040 .dbfile F:\单片机教学\调试程序\dcmotor\dc.c
0040 .dbfunc e timer1_compa_isr _timer1_compa_isr fV
.even
0040 _timer1_compa_isr::
0040 0A92 st -y,R0
0042 0FB6 in R0,0x3f
0044 0A92 st -y,R0
0046 .dbline -1
0046 .dbline 41
0046 ;
0046 ; #pragma interrupt_handler timer1_compa_isr:7
0046 ; void timer1_compa_isr(void)
0046 ; {
0046 .dbline 43
0046 ; //compare occured TCNT1=OCR1A
0046 ; PORTB |=0x01;
0046 C09A sbi 0x18,0
0048 .dbline -2
0048 .dbline 44
0048 ; }
0048 L3:
0048 0990 ld R0,y+
004A 0FBE out 0x3f,R0
004C 0990 ld R0,y+
004E .dbline 0 ; func end
004E 1895 reti
0050 .dbend
.area vector(rom, abs)
.org 16
0010 28C0 rjmp _timer1_ovf_isr
.area text(rom, con, rel)
0050 .dbfile F:\单片机教学\调试程序\dcmotor\dc.c
0050 .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
0050 _timer1_ovf_isr::
0050 0A92 st -y,R0
0052 0FB6 in R0,0x3f
0054 0A92 st -y,R0
0056 .dbline -1
0056 .dbline 48
0056 ;
0056 ; #pragma interrupt_handler timer1_ovf_isr:9
0056 ; void timer1_ovf_isr(void)
0056 ; {
0056 .dbline 49
0056 ; PORTB &=~0x01;
0056 C098 cbi 0x18,0
0058 .dbline -2
0058 .dbline 50
0058 ; }
0058 L4:
0058 0990 ld R0,y+
005A 0FBE out 0x3f,R0
005C 0990 ld R0,y+
005E .dbline 0 ; func end
005E 1895 reti
0060 .dbend
0060 .dbfunc e init_devices _init_devices fV
.even
0060 _init_devices::
0060 .dbline -1
0060 .dbline 54
0060 ;
0060 ; //call this routine to initialise all peripherals
0060 ; void init_devices(void)
0060 ; {
0060 .dbline 56
0060 ; //stop errant interrupts until set up
0060 ; CLI(); //disable all interrupts
0060 F894 cli
0062 .dbline 57
0062 ; port_init();
0062 CEDF rcall _port_init
0064 .dbline 58
0064 ; timer1_init();
0064 D9DF rcall _timer1_init
0066 .dbline 60
0066 ;
0066 ; MCUCR = 0x00;
0066 2224 clr R2
0068 25BE out 0x35,R2
006A .dbline 61
006A ; GICR = 0x00;
006A 2BBE out 0x3b,R2
006C .dbline 62
006C ; TIMSK = 0x14; //timer interrupt sources
006C 84E1 ldi R24,20
006E 89BF out 0x39,R24
0070 .dbline 63
0070 ; SEI(); //re-enable interrupts
0070 7894 sei
0072 .dbline -2
0072 .dbline 65
0072 ; //all peripherals are now initialised
0072 ; }
0072 L5:
0072 .dbline 0 ; func end
0072 0895 ret
0074 .dbend
0074 .dbfunc e main _main fV
.even
0074 _main::
0074 .dbline -1
0074 .dbline 69
0074 ;
0074 ; //
0074 ; void main(void)
0074 ; {
0074 .dbline 70
0074 ; init_devices();
0074 F5DF rcall _init_devices
0076 L7:
0076 .dbline 72
0076 L8:
0076 .dbline 72
0076 FFCF rjmp L7
0078 X0:
0078 .dbline -2
0078 .dbline 73
0078 ; //insert your functional code here...
0078 ; while(1);
0078 ; }
0078 L6:
0078 .dbline 0 ; func end
0078 0895 ret
007A .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -