📄 pwm2.lst
字号:
Interrupt Vectors
00000 940C 0046 JMP __start|__text_start
Program Code (text area)
__start|__text_start:
00046 EFCF LDI R28,0xFF
00047 E1D0 LDI R29,0x10
00048 BFCD OUT 0x3D,R28
00049 BFDE OUT 0x3E,R29
0004A 51CE SUBI R28,0x1E
0004B 40D0 SBCI R29,0
0004C EA0A LDI R16,0xAA
0004D 8308 ST Y,R16
0004E 2400 CLR R0
0004F E0E0 LDI R30,0
00050 E0F1 LDI R31,1
00051 E011 LDI R17,1
00052 30E0 CPI R30,0
00053 07F1 CPC R31,R17
00054 F011 BEQ 0x0057
00055 9201 ST Z+,R0
00056 CFFB RJMP 0x0052
00057 8300 ST Z,R16
00058 E8EC LDI R30,0x8C
00059 E0F0 LDI R31,0
0005A E0A0 LDI R26,0
0005B E0B1 LDI R27,1
0005C E010 LDI R17,0
0005D E000 LDI R16,0
0005E BF0B OUT 0x3B,R16
0005F 38EC CPI R30,0x8C
00060 07F1 CPC R31,R17
00061 F021 BEQ 0x0066
00062 95C8 LPM
00063 9631 ADIW R30,1
00064 920D ST X+,R0
00065 CFF9 RJMP 0x005F
00066 940E 0069 CALL _main
_exit:
00068 CFFF RJMP _exit
FILE: E:\课件\128最小系统板\AVR程序\main.c
(0001) #include<iom128v.h>
(0002) #include"PWM.h"
(0003) void main(void)
(0004) {
(0005) PWM();
_main:
00069 940E 006D CALL _PWM
(0006) while(1);
0006B CFFF RJMP 0x006B
0006C 9508 RET
FILE: E:\课件\128最小系统板\AVR程序\pwm.c
(0001) #include<iom128v.h>
(0002) #include"PWM.h"
(0003) //#include<macros.h>
(0004) /********pwm产生函数*********/
(0005) /*-----------------------------------------
(0006) 程序名称: PWM波形产生
(0007) 程序功能: 产生1k频率,占空比可调
(0008) 注意事项:
(0009) 提示说明: 通道对应IO:PE3 PE4 PE5 PB7
(0010) 输 入: 各个通道的占空比
(0011) 返 回: 无
(0012) -----------------------------------------*/
(0013)
(0014) void PWM(void)//unsigned char ta,unsigned char tb,unsigned char tc,unsigned char td
(0015) {
(0016)
(0017) TIMSK =0x00;
_PWM:
0006D 2422 CLR R2
0006E BE27 OUT 0x37,R2
(0018) ETIMSK=0x00;
0006F 9220 007D STS 0x7D,R2
(0019)
(0020) DDRE|= 0xff;//设置为输出 38
00071 B182 IN R24,0x02
00072 6F8F ORI R24,0xFF
00073 B982 OUT 0x02,R24
(0021) TCNT3=0x0000;
00074 2433 CLR R3
00075 9230 0089 STS 0x89,R3
00077 9220 0088 STS 0x88,R2
(0022) TCCR3A=0xff;//设置波形模式 十位快速PWM
00079 EF8F LDI R24,0xFF
0007A 9380 008B STS 0x8B,R24
(0023) TCCR3B=0X0a;//以及时钟选择,8分频
0007C E08A LDI R24,0xA
0007D 9380 008A STS 0x8A,R24
(0024) OCR3A=490;//通道1的占空比
0007F EE8A LDI R24,0xEA
00080 E091 LDI R25,1
00081 9390 0087 STS 0x87,R25
00083 9380 0086 STS 0x86,R24
(0025) OCR3B=222;//通道2的占空比
00085 ED8E LDI R24,0xDE
00086 E090 LDI R25,0
00087 9390 0085 STS 0x85,R25
00089 9380 0084 STS 0x84,R24
(0026) OCR3C=400;//通道3的占空比
0008B E980 LDI R24,0x90
0008C E091 LDI R25,1
0008D 9390 0083 STS 0x83,R25
0008F 9380 0082 STS 0x82,R24
(0027)
(0028) DDRB|=0xF0;
00091 B387 IN R24,0x17
00092 6F80 ORI R24,0xF0
00093 BB87 OUT 0x17,R24
(0029) TCNT1=0x0000;
00094 BC3D OUT 0x2D,R3
00095 BC2C OUT 0x2C,R2
(0030) TCCR1A=0xFF;//设置波形模式 十位快速PWM
00096 EF8F LDI R24,0xFF
00097 BD8F OUT 0x2F,R24
(0031) TCCR1B=0X0a;//以及时钟选择,8分频
00098 E08A LDI R24,0xA
00099 BD8E OUT 0x2E,R24
(0032) OCR1A=490;//通道1的占空比
0009A EE8A LDI R24,0xEA
0009B BD9B OUT 0x2B,R25
0009C BD8A OUT 0x2A,R24
(0033) OCR1B=222;//通道2的占空比
0009D ED8E LDI R24,0xDE
0009E E090 LDI R25,0
0009F BD99 OUT 0x29,R25
000A0 BD88 OUT 0x28,R24
(0034) OCR1C=600;//(unsigned long int)(1024)*td/100;//通道4的占空比
FILE: <library>
000A1 E588 LDI R24,0x58
000A2 E092 LDI R25,2
000A3 9390 0079 STS 0x79,R25
000A5 9380 0078 STS 0x78,R24
000A7 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -