📄 dc.lst
字号:
__start:
__text_start:
0013 E5CF LDI R28,0x5F
0014 E0D4 LDI R29,4
0015 BFCD OUT 0x3D,R28
0016 BFDE OUT 0x3E,R29
0017 51C0 SUBI R28,0x10
0018 40D0 SBCI R29,0
0019 EA0A LDI R16,0xAA
001A 8308 STD Y+0,R16
001B 2400 CLR R0
001C E6E0 LDI R30,0x60
001D E0F0 LDI R31,0
001E E010 LDI R17,0
001F 36E0 CPI R30,0x60
0020 07F1 CPC R31,R17
0021 F011 BEQ 0x0024
0022 9201 ST R0,Z+
0023 CFFB RJMP 0x001F
0024 8300 STD Z+0,R16
0025 E2E6 LDI R30,0x26
0026 E0F0 LDI R31,0
0027 E6A0 LDI R26,0x60
0028 E0B0 LDI R27,0
0029 E010 LDI R17,0
002A 32E6 CPI R30,0x26
002B 07F1 CPC R31,R17
002C F021 BEQ 0x0031
002D 95C8 LPM
002E 9631 ADIW R30,1
002F 920D ST R0,X+
0030 CFF9 RJMP 0x002A
0031 D03B RCALL _main
_exit:
0032 CFFF RJMP _exit
FILE: F:\单片机教学\调试程序\dcmotor\dc.c
(0001) //ICC-AVR application builder : 2005-3-31 上午 09:37:18
(0002) // Target : M8
(0003) // Crystal: 11.059Mhz
(0004)
(0005) #include <iom8v.h>
(0006) #include <macros.h>
(0007)
(0008) void port_init(void)
(0009) {
(0010) PORTB = 0xFF;
_port_init:
0033 EF8F LDI R24,0xFF
0034 BB88 OUT 0x18,R24
(0011) DDRB = 0x03;
0035 E083 LDI R24,3
0036 BB87 OUT 0x17,R24
(0012) PORTC = 0x7F; //m103 output only
0037 E78F LDI R24,0x7F
0038 BB85 OUT 0x15,R24
(0013) DDRC = 0x00;
0039 2422 CLR R2
003A BA24 OUT 0x14,R2
(0014) PORTD = 0xFF;
003B EF8F LDI R24,0xFF
003C BB82 OUT 0x12,R24
(0015) DDRD = 0x00;
003D BA21 OUT 0x11,R2
(0016) }
003E 9508 RET
(0017)
(0018) //TIMER1 initialisation - prescale:1
(0019) // WGM: 2) PWM 9bit phz correct, TOP=0x01FF
(0020) // desired value: 1Hz
(0021) // actual value: 10820.938Hz (100.0%)
(0022) void timer1_init(void)
(0023) {
(0024) TCCR1B = 0x00; //stop
_timer1_init:
003F 2422 CLR R2
0040 BC2E OUT 0x2E,R2
(0025) TCNT1H = 0xFE; //setup
0041 EF8E LDI R24,0xFE
0042 BD8D OUT 0x2D,R24
(0026) TCNT1L = 0x01;
0043 E081 LDI R24,1
0044 BD8C OUT 0x2C,R24
(0027)
(0028) OCR1AH = 0x00;
0045 BC2B OUT 0x2B,R2
(0029) OCR1AL = 0xEF;
0046 EE8F LDI R24,0xEF
0047 BD8A OUT 0x2A,R24
(0030) OCR1BH = 0x00;
0048 BC29 OUT 0x29,R2
(0031) OCR1BL = 0xEF;
0049 BD88 OUT 0x28,R24
(0032)
(0033) ICR1H = 0x01;
004A E081 LDI R24,1
004B BD87 OUT 0x27,R24
(0034) ICR1L = 0xFF;
004C EF8F LDI R24,0xFF
004D BD86 OUT 0x26,R24
(0035) TCCR1A = 0x82;
004E E882 LDI R24,0x82
004F BD8F OUT 0x2F,R24
(0036) TCCR1B = 0x01; //start Timer
0050 E081 LDI R24,1
0051 BD8E OUT 0x2E,R24
(0037) }
0052 9508 RET
_timer1_compa_isr:
0053 920A ST R0,-Y
0054 B60F IN R0,0x3F
0055 920A ST R0,-Y
(0038)
(0039) #pragma interrupt_handler timer1_compa_isr:7
(0040) void timer1_compa_isr(void)
(0041) {
(0042) //compare occured TCNT1=OCR1A
(0043) PORTB |=0x01;
0056 9AC0 SBI 0x18,0
(0044) }
0057 9009 LD R0,Y+
0058 BE0F OUT 0x3F,R0
0059 9009 LD R0,Y+
005A 9518 RETI
_timer1_ovf_isr:
005B 920A ST R0,-Y
005C B60F IN R0,0x3F
005D 920A ST R0,-Y
(0045)
(0046) #pragma interrupt_handler timer1_ovf_isr:9
(0047) void timer1_ovf_isr(void)
(0048) {
(0049) PORTB &=~0x01;
005E 98C0 CBI 0x18,0
(0050) }
005F 9009 LD R0,Y+
0060 BE0F OUT 0x3F,R0
0061 9009 LD R0,Y+
0062 9518 RETI
(0051)
(0052) //call this routine to initialise all peripherals
(0053) void init_devices(void)
(0054) {
(0055) //stop errant interrupts until set up
(0056) CLI(); //disable all interrupts
_init_devices:
0063 94F8 BCLR 7
(0057) port_init();
0064 DFCE RCALL _port_init
(0058) timer1_init();
0065 DFD9 RCALL _timer1_init
(0059)
(0060) MCUCR = 0x00;
0066 2422 CLR R2
0067 BE25 OUT 0x35,R2
(0061) GICR = 0x00;
0068 BE2B OUT 0x3B,R2
(0062) TIMSK = 0x14; //timer interrupt sources
0069 E184 LDI R24,0x14
006A BF89 OUT 0x39,R24
(0063) SEI(); //re-enable interrupts
006B 9478 BSET 7
(0064) //all peripherals are now initialised
(0065) }
006C 9508 RET
(0066)
(0067) //
(0068) void main(void)
(0069) {
(0070) init_devices();
_main:
006D DFF5 RCALL _init_devices
(0071) //insert your functional code here...
(0072) while(1);
006E CFFF RJMP 0x006E
(0073) }
FILE: <library>
006F 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -