⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dc.lst

📁 这是关于AVR单片机学习的初步开发
💻 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 + -