📄 pwm1.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 + -