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

📄 pwm1.lst

📁 用Attiny24的T1定时器产生10位PWM波形
💻 LST
字号:
__text_start:
__start:
      72 EFCF      LDI	R28,0xFF
      73 E2D1      LDI	R29,0x21
      74 BFCD      OUT	0x3D,R28
      75 BFDE      OUT	0x3E,R29
      76 51CE      SUBI	R28,0x1E
      77 40D0      SBCI	R29,0
      78 EA0A      LDI	R16,0xAA
      79 8308      STD	Y+0,R16
      7A 2400      CLR	R0
      7B E0E0      LDI	R30,0
      7C E0F2      LDI	R31,2
      7D E012      LDI	R17,2
      7E 30E4      CPI	R30,4
      7F 07F1      CPC	R31,R17
      80 F011      BEQ	0x0083
      81 9201      ST	R0,Z+
      82 CFFB      RJMP	0x007E
      83 8300      STD	Z+0,R16
      84 EEE4      LDI	R30,0xE4
      85 E0F0      LDI	R31,0
      86 E0A0      LDI	R26,0
      87 E0B2      LDI	R27,2
      88 E010      LDI	R17,0
      89 E000      LDI	R16,0
      8A BF0B      OUT	0x3B,R16
      8B 3EE4      CPI	R30,0xE4
      8C 07F1      CPC	R31,R17
      8D F021      BEQ	0x0092
      8E 95C8      LPM
      8F 9631      ADIW	R30,1
      90 920D      ST	R0,X+
      91 CFF9      RJMP	0x008B
      92 940E 0095 CALL	_main
_exit:
      94 CFFF      RJMP	_exit
FILE: F:\Programme\软件备份\PWM1\main.c
(0001) /*--------------------------------------------------------
(0002)    Atiny24-PWM:  此版本使用T1的两路PWM输出
(0003)    PWM mode:  
(0004)      TCCR0A:  COM0A1-COM0A0-COM0B1-COM0B0 - - WGM01-WGM00 
(0005) 	 TCCR0B:  FOC0A-FOC0B - - WGM02-CS02-CS01-CS00
(0006) 	 TCCR1A:  COM1A1-COM1A0-COM1B1-COM1B0 - - WGM11-WGM10
(0007)      TCCR1B:  ICNC1-ICES1 - WGM13-WGM12-CS12-CS11-CS10                          
(0008) ---------------------------------------------------------*/
(0009) #include "iot24v.h"
(0010) #include "macros.h"
(0011) #include "selffile.h"
(0012) 
(0013) unsigned int OCR1A_temp,OCR1B_temp;
(0014) /*----------------------------------------
(0015)   主程序
(0016) ----------------------------------------*/
(0017) void  main(void)
(0018) {
(0019)     NOP();
_main:
      95 0000      NOP
(0020)     CLI();
      96 94F8      BCLR	7
(0021) 	//WTCHDOG_init();
(0022) 	OCR1A_temp=0;
      97 2422      CLR	R2
      98 2433      CLR	R3
      99 9230 0203 STS	OCR1A_temp+1,R3
      9B 9220 0202 STS	OCR1A_temp,R2
(0023) 	OCR1B_temp=0;
      9D 9230 0201 STS	OCR1B_temp+1,R3
      9F 9220 0200 STS	OCR1B_temp,R2
(0024) 	
(0025)     MCU_init();
      A1 D014      RCALL	_MCU_init
(0026) 	SEI();
      A2 9478      BSET	7
(0027) 	while(1)
      A3 CFFF      RJMP	0x00A3
      A4 9508      RET
(0028) 	;
(0029) 	/*{
(0030) 	   Delay_nms(200);
(0031) 	   OCR1A_temp+=2;
(0032) 	   OCR1B_temp+=4;
(0033) 	   if(OCR1A_temp>=0x3ff)
(0034) 	      OCR1A_temp=0;
(0035) 	   if(OCR1B_temp>=0x3ff)
(0036) 	      OCR1B_temp=0;
(0037) 	   
(0038) 	   OCR1A=OCR1A_temp;
(0039) 	   OCR1B=OCR1B_temp;
(0040) 	}*/
(0041) }
(0042) 
(0043) /*----------------------------------------
(0044)   系统初始化
(0045) ----------------------------------------*/
(0046) void  timer1_init(void)
(0047) {
(0048) 	TCNT1H=0x00;
_timer1_init:
      A5 2422      CLR	R2
      A6 BC2D      OUT	0x2D,R2
(0049) 	TCNT1L=0x00;
      A7 BC2C      OUT	0x2C,R2
(0050) 	OCR1AH=0x01;             
      A8 E081      LDI	R24,1
      A9 BD8B      OUT	0x2B,R24
(0051) 	OCR1AL=0x99;
      AA E989      LDI	R24,0x99
      AB BD8A      OUT	0x2A,R24
(0052) 	OCR1BH=0x02;
      AC E082      LDI	R24,2
      AD BD89      OUT	0x29,R24
(0053) 	OCR1BL=0x65;
      AE E685      LDI	R24,0x65
      AF BD88      OUT	0x28,R24
(0054) 	TIMSK1=0x00;
      B0 B82C      OUT	0x0C,R2
(0055) 	TCCR1A=(1<<COM1A1)|(1<<COM1B1)|(1<<WGM10)|(1<<WGM11);    
      B1 EA83      LDI	R24,0xA3
      B2 BD8F      OUT	0x2F,R24
(0056) 	TCCR1B=(1<<CS10);        //不分频,否则波形较差
      B3 E081      LDI	R24,1
      B4 BD8E      OUT	0x2E,R24
      B5 9508      RET
(0057) }
(0058) 
(0059) void  MCU_init(void)
(0060) {
(0061)     DDRA=(1<<PA6)|(1<<PA5);
_MCU_init:
      B6 E680      LDI	R24,0x60
      B7 BB8A      OUT	0x1A,R24
(0062) 	MCUCR = 0x00;
      B8 2422      CLR	R2
      B9 BE25      OUT	0x35,R2
(0063)     GIMSK = 0x00;
      BA BE2B      OUT	0x3B,R2
(0064) 	timer1_init();
      BB DFE9      RCALL	_timer1_init
      BC 9508      RET
FILE: F:\Programme\PWM1\delay.c
(0001) #include "iot24v.h"
(0002) #include "macros.h"
(0003) 
(0004) void  delay_1ms(void)
(0005) {
(0006)     unsigned int  i;
(0007) 	for(i=1;i<1142;i++)
(0008) 	;
_Delay_1ms:
  i                    --> R16
      BD E001      LDI	R16,1
      BE E010      LDI	R17,0
      BF C002      RJMP	0x00C2
      C0 5F0F      SUBI	R16,0xFF
      C1 4F1F      SBCI	R17,0xFF
      C2 3706      CPI	R16,0x76
      C3 E0E4      LDI	R30,4
      C4 071E      CPC	R17,R30
      C5 F3D0      BCS	0x00C0
      C6 9508      RET
_Delay_nms:
  i                    --> R20
  n                    --> R10
      C7 940E 00D6 CALL	push_xgset300C
      C9 0158      MOVW	R10,R16
(0009) }
(0010) 
(0011) void  delay_nms(unsigned int  n)
(0012) {
(0013)     unsigned int i;
(0014) 	WDR();
(0015) 	for(i=0;i<n;i++)
      CA 95A8      WDR
(0016) 	   delay_1ms();
      CB 2744      CLR	R20
      CC 2755      CLR	R21
      CD C003      RJMP	0x00D1
(0017) } FILE: <library>
      CE DFEE      RCALL	_Delay_1ms
      CF 5F4F      SUBI	R20,0xFF
      D0 4F5F      SBCI	R21,0xFF
      D1 154A      CP	R20,R10
      D2 055B      CPC	R21,R11
      D3 F3D0      BCS	0x00CE
      D4 940C 00DB JMP	pop_xgset300C
push_xgset300C:
      D6 935A      ST	R21,-Y
      D7 934A      ST	R20,-Y
      D8 92BA      ST	R11,-Y
      D9 92AA      ST	R10,-Y
      DA 9508      RET
pop_xgset300C:
      DB 90A9      LD	R10,Y+
      DC 90B9      LD	R11,Y+
      DD 9149      LD	R20,Y+
      DE 9159      LD	R21,Y+
      DF 9508      RET

⌨️ 快捷键说明

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