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

📄 1.lst

📁 avr atmega48的pwm输出
💻 LST
字号:
__start:
__text_start:
    001A EFCF      LDI	R28,0xFF
    001B E0D2      LDI	R29,2
    001C BFCD      OUT	0x3D,R28
    001D BFDE      OUT	0x3E,R29
    001E 51C0      SUBI	R28,0x10
    001F 40D0      SBCI	R29,0
    0020 EA0A      LDI	R16,0xAA
    0021 8308      STD	Y+0,R16
    0022 2400      CLR	R0
    0023 E0E0      LDI	R30,0
    0024 E0F1      LDI	R31,1
    0025 E011      LDI	R17,1
    0026 30E0      CPI	R30,0
    0027 07F1      CPC	R31,R17
    0028 F011      BEQ	0x002B
    0029 9201      ST	R0,Z+
    002A CFFB      RJMP	0x0026
    002B 8300      STD	Z+0,R16
    002C E3E4      LDI	R30,0x34
    002D E0F0      LDI	R31,0
    002E E0A0      LDI	R26,0
    002F E0B1      LDI	R27,1
    0030 E010      LDI	R17,0
    0031 33E4      CPI	R30,0x34
    0032 07F1      CPC	R31,R17
    0033 F021      BEQ	0x0038
    0034 95C8      LPM
    0035 9631      ADIW	R30,1
    0036 920D      ST	R0,X+
    0037 CFF9      RJMP	0x0031
    0038 D028      RCALL	_main
_exit:
    0039 CFFF      RJMP	_exit
FILE: C:\DOCUME~1\A1\桌面\pwm\成功\1.c
(0001) #include <iom48v.h>
(0002) #include <macros.h>
(0003) 
(0004) void init_timer1()
(0005) {//OCR1AH=0x00;//设定pwm的值约为0.8s
(0006)  //OCR1AL=0x90;
(0007)  OCR1A=23;
_init_timer1:
    003A E187      LDI	R24,0x17
    003B E090      LDI	R25,0
    003C 93900089  STS	0x89,R25
    003E 93800088  STS	0x88,R24
(0008)  TCCR1B = 0x00; //stop
    0040 2422      CLR	R2
    0041 92200081  STS	0x81,R2
(0009)  //TCCR1A=0x82;
(0010)  TCCR1A=0x82;
    0043 E882      LDI	R24,0x82
    0044 93800080  STS	0x80,R24
(0011)  TCCR1B=0x1A;
    0046 E18A      LDI	R24,0x1A
    0047 93800081  STS	0x81,R24
(0012)  /*8分频,WGM14  快速PWM模式, OC1A正向PWM输出,TOP=ICR1*/
(0013)  ICR1=30;//设定TOP值,设置频率30赫兹
    0049 E18E      LDI	R24,0x1E
    004A 93900087  STS	0x87,R25
    004C 93800086  STS	0x86,R24
    004E 9508      RET
_timer1_capt_isr:
    004F 938A      ST	R24,-Y
    0050 B78F      IN	R24,0x3F
    0051 938A      ST	R24,-Y
(0014)  
(0015) }
(0016) #pragma interrupt_handler timer1_capt_isr:11
(0017) void timer1_capt_isr(void)
(0018) {
(0019)  //timer 1 input capture event, read (int)value in ICR1 using;
(0020)  //TCNT1=0;
(0021)  DDRB=0x02;
    0052 E082      LDI	R24,2
    0053 B984      OUT	0x04,R24
    0054 9189      LD	R24,Y+
    0055 BF8F      OUT	0x3F,R24
    0056 9189      LD	R24,Y+
    0057 9518      RETI
_timer1_compa_isr:
    0058 938A      ST	R24,-Y
    0059 B78F      IN	R24,0x3F
    005A 938A      ST	R24,-Y
(0022) }
(0023) #pragma interrupt_handler timer1_compa_isr:12
(0024) void timer1_compa_isr(void)
(0025) {
(0026)  //compare occured TCNT1=OCR1A
(0027)   DDRB=0x02;
    005B E082      LDI	R24,2
    005C B984      OUT	0x04,R24
    005D 9189      LD	R24,Y+
    005E BF8F      OUT	0x3F,R24
    005F 9189      LD	R24,Y+
    0060 9518      RETI
(0028) }
(0029) 
(0030) 
(0031) void main()
(0032) {
(0033)  CLI();
_main:
    0061 94F8      BCLR	7
(0034)  //init_port();
(0035)  PORTB = 0x02;
    0062 E082      LDI	R24,2
    0063 B985      OUT	0x05,R24
(0036)  DDRB  = 0x02;
    0064 B984      OUT	0x04,R24
(0037)  PORTC = 0x00; 
    0065 2422      CLR	R2
    0066 B828      OUT	0x08,R2
(0038)  DDRC  = 0x00;
    0067 B827      OUT	0x07,R2
(0039)  PORTD = 0x00;
    0068 B82B      OUT	0x0B,R2
(0040)  DDRD  = 0x00;
    0069 B82A      OUT	0x0A,R2
(0041)  init_timer1();
    006A DFCF      RCALL	_init_timer1
(0042)  MCUCR = 0x00;
    006B 2422      CLR	R2
    006C BE25      OUT	0x35,R2
(0043)  EICRA = 0x00; //extended ext ints
    006D 92200069  STS	0x69,R2
(0044)  EIMSK = 0x00;
    006F BA2D      OUT	0x1D,R2
(0045)  
(0046)  TIMSK0 = 0x00; //timer 0 interrupt sources
    0070 9220006E  STS	0x6E,R2
(0047)  TIMSK1 = 0x22; //timer 1 interrupt sources
    0072 E282      LDI	R24,0x22
    0073 9380006F  STS	0x6F,R24
(0048)  TIMSK2 = 0x00; //timer 2 interrupt sources
    0075 92200070  STS	0x70,R2
(0049)  
(0050)  PCMSK0 = 0x00; //pin change mask 0 
    0077 9220006B  STS	0x6B,R2
(0051)  PCMSK1 = 0x00; //pin change mask 1 
    0079 9220006C  STS	0x6C,R2
(0052)  PCMSK2 = 0x00; //pin change mask 2
    007B 9220006D  STS	0x6D,R2
(0053)  PCICR = 0x00; //pin change enable 
    007D 92200068  STS	0x68,R2
(0054)  PRR = 0x00; //power controller
    007F 92200064  STS	0x64,R2
(0055)  SEI();
    0081 9478      BSET	7
(0056)  while(1);
FILE: <library>
    0082 CFFF      RJMP	0x0082
    0083 9508      RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -